Dell AMD EPYC 7662 / NVIDIA Tesla A100

Os equipamentos do ambiente Lovelace foram adquiridos em 2021, com recursos do Projeto FINEP 0468-16, pelo valor US$ 1,030 milhão.

Em 2023 foi expandido com recursos do Processo FAPESP 21/06448-0.

O sistema Dell AMD Epyc 7662 / nVIDIA Tesla A100 instalado no CENAPAD-SP em 2021 possui 65 nós de processamento, sendo 58 nós com 2 processadores AMD Epyc 7662 e 512 GB de memória RAM, 5 nós com 2 processadores AMD Epyc 7662, 2 gpus NVIDIA Tesla A100 e 512 GB de memória RAM, e 2 nós com 2 processadores AMD Epyc 7H12 e 2 TB de memória RAM.

A capacidade de processamento teórica deste sistema é, aproximadamente, de 268 TFLOPs nas CPUs e de 97 TFLOPs nas GPUS.

Conta também com interconexão Infiniband e sistema de armazenamento SDS/Ceph com 792 TB.

Em setembro de 2023, por meio do Processo FAPESP 21/06448-0, vinte e dois nós computacionais Dell R6525 (AMD EPYC 7443) foram integrados ao ambiente Ada Lovelace, cada um deles com 2 processadores AMD Epyc 7443 e 128 GB de memória RAM. Esta expansão acrescentou 23 TFLOPs ao desempenho teórico em CPUs.

A capacidade de processamento teórica atual do sistema Dell/AMD/NVIDIA é, aproximadamente, de 291 TFLOPs nas CPUs e de 97 TFLOPs nas GPUS.

Hardware

Processamento

Armazenamento

Solução de armazenamento SDS (Software Defined Storage) baseada no software CEPH composta por:

Voltar ao topo

Software

Softwares Instalados

A relação de softwares instalados e informações sobre como executá-los pode ser obtida em Softwares Instalados.

Sistema Operacional e Gerenciadores

O sistema operacional é o Oracle Linux 8.8 64 bits, distribuição baseada no Red Hat Enterprise Linux, com os sistemas para administração de clusters de alto desempenho xCAT 2.16

Para o gerenciamento de filas e escalonamento de jobs é usado o OpenPBS.

Também está instalado o repositório OpenHPC 2.x. que inclui, entre outros, ferramentas para desenvolvimento e bibliotecas científicas.

Para facilitar a instalação de diversas aplicações científicas está instalado o gerenciador de pacotes Spack, que pode ser ativado para uso através do módulo:

module load spack

Compiladores e Bibliotecas

Estão instalados os compiladores e bibliotecas da Intel, da GNU, da AMD e da NVIDIA nos diretórios /opt/intel, /opt/ohpc/pub/compiler/gcc, /opt/pub/spack/aocc e /opt/pub/spack/cuda.

Voltar ao topo

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 aqui

Voltar ao topo

Espaço em disco

No ambiente Lovelace o espaço para diretório home dos usuários é, neste primeiro momento, compartilhado com o espaço para arquivos temporários. Estas áreas têm o total de 680 TB e a ocupação dos mesmos é monitorada.

Diretórios HOME

Os diretórios home dos usuários do CENAPAD-SP não são compartilhados entre todos os ambientes aqui instalados, devido à diferença de arquiteturas entre estes.

O padrão para a identificação do diretório home de um determinado usuário no ambiente Lovelace é:

login é a identificação da conta do usuário

projeto é a identificação do projeto a que a conta está vinculada

IMPORTANTE: Não é feito backup de qualquer arquivo deste ambiente, portanto os usuários são responsáveis pela manutenção de seus arquivos.

Área de scratch para arquivos temporários

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

Voltar ao topo

Como utilizar

Usuários e Projetos

A administração do ambiente Lovelace 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 ambiente Lovelace deve ser feito através de um servidor, definido como "frontend", usando o comando ssh. Para isto, uma vez conectado ao ambiente do CENAPAD-SP, o usuário deverá executar:

ssh lovelace

utilizando o mesmo usuário e a mesma senha do CENAPAD-SP.

Acesse o Guia do Usuário para informações sobre como fazer a conexão para o CENAPAD-SP.

Transferência de arquivos

Acesse o Guia do Usuário para informações sobre como fazer a transferência de arquivos.

Como executar um programa

As informações de cada etapa necessária para execução de programas estão detalhadas nas seguintes sessões desta página:

Voltar ao topo

Environment Modules

Environment Modules são usados para a configuração adequada das variáveis de ambiente necessárias para execução dos programas. Sua utilização tem por objetivo simplificar a configuração do ambiente shell para execução de um programa.

O comando module permite que as variáveis de ambiente sejam adequadamente definidas, alteradas ou removidas. Também possibilita a seleção entre diferentes versões de um mesmo software.

Os modulefiles contêm informações para configurar as variáveis de ambiente necessárias para a execução de um programa, definindo ou alterando variáveis de ambiente como, por exemplo, PATH, LIBPATH ou MANPATH.

A variável de ambiente MODULEPATH informa onde são procurados os modulefiles.

No ambiente Lovelace a variável MODULEPATH especifica os diretórios:

Alguns dos comandos utilizados para selecionar, carregar e remover configurações por meio de modulefiles são:

Comando Descrição
module helpexibe informações sobre como usar o comando
module listexibe os módulos ativos (ou carregados)
module availexibe os módulos disponíveis para uso
module spiderexibe todos os módulos possiveis
module spider móduloexibe as versões do módulo indicado
module spider stringlista os módulos que contêm a string indicada
module spider nome_aplicaçãoexibe informações adicionais e módulos dependentes
module load modulecarrega o módulo indicado
module unload moduleremove o módulo indicado
module purgeremove todos os módulos
module show moduleexibe o conteúdo do módulo

Os softwares instalados no ambiente lovelace possuem modulefiles para configuração das variáveis de ambiente necessárias para sua execução.

É possível listar os softwares instalados e disponíveis no ambiente por meio da verificação da existência de um modulefile correspondente. Utilize o comando:

module avail

Os modulefiles, usados para a configuração necessária para execução dos softwares instalados, estão separados em pastas e agrupados de acordo com características da instalação, como por exemplo, o compilador e a biblioteca MPI utilizados. Por exemplo, estão agrupados nas seguintes pastas os modulefiles correspondentes a:

Pasta Descrição
/opt/ohpc/pub/moduledeps/gnu9-openmpi4 modulefiles de softwares do repositório OpenHPC 2.x. instalados com o compilador gcc-9.4.0 e openmpi-4.1.1
/opt/ohpc/pub/moduledeps/gnu9 modulefiles de softwares do repositório OpenHPC 2.x. instalados com o compilador gcc-9.4.0
/opt/ohpc/pub/modulefiles modulefiles de softwares do repositório OpenHPC 2.x.
/opt/intel/oneapi/modulefiles modulefiles para uso dos compiladores da Intel (icc,icpc,ifort) e biblioteca Intel MPI 2021.3.0

As instalações feitas pela equipe de Suporte Técnico do CENAPAD-SP utilizam os compiladores e biblioteca MPI da Intel. Esta informação está na identificação do módulo, no formato "...-intel-2021.3.0".

O nome do módulo a ser usado para configurar o ambiente para processamento de cada software tem a seguinte composição:

nome do software/versão do software-compilador-versão do compilador.

Ao executar o comando module av pode ser especificado parte do nome do software que se deseja buscar. Por exemplo, a execução do comando:

module av openmpi/

produzirá um resultado no seguinte formato:


  ---------------------------------------------- /opt/pub/spack/modulefiles -----------------------------------------------
  openmpi/3.1.4-intel-2021.3.0    openmpi/4.1.1-gcc-9.3.0
  openmpi/4.0.5-gcc-9.3.0         openmpi/4.1.1-intel-2021.3.0 (D)

------------------------------------------------- /opt/pub/modulefiles --------------------------------------------------
  openmpi/4.1.1-gcc-9.4.0

onde é possível observar que existem cinco instalações distintas de openmpi, das versões: 3.1.4, 4.0.5 e 4.1.1 com diferentes compiladores: gcc-9.3.0, gcc-9.4.0 e Intel-OneAPI-2021.3.0

module av fftw

produzirá um resultado no seguinte formato:


  ---------------------------------------- /opt/ohpc/pub/moduledeps/gnu9-mvapich2 -----------------------------------------
  fftw/3.3.8-gcc-9.4.0-mvapich2

---------------------------------------- /opt/ohpc/pub/moduledeps/gnu9-openmpi4 -----------------------------------------
  fftw/3.3.8-gcc-9.4.0

---------------------------------------------- /opt/pub/spack/modulefiles -----------------------------------------------
  fftw/3.3.8-gcc-9.3.0    fftw/3.3.9-gcc-9.4.0    fftw/3.3.9-intel-2019.0.5    fftw/3.3.9-intel-2021.3.0 (D)

onde também pode ser observado que, neste exemplo, existem seis instalações da biblioteca FFTW: duas versões distintas, cada uma compilada com os compiladores da Intel-2021.3.0, Intel-2019.0.5 e biblioteca MPI da Intel, e com compiladores gcc-9.3.0, gcc-9.4.0 e bibliotecas OpenMPI e MVAPICH2.

A configuração necessária para utilização de um ou mais softwares instalados é feita por meio da execução do comando "module load". Por exemplo, por meio da execução do comando:

module load fftw

será feita a configuração através do modulefile fftw com a indicação (D) correspondente a "Default" (veja acima), isto é, será carregado fftw/3.3.9-intel-2021.3.0;

OBS: A indicação (L), correspondente a "Loaded", indica que o módulo está carregado e as variáveis de ambiente correspondentes estão devidamente definidas.

É possível carregar mais de um módulo simultaneamente:

module load openmpi/4.1.1-intel-2021.3.0 fftw/3.3.9-intel-2021.3.0

Para identificar os módulos carregados deve ser executado o comando module list:

module load ohpc

module list

produzirá um resultado no seguinte formato:


  Currently Loaded Modules:
  1) autotools    4) hwloc/2.5.0                   7) libnl/3.3.0-gcc-7.3.0     10) libfabric/1.13.1-gcc-7.3.0
  2) prun/2.2     5) numactl/2.0.14-gcc-7.3.0      8) rdma-core/34.0-gcc-7.3.0  11) openmpi4/4.1.1
  3) gnu9/9.4.0   6) opa-psm2/11.2.185-gcc-7.3.0   9) ucx/1.11.2-gcc-7.3.0      12) ohpc

Voltar ao topo

Compilação de programas

Compiladores e Ferramentas

A seleção do compilador a ser usado deve ser feita através do comando module, que faz a definição adequada das variáveis de ambiente.

Exemplo de alguns compiladores disponíveis:

  1. GNU gcc-9.4.0

    Para usar este compilador, carregar o modulefile correspondente por meio do comando:

    module load gnu9/9.4.0

    Compiladores:

    gcc, g++, gfortran

    Exemplos de uso:

    • gcc programa.c -o nome_executável
    • g++ programa.cpp -o nome_executável
    • gfortran programa.f ou .f90 -o nome_executável

    Documentação:

  2. GNU gcc-8.5.0

    Compilador instalado com o Sistema Operacional Oracle Linux 8.5

    Para usar este compilador, carregar o modulefile correspondente por meio do comando:

    module load gcc/8.5.0

    Compiladores:

    gcc, g++, gfortran

    Exemplos de uso:

    • gcc programa.c -o nome_executável
    • g++ programa.cpp -o nome_executável
    • gfortran programa.f ou .f90 -o nome_executável

    Documentação:

  3. Intel OneAPI - 2021.3.0

    Compiladores da Intel, compatíveis com a versão gcc-8.5.0

    Para usar este compilador, carregar o modulefile correspondente por meio do comando:

    module load compiler/2021.3.0

    Compiladores:

    icc, icpc, ifort

    Exemplos de uso:

    • icc programa.c -o nome_executável
    • icpc programa.cpp -o nome_executável
    • ifort programa.f ou .f90 -o nome_executável

    Documentação:

  4. AMD Optimizing C/C++ Compiler

    Compiladores AOCC - AMD Optimizing C/C++ Compiler (aocc-3.1.0), compatíveis com Intel OneAPI e LLVM-11.

    Para usar este compilador, carregar o modulefile correspondente por meio do comando:

    module load aocc/3.1.0

    Compiladores:

    clang, clang++, flang

    Exemplos de uso:

    • clang programa.c -o nome_executável
    • clang++ programa.cpp -o nome_executável
    • flang programa.f ou .f90 -o nome_executável

    Documentação:

  5. NVIDIA HPC Toolkit Development Kit

    Ferramentas para o desenvolvimento de aplicações que utilizam processadores vetoriais (GPUs). nvhpc-21.7, compatível com Intel OneAPI LLVM-11.

    Para usar esta ferramenta, carregar o modulefile correspondente por meio do comando:

    module load nvhpc/21.7

    Compiladores:

    nvc, nvc++, nvfortran, nvcc (cuda)

    Exemplos de uso:

    • nvc programa.c -o nome_executável
    • nvc++ programa.cpp -o nome_executável
    • nvfortran programa.f ou .f90 -o nome_executável
    • nvcc programa.cu -o nome_executável

    Documentação:

Bibliotecas

A seleção das bibliotecas a serem usadas para o desenvolvimento, compilação e execução de programas deve ser feita através do comando module, que faz a definição adequada das variáveis de ambiente.

Estão disponíveis as seguintes bibliotecas para paralelização de programas com "message-passing":

  1. Intel MPI

    Para usar esta biblioteca, parte do pacote Intel OneAPI - 2021.3.0, deve ser carregado o modulefile correspondente por meio do comando:

    module load mpi/2021.3.0

    Compiladores adaptados (wrappers):

    mpiicc, mpiicpc, mpiifort

    Exemplos de uso:

    • mpiicc programa.c -o nome_executável
    • mpiicpc programa.cpp -o nome_executável
    • mpiifort programa.f ou .f90 -o nome_executável

    Documentação:

  2. OpenMPI

    Para usar esta biblioteca, deve ser carregado o modulefile correspondente à versão selecionada:

    • OpenMPI-4.1.1 - instalada com Intel OneAPI-2021.3.0:

      module load openmpi/4.1.1-intel-2021.3.0
    • OpenMPI-4.1.1 - instalada com gcc-9.4.0:

      module load openmpi/4.1.1-gcc-9.4.0
    • OpenMPI-4.0.5 - instalada com gcc-9.3.0:

      module load openmpi4/4.0.5
    • OpenMPI-3.1.4 -instalada com Intel OneAPI-2021.3.0:

      module load openmpi/3.1.4-intel-2021.3.0

    Exemplos de uso:

    • mpicc programa.c -o nome_executável
    • mpicxx programa.cpp -o nome_executável
    • mpif77 programa.f -o nome_executável
    • mpif90 programa.f90 -o nome_executável

    Documentação:

  3. Intel MKL

    Esta é uma biblioteca de alta performance da Intel, parte do pacote Intel OneAPI - 2021.3.0, para otimização de programas escritos em C ou Fortran, que inclui:

    • Linear álgebra
    • Fast Fourier Transforms (FFT)
    • Vector math
    • Direct and iterative sparse solvers
    • Random number generators

    Para usá-la deve ser carregado o modulefile correspondente por meio do comando:

    module load mkl/2021

    Documentação:

  4. OpenBLAS

    Biblioteca otimizada para Álgebra Linear, instalada com GNU gcc-9.4.0

    Para usá-la deve ser carregado o modulefile correspondente por meio do comando:

    module load openblas/0.3.17-gcc-9.4.0

    Documentação:

  5. GSL - GNU Scientific Library

    Biblioteca numérica para programação em C e C++: versão 2.7 instalada com Intel OneAPI-2021.3.0 e com GNU gcc-9.3.0

    Para usá-la deve ser carregado o modulefile correspondente por meio do comando:

    module load gsl/2.7-intel-2021.3.0

    module load gsl/2.7-gcc-9.3.0

    Documentação:

  6. FFTW - Fastest Fourier Transform in the West

    Biblioteca de subrotinas para cálculos de "discrete Fourier transform (DFT)" em uma ou mais dimensões.

    Para usar esta biblioteca, deve ser carregado o modulefile correspondente à versão selecionada:

    • FFTW-3.3.9 - instalada com Intel OneAPI-2021.3.0 (compiladores e MPI)
      module load fftw/3.3.9-intel-2021.3.0
    • FFTW-3.3.8 - instalada com gcc-9.3.0 e OpenMPI-4.0.5
      module load fftw/3.3.8

    Documentação:

  7. NETLIB Lapack e Scalapack

    Biblioteca de subrotinas de Álgebra Linear da NETLIB.

    Para usar esta biblioteca, deve ser carregado o modulefile correspondente à subrotina selecionada:

    • Lapack 3.9.1 - instalada com Intel OneAPI-2021.3.0
      module load netlib-lapack/3.9.1-intel-2021.3.0
    • Scalapack 2.1.0 - instalada com Intel OneAPI-2021.3.0
      module load netlib-scalapack/2.1.0-intel-2021.3.0

    Documentação:

Orientações e exemplos de uso de compiladores e bibliotecas

  1. Configurar adequadamente as variáveis de ambiente:

    • Verificar quais são os modulefiles já carregados:
      module list
    • Se necessário, remover os modulefiles que não serão usados:
      module unload id_modulefile
    • Como opção, podem ser removidos todos os modulefiles:
      module purge
    • Carregar os novos modulefiles para uma nova compilação e linkedição:
      module load id_modulefile
  2. Selecionando o compilador:

    GNU gcc-8.5.0 module load gcc/8.5.0
    GNU gcc-9.4.0 module load gnu9/9.4.0
    Intel OneAPI - 2021.3.0 module load compiler/2021.3.0
    AMD Optimizing C/C++ Compiler module load aocc/3.0.0-intel-2021.3.0
    NVIDIA HPC Toolkit Development Kit module load nvhpc/21.7-intel-2021.3.0
  3. Linkedição (vincular o código às bibliotecas):

    Na compilação pode ser necessário vincular o código que está sendo compilado às bibliotecas externas. As opções comuns para fazer essas vinculações são:

    • -L /caminho/da/biblioteca
    • -l biblioteca
    • -I /caminho/do/include
    • Exemplo:
      gcc -L /home/lovelace/proj/projXXX/login_do_usuário/minhasbibliotecas/lib
          -l biblioteca1 -l biblioteca2
          -I /home/lovelace/proj/projXXX/login_do_usuário/minhasbibliotecas/include
          -o meuprograma meuprograma.c
      
  4. Para usar os compiladores da Intel e biblioteca FFTW:

    • Carregar os módulos:
      module load compiler/2021.3.0 fftw/3.3.9-intel-2021.3.0
    • Compilação e linkedição:
      ifort divisores.f90 -o div -O3 -march=core-avx2 -lfftw3
      Opções utilizadas:
      -o Renomear o código executável
      -O3 Utilizar otimização agressiva do código
      -march=znver2 Gerar código otimizado para operações vetoriais AVX2
      -lfftw3 Utilizar subrotinas "Fast Fourier" da biblioteca FFTW
  5. Para usar os compiladores gcc-9.3.0 e bibliotecas OpenMPI e GSL:

    • Carregar os módulos:
      module load gcc/9.3.0 openmpi/4.0.5-gcc-9.3.0 gsl/2.6-gcc-9.3.0
      OBS: A compilação será feita com os compiladores gcc-9.3.0. É recomendado que as bibliotecas, também tenham sido instaladas com a mesma versão dos compiladores utilizados.
    • Compilação e linkedição:
      mpicc nprimo.c -o prog1 -O3 -march=znver2 -L/opt/pub/spack/gsl/2.6/gcc/9.3.0/lib -lgslcblas
      Opções utilizadas:
      -o Renomear o código executável
      -O3 Utilizar otimização agressiva do código
      -march=znver2 Gerar código otimizado para AMD ZEN2
      -L... Indica a localização da biblioteca GSL
      -lgslcblas Indica qual biblioteca da GSL será utilizada
Voltar ao topo

Instalação de software usando spack

O gerenciador de pacotes Spack permite a instalação de diversas aplicações científicas e facilita a instalação de software pelo próprio usuário.

Quando o software a ser instalado requer licenciamento e controle de acesso, a instalação deve ser feita no diretório home do usuário e, nestes casos, o próprio usuário pode fazer a sua instalação.

O Spack foi configurado para que a instalação de software seja feita de forma otimizada para o ambiente lovelace. Para isto utiliza os produtos Intel, isto é, compiladores, biblioteca MPI e biblioteca de otimização MKL, assim como as opções de compilação com otimização para o processador AMD do ambiente.

Para instalar um software, licenciado ou não, deve ser observado o seguinte roteiro:

    <<<<<<< HEAD
  1. Configurar a conta para utilizar o Spack:

    module load spack

  2. Limpar arquivos temporários de instalações anteriores:

    spack clean -sfmb

    =======
  3. Ativar o módulo para uso do Spack:

    >module load spack

    >>>>>>> df354cff8d2c8f7b53cf39d42abbe8a875d9c607
  4. Verificar se o software possui referências de instalação no Spack:

    spack info

    Exemplo:
    spack info vasp

       
    MakefilePackage:   vasp
    Description:
        The Vienna Ab initio Simulation Package (VASP) is a computer program
        for atomic scale materials modelling, e.g. electronic structure
        calculations and quantum-mechanical molecular dynamics, from first
        principles.
    Homepage: http://vasp.at
    Externally Detectable:
        False
    Tags:
        None
    Preferred version:
        6.1.1        file:///home/lovelace/adm/supsof/kusel/vasp.6.1.1.tgz
    Safe versions:
        6.1.1        file:///home/lovelace/adm/supsof/kusel/vasp.6.1.1.tgz
        5.4.4.pl2    file:///home/lovelace/adm/supsof/kusel/vasp.5.4.4.pl2.tgz
        5.4.4        file:///home/lovelace/adm/supsof/kusel/vasp.5.4.4.tgz
    ...
    

    Detalhes importantes:

    • "Externally Detectable: False"
      O software não é detectado externamente para "free download", neste caso, por ser um software licenciado;
    • É necessário que o usuário licencie o software e faça download exatamente de uma das versões referenciadas pelo spack, no item "Preferred version" ou "Safe versions".
  5. Verificar como será feita a instalação:

    Na pasta onde foi feito o "download" do software, executar o comando:

    spack spec

    Exemplo:

    spack spec vasp@5.4.4.pl2

    Detalhe importante:

    • A indicação e sintaxe do nome do software a ser instalado é importante: software@versão
  6. Instalar o software:

    spack install

    Exemplo:

    spack install vasp@5.4.4.pl2

    Detalhes importantes:

    • O processo inicia procurando as dependências e depois instalando-as uma a uma;
    • Por fim, instala o software;
    • O software será instalado na sua pasta "home" com a seguinte estrutura:
      $HOME/nome_software/versão_software/compilador/versão_compilador
    • Também será gerado um script "module" para configuração da conta para execução do software:
      $HOME/modulefiles/nome_software/versão_software-compilador-versão_compilador
    • Para utilizar o software, será necessário ativar o módulo antes:
      module load nome_software/versão_software-compilador-versão_compilador
Voltar ao topo