Tópico 22 · Serial × paralelo (MPI)
2/2
Zona de halo e quando usar cada modo
Cada comando do fluxo MPI tem um papel específico — e a decisão entre serial e paralelo depende do tamanho do problema e do hardware disponível.
- decomposeParlê o
decomposeParDict e fatia a malha em subdomínios, criando pastas processor0, processor1, etc.
- mpiruninvoca a biblioteca MPI e coordena a comunicação entre os núcleos.
- -np 4número de processadores (4) — deve ser idêntico ao
numberOfSubdomains da decomposição.
- -parallelflag necessária. Sem ela, o software roda 4 simulações idênticas e redundantes do domínio inteiro, tornando o cálculo mais lento.
- reconstructParao final, junta os dados das pastas de cada processador de volta no domínio original, para visualização.
🧩
Conceito — zona de halo e comunicação: a interface entre as fronteiras fatiadas é a zona de halo, gerenciada pelo MPI. A eficiência do paralelismo depende de minimizar essa zona, reduzindo o tempo gasto trocando informações de contorno a cada passo.
Quando usar serial
Indicado para montagem do projeto (setup) e depuração. Em malhas muito pequenas (ex.: 5.000 partículas), o serial é rápido o suficiente e pode até ser mais rápido que o paralelo, pois o custo de comunicação entre núcleos supera o ganho.
Quando usar paralelo
Necessário para dezenas de milhares a milhões de partículas, que levariam horas, dias ou semanas em serial. A paralelização distribui a carga entre processadores e nós de rede, viabilizando o projeto.
⚠️
Destaque — núcleos físicos × virtuais: muitos computadores usam Hyper-Threading (1 núcleo físico dividido em 2 virtuais). Para CFD e DEM, deve-se usar o número de núcleos físicos: softwares de cálculo não se beneficiam de núcleos virtuais. Pedir mais núcleos que os físicos (ex.: -np 24 em uma máquina de 12 físicos) roda, mas fica mais lento pelo aumento do custo de sincronização.