ManyCore

Acessando o XeonPhi

A XeonPhi está instalada na máquina (phi01.ncc.unesp.br), para acessar você deve ter uma conta na base LDAP do NCC.

$ ssh phi01.ncc.unesp.br

Para garantir que um usuário/grupo utilize a XeonPhi por vez, nesta máquina encontra-se instalado o gerenciador de recursos, SLURM. Então toda vez que quiser utilizar o XeonPhi, você deve entrar na fila de espera para utilização. Utilize o comando abaixo para obter uma shell interativa:

$ srun --pty --gres=mic bash -i

Ao sair da shell automaticamente você liberará o recurso para outros utilizarem. Sua shell será finalizada após 1 hora, você pode alterar esse valor com o parametro walltime para o tempo máximo de utilização de 24 horas.

Para executar um script não interativo, e com tempo máximo de execução de 2 horas, execute:

$ srun --gres=mic -t 2:00:00 /home/user/script.sh

Para alocar 2 placas, use:

$ srun --gres=mic:2 /home/user/script.sh

Para ver a fila atual, execute:

$ squeue

Desta forma você estará na máquina que possui o XeonPhi instalado, para fazer ssh para a própria XeonPhi, execute:

$ ssh $(get_mics -1)

Compilação

No diretório /opt/ncc_demo/ existe o arquivo hello-openmp.c. Copie para o seu diretório.

Compilação OpenMP

# compilacao
icc -mmic -openmp hello-openmp.c -o hello-openmp

# copie o ambiente para o xeon phi
/opt/ncc-demo/copy-openmp-env.sh

Execução interativa

# aloque o recurso
srun --pty --gres=mic bash -i

MIC=$(get_mics -1)

# copie o seu executável
scp hello-openmp $MIC:

# acesse o xeon phi
ssh $MIC

# execute sua aplicação
./hello-openmp

# termine a sessão (2x)
exit # ssh da MIC
exit # srun iterativo

Execução em fila

Alternativamente, para enviar o processo como job batch, prepare um arquivo (hello-openmp.sh):

#!/bin/bash
MIC=$(get_mics -1)
scp hello-openmp $MIC:
ssh $MIC ./hello-openmp

e envie para a fila

chmod +x hello-openmp.sh
srun --gres=mic hello-openmp.sh

MPI

Exemplo de compilação e execução MPI:

. /opt/intel/impi/4.1.0/bin64/mpivars.sh

cp /opt/ncc-demo/hello-mpi.c
mpiicc -mmic hello-mpi.c -o hello-mpi

/opt/ncc-demo/copy-impi-env.sh

srun --pty --gres=mic bash -i
MIC=$(get_mics -1)
scp hello-mpi $MIC:
ssh $MIC
mpiexec -n 240 ./hello-openmp
exit # ssh da MIC
exit # srun iterativo

Modo hybrid

Esse tutorial apresenta a utilização de uma forma mais sofisticada, usando o modo hybrid, com o processador e mais de uma mic rodando a mesma simulação.

http://software.intel.com/en-us/articles/using-the-intel-mpi-library-on-intel-xeon-phi-coprocessor-systems

Nesse caso é muito importante observar a assimetria de processamento e evitar barreiras de sincronização.

HPL

Para a realização de benchmark foi usado o binário fornecido no pacote da Intel, disponível em

/opt/intel/composerxe/mkl/benchmarks/mp_linpack/bin_intel/mic/