Dell AMD EPYC 7662 / NVIDIA Tesla A100
Singularity
Singularity é uma solução para o uso de containers em ambientes HPC. Desenhado para permitir a execução de aplicações com portabilidade e reprodutibilidade em um ambiente seguro e proporcionando desempenho bare-metal, ou seja, o mesmo desempenho obtido com o uso de servidores físicos dedicados. Com Singularity é possível configurar o ambiente de execução mais adequado para cada aplicação, por meio de solução BYOE (Bring Your Own Environment) ou, em tradução livre, “Traga seu próprio ambiente”. Nesta solução pode ser usada uma imagem disponível no Singularity ou então pode ser usada uma imagem pronta. Nestas imagens estão disponíveis todos os pacotes e configurações necessários para a execução da aplicação.
Informações sobre o Singularity estão disponíveis em https://sylabs.io/singularity/
Especificação
No ambiente Lovelace está instalado o Singularity na versão 3.7.1
A documentação oficial pode ser consultada em https://singularity.hpcng.org/user-docs/3.7/
Como usar no ambiente Lovelace
A execução de programas no ambiente Lovelace é feita através submissão de jobs para filas, gerenciadas pelo software OpenPBS. Os passos a serem seguidos são:
- Preparação da imagem
- Preparação do script para submissão
- Submissão do script
- Preparação da Imagem
- Acessar o ambiente Lovelace. Referência aqui
ssh -p 31459 usuario@cenapad.unicamp.br ssh lovelace
- Criar uma pasta para hospedar os arquivos de imagem, script de submissão e arquivos do job. Se for necessário fazer a execução em pastas separadas, deve ser feita também a adaptação dos caminhos nos arquivos:
- Carregar o modulefile do singularity:
- Selecionar a imagem:
- Container Library - https://cloud.sylabs.io/library
- Imagens Nvidia https://ngc.nvidia.com/catalog/containers
- Docker Hub. https://hub.docker.com/
- Shub - Singularity HUB - https://singularityhub.github.io/
- OCI registry - diretórios que suportem o formato OCI
- Fazer o download de uma imagem:
- Para ajuda no comando pull:
- Para mais informações, consulte a documentação do Singularity: https://sylabs.io/guides/3.7/user-guide/
- Construir a imagem:
- Preparação do script para submissão
- Imagens usadas:
- Faça login no ambiente lovelace
- Crie uma pasta para hospedar os arquivos
- Carregue o modulefile singularity
- Indique o nome da imagem a ser gerada:
- Crie um arquivo, contendo todos os comandos necessários para executar o software, como por exemplo, entrar na pasta de dados e executar o programa. Nesse exemplo, criamos um arquivo com o nome namd01.sh, contendo:
- Atribua permissão para execução neste arquivo:
- Crie um arquivo, que aqui chamamos de namd01.job, contendo o script a ser submetido para execução do singularity com a imagem a ser usada e o script de apoio (namd01.sh neste exemplo). Este arquivo deve conter:
- Importante: o uso do flag --nv que habilita o uso de placas NVIDIA na imagem, sem essa opção o container não consegue usar as GPUs
- Submissão do script para execução
As imagens, que podem ser obtidas em repositórios, devem ser previamente preparadas.
mkdir pasta_job cd pasta_job
module load singularity
As imagens podem ser obtidas em repositórios. Os mais comuns são:
Para procurar um pacote no repositório Container Library (https://cloud.sylabs.io/library ) pode ser usado o comando:
singularity search pacote
OBS: o comando search procura no repositório Container Library somente
singularity pull repositorio://imagem singularity pull library://lolcow singularity pull docker://godlovedc/lolcow
singularity help pull
ID_IMAGEM=imagem_a_ser_gerada singularity build ${ID_IMAGEM}.sif repositorio://imagem:${ID_IMAGEM}
Será criado o arquivo imagem_a_ser_gerada.sif
No exemplo a seguir ilustramos a preparação da imagem do software NAMD e o script usado para submissão para a fila testegpu. Os mesmos passos aqui descritos podem ser aplicados para outras imagens e filas.
Para informações sobre a submissão de jobs, consultar o guia do usuário Lovelace
Repositório Nvidia ( https://ngc.nvidia.com/catalog/containers )
Imagem NAMD ( https://ngc.nvidia.com/catalog/containers/hpc:namd )
mkdir pasta_job cd pasta_job
module load singularity
NAMD_TAG=2.13-singlenode singularity build ${NAMD_TAG}.sif docker://nvcr.io/hpc/namd:${NAMD_TAG}
Será criado o arquivo 2.13-singlenode.sif. Este arquivo será usado para submissão do job.
#!/bin/bash cd $PBS_O_WORKDIR/f1atpase namd2 f1atpase.namd
chmod +x namd01.sh
#!/bin/bash #PBS -S /bin/bash #PBS -q testegpu #PBS -N namd01 #PBS -m abe module load singularity/3.7.1 cd $PBS_O_WORKDIR singularity run --nv 2.13-singlenode.sif ./namd01.sh
Usando os arquivos namd01.sh e namd01.job criados, o job deve ser submetido por meio da execução do comando:
qsub namd01.job
Mais informações sobre o uso do PBS clique aqui
Voltar ao topo