ManyCore » History » Version 8

Gabriel Winckler, 01 Jul 2013 17:07

1 1 Beraldo Leal
h1. ManyCore
2 1 Beraldo Leal
3 2 Beraldo Leal
h2. Acessando o XeonPhi
4 1 Beraldo Leal
5 1 Beraldo Leal
A XeonPhi está instalada na máquina (phi01.ncc.unesp.br), para acessar você deve ter uma conta na base LDAP do NCC.
6 1 Beraldo Leal
7 1 Beraldo Leal
<pre>
8 1 Beraldo Leal
$ ssh phi01.ncc.unesp.br
9 1 Beraldo Leal
</pre>
10 1 Beraldo Leal
11 4 Gabriel Winckler
Para garantir que um usuário/grupo utilize a XeonPhi por vez, nesta máquina encontra-se instalado o gerenciador de recursos, "SLURM":https://computing.llnl.gov/linux/slurm/slurm.html. 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:
12 1 Beraldo Leal
13 1 Beraldo Leal
<pre>
14 4 Gabriel Winckler
$ srun --pty --gres=mic bash -i
15 1 Beraldo Leal
</pre>
16 1 Beraldo Leal
17 1 Beraldo Leal
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.
18 1 Beraldo Leal
19 6 Gabriel Winckler
Para executar um script não interativo, e com tempo máximo de execução de *2 horas*, execute:
20 1 Beraldo Leal
21 1 Beraldo Leal
<pre>
22 1 Beraldo Leal
$ srun --gres=mic -t 2:00:00 /home/user/script.sh
23 6 Gabriel Winckler
</pre>
24 6 Gabriel Winckler
25 8 Gabriel Winckler
Para alocar *2 placas*, use:
26 6 Gabriel Winckler
<pre>
27 7 Gabriel Winckler
$ srun --gres=mic:2 /home/user/script.sh
28 1 Beraldo Leal
</pre>
29 1 Beraldo Leal
30 1 Beraldo Leal
Para ver a fila atual, execute:
31 1 Beraldo Leal
32 1 Beraldo Leal
<pre>
33 4 Gabriel Winckler
$ squeue
34 1 Beraldo Leal
</pre>
35 1 Beraldo Leal
36 1 Beraldo Leal
Desta forma você estará na máquina que possui o XeonPhi instalado, para fazer ssh para a própria XeonPhi, execute:
37 1 Beraldo Leal
38 1 Beraldo Leal
<pre>
39 4 Gabriel Winckler
$ ssh root@$(get_mics -1)
40 1 Beraldo Leal
</pre>
41 3 Beraldo Leal
42 3 Beraldo Leal
h2. Compilação
43 3 Beraldo Leal
44 3 Beraldo Leal
No diretório _/opt/ncc_demo/_ existe o arquivo _hello-openmp.c_. Copie para o seu diretório.
45 3 Beraldo Leal
46 3 Beraldo Leal
h3. Compilação OpenMP
47 3 Beraldo Leal
48 3 Beraldo Leal
<pre>
49 3 Beraldo Leal
# compilacao
50 3 Beraldo Leal
icc -mmic -openmp hello-openmp.c -o hello-openmp
51 3 Beraldo Leal
52 3 Beraldo Leal
# copie o ambiente para o xeon phi
53 1 Beraldo Leal
/opt/ncc-demo/copy-openmp-env.sh
54 3 Beraldo Leal
</pre>
55 3 Beraldo Leal
56 3 Beraldo Leal
h3. Execução interativa
57 3 Beraldo Leal
58 1 Beraldo Leal
<pre>
59 3 Beraldo Leal
# aloque o recurso
60 4 Gabriel Winckler
srun --pty --gres=mic bash -i
61 3 Beraldo Leal
62 3 Beraldo Leal
# copie o seu executável
63 3 Beraldo Leal
scp hello-openmp root@mic0:
64 3 Beraldo Leal
65 3 Beraldo Leal
# acesse o xeon phi
66 4 Gabriel Winckler
ssh root@$(get_mics -1)
67 3 Beraldo Leal
68 3 Beraldo Leal
# execute sua aplicação
69 1 Beraldo Leal
./hello-openmp
70 3 Beraldo Leal
71 1 Beraldo Leal
# termine a sessão (2x)
72 1 Beraldo Leal
exit
73 1 Beraldo Leal
exit
74 1 Beraldo Leal
</pre>
75 1 Beraldo Leal
76 1 Beraldo Leal
h3. Execução em fila
77 1 Beraldo Leal
78 4 Gabriel Winckler
Alternativamente, para enviar o processo como job batch, prepare um arquivo (hello-openmp.sub):
79 3 Beraldo Leal
<pre>
80 3 Beraldo Leal
#!/bin/bash
81 4 Gabriel Winckler
MIC=$(get_mics -1)
82 4 Gabriel Winckler
scp hello-openmp root@$MIC:
83 4 Gabriel Winckler
ssh root@$MIC /root/hello-openmp
84 4 Gabriel Winckler
</pre>
85 4 Gabriel Winckler
86 4 Gabriel Winckler
e envie para a fila
87 4 Gabriel Winckler
<pre>
88 5 Gabriel Winckler
chmod +x hello-openmp.sub
89 4 Gabriel Winckler
srun --gres=mic hello-openmp.sub
90 4 Gabriel Winckler
</pre>