Sem custo de licença, o limite passa a ser a máquina e o caso
O OpenFOAM é publicado pela OpenFOAM Foundation sob a licença GPL, de livre acesso e código aberto. Como não há cobrança por núcleo, o grupo pode usar todos os núcleos do servidor. A pergunta passa a ser quantos núcleos o caso aproveita de verdade.
Como o OpenFOAM roda em paralelo
O guia do usuário do OpenFOAM (versão 13) descreve o método como decomposição de domínio. A malha e os campos são divididos em partes, e cada parte vai para um processador.
- O utilitário
decomposePardivide o caso conforme o dicionáriodecomposeParDict, com métodos comosimple,hierarchicalescotch. - A execução usa MPI, por padrão a implementação openMPI, com o comando
mpirun. - No fim, o caso pode ser reconstruído com
reconstructParou pós-processado parte por parte.
Núcleos, memória e o ponto em que o ganho para
Cada parte da malha precisa de células suficientes para compensar a troca de dados com as vizinhas. Quando o caso é dividido demais, os processadores passam mais tempo conversando do que calculando, e mais núcleos deixam de reduzir o tempo.
Em CFD, a banda de memória também pesa: muitos núcleos disputando poucos canais de memória ficam esperando dado. Por isso a configuração equilibra três coisas:
- número de núcleos compatível com o tamanho típico da malha do grupo;
- memória instalada em todos os canais do processador, com capacidade para o maior caso;
- disco rápido para gravar os resultados de cada intervalo sem segurar a simulação.
A forma confiável de achar o ponto de parada é medir. Rodamos o caso típico com 8, 16, 32 núcleos e mais, e o gráfico de tempo mostra onde o ganho deixa de compensar.
Quando um servidor deixa de bastar
O mesmo método que divide o caso entre núcleos de uma máquina divide entre várias máquinas ligadas em rede. Às vezes o caso típico continua escalando além dos núcleos de um servidor, ou vários usuários disputam a máquina o tempo todo. Aí o próximo passo é um cluster, com rede de baixa latência entre os nós.
Instalação e cuidado
Instalamos a versão do OpenFOAM que o grupo usa, com MPI configurado e testado, e deixamos documentados os passos de decomposição e execução no servidor. Depois, a sustentação acompanha atualizações e dúvidas de uso com time especializado 24/7.
Perguntas frequentes
O OpenFOAM tem custo de licença?
O OpenFOAM da OpenFOAM Foundation é distribuído sob a licença GPL, de livre acesso e código aberto, sem cobrança por núcleo.
Mais núcleos sempre deixam o OpenFOAM mais rápido?
Até certo ponto. Quando a malha é dividida em partes pequenas demais, a troca de dados entre processadores passa a dominar o tempo. A medição do caso típico mostra onde o ganho para.
O que é decomposePar?
É o utilitário do OpenFOAM que divide a malha e os campos em partes, uma por processador, conforme o dicionário decomposeParDict, antes da execução em paralelo com MPI.