Tópico 23 · Decomposição de domínio
2/2
Desequilíbrio de carga e o balanceamento dinâmico
A decomposição espacial funciona bem se o material estiver distribuído por toda a caixa. Grãos, porém, sofrem gravidade, formam pilhas, compactam-se no fundo e deixam o topo vazio.
⚠️
Aviso — homogeneidade granular: com uma decomposição estática (caixas de tamanhos iguais) e grãos acumulados em uma extremidade, ocorre o desequilíbrio de carga (load imbalance).
Núcleo A (topo vazio)
Não tem partículas e termina os cálculos em instantes, ficando ocioso.
Núcleo B (fundo compactado)
Com 500.000 partículas compactadas, faz quase 80% do processamento das forças.
🐢
O mais lento dita o ritmo: a integração exige um ponto de sincronização ao fim de cada passo. O Núcleo A não avança enquanto o Núcleo B não terminar. O núcleo sobrecarregado impõe o ritmo global.
Balanceamento de carga dinâmico
Para evitar que alguns núcleos trabalhem enquanto outros ficam ociosos, aplica-se o balanceamento de carga dinâmico. Em vez de redistribuir partículas, o LIGGGHTS altera a geometria das caixas: os planos de corte das fronteiras se movem continuamente ao longo dos eixos. A caixa do Núcleo A (ocioso) cresce e engole mais partículas; a do Núcleo B encolhe para lidar com uma fatia menor e mais densa.
🎯
Objetivo: não é dividir o volume em partes iguais, mas fazer as fronteiras se adaptarem à geometria da pilha, para que todos os núcleos contenham aproximadamente o mesmo número de partículas e contatos. Com carga uniforme, todos terminam o passo juntos, a sincronização é rápida e a escalabilidade é máxima. No script, essas reavaliações são declaradas com comandos como o fix balance.