Guia: Rodando o ORCA em Paralelo com o Contêiner que Você Já Criou
orca.sif já tem tudo o que precisa para rodar em paralelo.
Por que não preciso instalar o OpenMPI?
O nome do arquivo que você baixou, orca_6_1_0_linux_x86-64_shared_openmpi418_avx2.tar.xz, nos diz que o ORCA foi compilado para usar a versão 4.1.8 do OpenMPI, e essa versão já vem incluída no pacote.
O arquivo orca.def que criamos já configura o ambiente para que o ORCA encontre e use essa versão interna. Tentar instalar outra versão de OpenMPI causaria conflitos e erros.
O que precisamos fazer é simplesmente dizer ao ORCA para usar múltiplos processadores.
Passo a Passo para Executar em Paralelo
Passo 1: Modifique o Arquivo de Input do ORCA (.inp)
A forma de pedir ao ORCA para usar múltiplos núcleos é através da palavra-chave PAL no seu arquivo de input.
Vamos criar um novo arquivo de teste para 4 núcleos.
1. Crie o arquivo de input paralelo:
nano test_paralelo.inp
2. Cole o conteúdo abaixo. A única diferença é a linha ! PAL4, que solicita 4 processadores (cores).
! B3LYP 6-31G* PAL4 * xyz 0 1 O 0.00000 0.00000 0.11730 H 0.00000 0.75720 -0.46920 H 0.00000 -0.75720 -0.46920 *
Salve e saia (Ctrl+X, Y, Enter).
Passo 2: Execute o Cálculo
Agora, execute o contêiner exatamente como antes. O ORCA, ao ler a instrução ! PAL4, irá automaticamente gerenciar a execução paralela usando o OpenMPI que está dentro do contêiner.
apptainer exec orca.sif orca test_paralelo.inp > test_paralelo.out
O próprio ORCA se encarrega de iniciar os 4 processos. Você pode abrir o gerenciador de tarefas do seu sistema e verá 4 processos "orca_main" ou similar em execução enquanto o cálculo está rodando.
Passo 3: Verifique o Resultado
Como antes, a melhor forma de verificar o sucesso é com o comando grep.
grep "ORCA TERMINATED NORMALLY" test_paralelo.out
Além disso, você pode abrir o arquivo test_paralelo.out e procurar por "Number of processes". Você deverá encontrar uma seção que confirma que o cálculo foi rodado em paralelo.
(Avançado) E para Rodar em um Cluster (HPC)?
Em um ambiente de cluster (High-Performance Computing), você geralmente usa um agendador de tarefas como o Slurm. O princípio é o mesmo, mas você pede os processadores ao Slurm, que então os entrega ao seu contêiner.
Um script de submissão para o Slurm (ex: run_orca.sbatch) se pareceria com isto:
#!/bin/bash #SBATCH --nodes=1 #SBATCH --ntasks-per-node=4 # Peça 4 núcleos aqui #SBATCH --job-name=ORCA_test # Carregue o módulo do Apptainer se necessário # module load apptainer # Execute o contêiner usando srun srun apptainer exec /caminho/para/seu/orca.sif orca seu_calculo.inp > seu_calculo.out
srun do Slurm se comunica com o OpenMPI dentro do contêiner Apptainer para gerenciar o paralelismo corretamente. Isso é conhecido como "Hybrid MPI" e é uma das grandes vantagens de usar contêineres em HPC.
Comentários
Postar um comentário