Dinâmica de N-corpos com interação gravitacional Fernanda Pereira da Cruz Benetti Tópicos em Física Computacional: Introdução à linguagem CUDA 30/06/2014 IF-UFRGS Dinâmica ● Evolução de N corpos ● Interação gravitacional entre corpo i e j: 30/06/2014 IF-UFRGS Dinâmica ● ● Aceleração de um corpo: N*N operações a cada passo de tempo 30/06/2014 IF-UFRGS Etapas do programa ● ● Gerar distribuição inicial (posição r e velocidade v para cada partícula) Iniciar evolução: Calcular forças (~N*N) ➔ Integrar equações de movimento (~N) ➔ Fazer medidas ➔ Repetir ➔ 30/06/2014 IF-UFRGS Etapas do programa ● ● Gerar distribuição inicial (posição r e velocidade v para cada partícula) Iniciar evolução: Calcular forças (~N*N) ➔ Integrar equações de movimento (~N) ➔ Fazer medidas ➔ Repetir ➔ 30/06/2014 IF-UFRGS Paralelização ● Livro (online) GPU Gems 3 da Nvidia: Fast NBody Simulation with CUDA (capítulo 31) http://http.developer.nvidia.com/GPUGems3/gpugems3_pref01.html ● Paralelização simples: 30/06/2014 ➔ Paralelo: a_i ➔ Serial: soma sobre j IF-UFRGS Paralelização ➔ Paralelo: a_i ➔ Serial: soma sobre j Soma sobre j eficiente → vetor das posições (tamanho N) na memória compartilhada Problema de memória limitada 30/06/2014 IF-UFRGS Paralelização ● ● Divide-se N*N em blocos de tamanho p*p (com p<N) Após somar sobre p, carrega-se próximo vetor posição de tamanho p, até somar sobre os N corpos 30/06/2014 IF-UFRGS Paralelização 30/06/2014 IF-UFRGS 30/06/2014 IF-UFRGS 30/06/2014 IF-UFRGS 30/06/2014 IF-UFRGS