Translation update pending
The Brazilian Portuguese translation may be out of date because the Japanese source has changed. The existing translation remains available while it is being updated.
Compilação com GPU¶
O FrontISTR pode ser executado em GPUs usando os recursos OpenACC do NVIDIA HPC SDK. Esta página descreve como fazer o build do FrontISTR com suporte a GPU habilitado e como executá-lo.
Para as bibliotecas necessárias, consulte Dependências obrigatórias e opcionais.
Procedimento de compilação¶
Use os compiladores do NVIDIA HPC SDK (nvc, nvc++ e nvfortran). Em um ambiente de cluster HPC, o NVIDIA HPC SDK deve ser carregado antes do build, de acordo com o manual do ambiente (por exemplo, module load nvhpc).
Bibliotecas opcionais como METIS, MUMPS e MKL não oferecem suporte a GPU; por isso, são desativadas nos exemplos de comando abaixo (por exemplo, WITH_METIS=OFF).
Como descrito em Procedimento de compilação com CMake, quando o NVIDIA HPC SDK (nvc, nvc++, nvfortran) é especificado para os compiladores, -gpu=ccnative,mem:managed é definido no CMakeLists.txt. ccnative é uma opção que detecta automaticamente a GPU no ambiente de build e seleciona o alvo ideal, portanto não são necessárias alterações manuais para cada ambiente. mem: é uma opção que especifica como a memória da GPU é tratada; ela é obrigatória porque a implementação de GPU do FrontISTR pressupõe Unified Memory. mem:managed é a configuração padrão para ambientes gerais em que CPU e GPU possuem memórias separadas.
Nota: Em arquiteturas como o Miyabi (GH200), em que CPU e GPU são integradas via NVLink, em vez de
mem:managedusa-semem:unified; altere a configuração de acordo com o ambiente utilizado (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (sem MPI)¶
mkdir build
cd build
CC=nvc CXX=nvc++ FC=nvfortran cmake \
-DWITH_MPI=OFF -DWITH_OPENMP=ON \
-DWITH_METIS=OFF -DWITH_MUMPS=OFF \
-DWITH_MKL=OFF -DWITH_LAPACK=OFF \
-DWITH_ML=OFF -DWITH_REFINER=OFF -DWITH_REVOCAP=OFF \
..
make -j
OpenACC + OpenMP + MPI¶
Ao usar MPI, os compiladores wrapper do MPI (como mpicc) devem ser configurados para invocar internamente os compiladores do NVIDIA HPC SDK (como nvc). Em muitos ambientes de cluster HPC, carregar o NVIDIA HPC SDK e as bibliotecas MPI com comandos como module load fornece essa configuração automaticamente. Entretanto, as versões recomendadas e os procedimentos de carregamento variam conforme o ambiente; consulte o manual do usuário ou outra documentação do respectivo ambiente para obter detalhes.
mkdir build
cd build
CC=mpicc CXX=mpic++ FC=mpif90 cmake \
-DWITH_MPI=ON -DWITH_OPENMP=ON \
-DWITH_METIS=OFF -DWITH_MUMPS=OFF \
-DWITH_MKL=OFF -DWITH_LAPACK=OFF \
-DWITH_ML=OFF -DWITH_REFINER=OFF -DWITH_REVOCAP=OFF \
..
make -j
Sem OpenACC (versão para CPU)¶
Para compilar com os compiladores do NVIDIA HPC SDK uma versão para CPU sem usar OpenACC, especifique -DNVHPC_NO_ACC=ON. Nesse caso, -acc, -Minfo=accel e -gpu=ccnative,mem:managed não são definidos. Essa versão pode ser usada para comparar os resultados de cálculo com os de uma versão para GPU compilada com os mesmos compiladores.
mkdir build
cd build
CC=nvc CXX=nvc++ FC=nvfortran cmake \
-DNVHPC_NO_ACC=ON \
-DWITH_MPI=OFF -DWITH_OPENMP=ON \
..
make -j
Execução¶
O procedimento de execução de um build para GPU é basicamente o mesmo de um build para CPU. Para os procedimentos gerais de execução, consulte o Guia de execução.
Profiling¶
Os dados de profiling podem ser coletados usando o NVIDIA Nsight Systems (nsys).