Utilizando o CACAU

 

Após cadastrar seu projeto, seu usuário e receber seu login e senha, faça login no CACAU com o comando "ssh -p 2222 O endereço de e-mail address está sendo protegido de spambots. Você precisa ativar o JavaScript enabled para vê-lo. " substituindo "user" pelo seu login. Se estiver usando Microsoft Windows use o programa Mobaxterm disponível em http://mobaxterm.mobatek.net/. Para gerenciar seus arquivos e pastas de maneira gráfica use o programa Filezilla disponível em https://filezilla-project.org/, inserindo "acesso.nbcgib.uesc.br" no campo "host" e "2222" no campo "porta".

Para compilar código-fonte com os compiladores da Intel:

Digite "source /opt/intel/Compiler/11.1/072/bin/iccvars.sh intel64" para código em C ou C++ e use os compiladores "icc" ou "icpc".
Digite "source /opt/intel/Compiler/11.1/072/bin/ifortvars.sh intel64" para código em Fortran e use o compilador "ifort".
Mais Informações em http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor.
ATENÇÃO: Carregando as variáveis de ambiente acima, são carregados também os caminhos da MKL (Math Kernel Library) da Intel.

Caminhos da MKL:

/opt/intel/Compiler/11.1/072/mkl/                      (diretório base)
/opt/intel/Compiler/11.1/072/mkl/lib/em64t/    (bibliotecas)
/opt/intel/Compiler/11.1/072/mkl/include/        (includes)

Para compilar código-fonte com MPI:

Digite "source /opt/intel/impi/4.0.3.008/bin64/mpivars.sh" para Intel MPI.
Digite "source /home_nfs/local/mpi/openmpi-1.8.5/mpivars.sh" para OpenMPI.
Digite "source /opt/mpi/bullxmpi/1.2.4.1/bin/mpivars.sh" para Bull MPI.

Para utilizar Infiniband ou Gigabit Ethernet:

O uso de Infiniband é padrão para OpenMPI e Bull MPI. Para Intel MPI digite "export I_MPI_FABRICS=shm:dapl".
Para Gigabit Ethernet digite "export OMPI_MCA_btl=tcp,self" para OpenMPI e Bull MPI. Para Intel MPI digite "export I_MPI_FABRICS=tcp".

Para compilar código-fonte CUDA:

Digite "export PATH=/opt/cuda/7.0/bin:$PATH" e compile com o comando "nvcc".
Para executar o código compilado digite "export LD_LIBRARY_PATH=/opt/cuda/7.0/lib:$LD_LIBRARY_PATH" (32 bits) ou "export LD_LIBRARY_PATH=/opt/cuda/7.0/lib64:$LD_LIBRARY_PATH" (64 bits).
O diretório dos exemplos é "/opt/cuda/7.0/samples".

Utilizando o gerenciador de jobs SLURM:

Para que seu programa seja enfileirado para execução no CACAU, devemos criar um arquivo de texto com terminação "*.srm" com instruções para executar o programa, por exemplo "testempi.srm".

Para enfileirar digite "sbatch testempi.srm".
Para listar filas e respectivos nós digite "sinfo".
Para listar jobs enfileirados digite "squeue" ou "sjstat".
Para cancelar um job digite "scancel <número_do_job>".

Script de exemplo (testempi.srm):

#!/bin/bash
#SBATCH -J testempi                             # nome do job
#SBATCH --partition short                      # fila onde o job será enfileirado, pode ser lowpriority, veryshort, short, long ou gpu
#SBATCH --nodes 1                                # quantidade de nós, 1 a 3 na fila gpu e 1 a 20 nas outras filas
#SBATCH --ntasks 8                               # quantidade de tarefas, fila gpu têm 12 cpus por nó e as outras filas 8 cpus por nó
#SBATCH --cpus-per-task 1                  # quantidade de cpus por tarefa
#SBATCH --time 3:00:00                        # tempo limite, se omitido usará o tempo total da fila
#SBATCH --nodelist=nova[201-203]    # se necessário, seleciona os nós desejados
#SBATCH --exclusive                              # se necessário, ativa uso exclusivo dos nós

#descomente para usar Intel MPI
#source /opt/intel/impi/4.0.3.008/bin64/mpivars.sh
#export I_MPI_PMI_LIBRARY=/usr/lib64/libpmi.so
#export I_MPI_FABRICS=shm:dapl

#descomente para usar OpenMPI. O comando "srun" abaixo deve ser seguido do parametro "--resv-ports"
#source /home_nfs/local/mpi/openmpi-1.8.5/mpivars.sh

#descomente para usar Bull MPI. O comando "srun" abaixo deve ser seguido do parametro "--resv-ports"
#source /opt/mpi/bullxmpi/1.2.4.1/bin/mpivars.sh

#descomente para usar InfiniBand com Intel MPI (OpenMPI e Bull MPI utilizam InfiniBand por padrão)
#export I_MPI_FABRICS=shm:dapl

#descomente para usar Gigabit Ethernet com Intel MPI
#export I_MPI_FABRICS=tcp

#descomente para usar Gigabit Ethernet com OpenMPI e Bull MPI
#export OMPI_MCA_btl=tcp,self

#descomente para usar CUDA 32 bits ou 64 bits
#export LD_LIBRARY_PATH=/opt/cuda/7.0/lib
#export LD_LIBRARY_PATH=/opt/cuda/7.0/lib64

cd $SLURM_SUBMIT_DIR         # muda para diretório de onde o job foi enviado
mkdir $SLURM_JOBID               # cria diretório do job atual
cp testempi $SLURM_JOBID    # se necessário, copia executáveis e arquivos de entrada para diretório do job atual
cd $SLURM_JOBID                     # muda para diretório do job atual

echo "--------------------------------------"
ldd testempi
echo "--------------------------------------"    # se necessário, exibe as bibliotecas usadas pelo programa que o job executa
ulimit -s unlimited                                  # ajusta limites para execução
ulimit -a                                                    # exibe limites para execução

date                       # exibe data de início
srun ./testempi    # use o srun para utilizar o número de tarefas criadas em ntasks e o número de nós criados em nodes, ou substitua pelo comando de seu programa
date                       # exibe data de término