IBM iDataPlex/GPU
O sistema IBM GPU instalado no CENAPAD-SP é composto por 6 nodes. Cada node possui 2 CPU´s (8 cores e 16 Threads) Intel Xeon X5570 de 2,93GHz, 24 GB de memória RAM e 2 placas Nvidia Tesla M2050 (cada placa possui 448 núcleos CUDA e 3 GB de memória RAM). A capacidade de processamento teórica de cada placa Nvidia Tesla M2050 é de 515 Gflops em dupla precisão e de 1.03 Tflops em precisão simples no formato de ponto flutuante. No total são 48 cores / 96 threads, 144 GB de memória RAM e 12 placas Nvidia Tesla M2050. Para utilizar este recurso, observe as seguintes informações:
IBM GPU
O sistema IBM GPU instalado no CENAPAD-SP tem 6 nós, cada um com a seguinte configuração:
- 2 processadores Intel Xeon Processor X5570 de 2.93 GHz - 8 cores / 16 threads
- 24GB de memória RAM
- 2 placas gráficas Nvidia Tesla M2050
Sistema Operacional
LINUX CentOS
Compiladores e Bibliotecas
- Intel Fortran
- Intel C
- Intel MKL (Math Kernel Library) 2013.1.117
- GCC (4.8.5, 8.3.0, 9.2.0)
- CUDA 8.0, 9.0, 9.1
- OpenMPI (1.10.2)
Importante:
- Para utilização dos compiladores e bibliotecas da Intel, devem ser executados os comandos abaixo:
- source /usr/local/intel2013/composer_xe_2013.1.117/bin/compilervars.sh intel64
- source /usr/local/intel2013/composer_xe_2013.1.117/mkl/bin/mklvars.sh intel64
- source /usr/local/intel2013/impi/4.1.0.024/intel64/bin/mpivars.sh intel64
- Para utilização dos compiladores e bibliotecas GCC, devem ser executados os comandos abaixo:
Compilador | Comando |
---|---|
GCC 4.8.5 | Essa é a versão padrão do Sistema Operacional, logo, não será necessário realizar nenhum procedimento adicional. |
GCC 8.3.0 | source /usr/local/gcc/gcc830vars.sh |
GCC 9.2.0 | source /usr/local/gcc/gcc920vars.sh |
- Para utilização dos compiladores e bibliotecas Open MPI, devem ser executados os comandos abaixo:
Ao usar o Open MPI 1.10.2 compilado com gcc 4.8.5 todas as variáveis do gcc 4.8.5 serão configuradas. O mesmo ocorre com o Open MPI 1.10.2 compilado com gcc 8.3.0 e assim por diante.
Usuários
A administração deste sistema está integrada ao ambiente do CENAPAD-SP: são mantidos os mesmos projetos e usuários do ambiente do CENAPAD-SP, com a mesma senha.
Acesso
O acesso ao sistema IBM GPU deve ser feito através de um nó definido como front-end, usando o comando ssh. Para isto, uma vez conectado ao ambiente do CENAPAD-SP, o usuário deverá executar: ssh gpu (utilizando o mesmo usuário e a mesma senha do CENAPAD-SP)
Diretórios HOME
Os diretórios home dos usuários do CENAPAD-SP não são compartilhados entre todos os ambientes existentes (IBM P750 e SGI Ice) devido à diferença de arquiteturas entre estes ambientes instalados no CENAPAD-SP, composto por máquinas IBM com processadores da família Power e sistema operacional AIX e máquinas SGI com processadores Intel Xeon e sistema operacional Linux. O padrão para a identificação do diretório home de um determinado usuário nas máquinas deste sistema é:
- /home/gpu/proj/projeto/login
- /home/gpu/teste/login
(onde login é a identificação da conta do usuário e projeto é a identificação do projeto a que a conta está vinculada); Observação: Atualmente, ainda não é feito backup de qualquer arquivo deste ambiente, portanto os usuários serão temporariamente responsáveis pela manutenção de seus arquivos.
Área de Scratch
Existe nesse ambiente uma área scratch para gravação dos arquivos temporários gerados durante o processamento dos jobs. Essa área deve ser referenciada como : /work.
Espaço em disco
Além do filesystem para o diretório home dos usuários, o filesystem /usr/local também é compartilhado por todo o ambiente IBM GPU. O filesystem:
- /usr/local, são instalados softwares.
As políticas de uso podem ser consultadas em www.cenapad.unicamp.br/politicas/espaco.shtml
Contabilização de uso
A contabilização de uso deste sistema é feita de forma integrada à contabilização de uso de recursos do ambiente CENAPAD-SP descritas em www.cenapad.unicamp.br/portal-do-usuario/contabilizacao
Execução de jobs
Os nós não permitem acesso interativo, pois são reservados para o processamento batch. O sistema gerenciador de filas, responsável pela execução de jobs, é o PBS. Alguns dos principais comandos do PBS são:
- qsub - para submissão de jobs
- qalter - para modificar jobs pendente
- qmove - para mover jobs
- qdel - para remoção de jobs das filas
- qhold - para alterar o estado de jobs para hold
- qorder - para reordenar jobs
- qrls - para liberar jobs em estado hold
- qselect- para selecionar jobs
- qstat - exibe o estado de filas e jobs
- tracejob - para obter o histórico de jobs
(As informações sobre estes comandos também estão disponíveis em suas manpages)
Comando | Descrição |
---|---|
qsub jobscript | submit jobscript to PBS |
qsub -I | submit an interactive-batch job |
qsub -q queue | submit job directly to specified queue |
qstat | list information about queues and jobs |
qstat -q | list all queues on system |
qstat -Q | list queue limits for all queues |
qstat -Qf queue | list all information known about specified queue |
qstat -B | list summary information about the PBS server |
qdel jobid | delete job jobid |
qalter jobid | modify the attributes of the job or jobs specified by jobid |
pbsnodes -a | indicates which nodes are currently up and some node characteristics. |
pbsnodes -l | indicates which nodes are currently offline |
Para submeter um job:
- criar um script, utilizando qualquer shell, incluindo os comandos que criam um "roteiro" a ser executado
- executar o comando qsub
Diretivas mais comuns:
- #PBS -S /bin/sh
- #PBS -m abe
- #PBS -q gpu
- #PBS -N testjob
- #PBS -V
- #PBS -o jobout
- #PBS -e joberr
- #!/bin/sh
- cd $PBS_O_WORKDIR
- -S /bin/sh - indica qual shell utilizar
- -m abe - indica para enviar mail quando job a(bort) b(egin) e(nd)
- -q gpu - indica fila
- -N testjob - nome a ser associado ao job (testjob)
- -V - utilizar variáveis de ambiente (environment) setadas
- -o jobout - standard output
- -e joberr - standard error
- cd $PBS_O_WORKDIR - indica para que seja considerado o diretório a partir de onde o job está sendo submetido
Onde:
Filas
As filas, e restrições, definidas no PBS são:
- O número máximo de jobs em execução simultânea na fila gpu para um mesmo usuário é 2.
- O número máximo de jobs aguardando execução na fila gpu para um mesmo usuário (estados Queued ou Hold) é 3.
- O número máximo de jobs em execução simultânea na fila matlab para um mesmo usuário é 1.
- O número máximo de jobs aguardando execução na fila matlab para um mesmo usuário (estados Queued ou Hold) é 1.
- O número máximo de jobs em execução simultânea na fila serial para um mesmo usuário é 1.
- O número máximo de jobs aguardando execução na fila serial para um mesmo usuário (estados Queued ou Hold) é 3.
Submissão de jobs
Para submeter jobs nas filas é necessário criar um script de submissão que pode ser ligeiramente diferente dependendo do software que estiver utilizando. Criamos exemplos de scripts de submissão para os softwares instalados no ambiente IBM GPU que podem ser acessados através desse link: http://cenapad.unicamp.br/parque-computacional/software/ambiente-ibm-gpu/
Exemplo genérico de script de submissão de jobs para o ambiente IBM GPU:
#!/bin/bash
### Nome da fila de execucao ###
#PBS -q gpu
### Nome do job ###
#PBS -N testeGPU
### Nome do arquivo de saida ###
#PBS -o OUTPUT
### Nome do arquivo de erros ###
#PBS -e ERRO
### NAO ALTERE A LINHA ABAIXO, pois o scheduler nao deixara seu job ser enfileirado ###
#PBS -l nodes=1:ppn=16
cd $PBS_O_WORKDIR
echo "-----------------------------------------"
echo "Inicio do job:" `date`
### Variaveis de ambiente necessarias ###
### Veja opções em:
Compiladores e Bibliotecas
### Programa ###
programa_executavel