Como o problema gravitacional do corpo-n pode ser resolvido em paralelo?


Respostas:


27

Existe uma grande variedade de algoritmos; O Barnes Hut é um método popular de , e o Método Multipolar Rápido é uma alternativa de O ( N ) muito mais sofisticada .O(NregistroN)O(N)

Ambos os métodos usam uma estrutura de dados da árvore em que os nós interagem apenas com os vizinhos mais próximos em cada nível da árvore; você pode pensar em dividir a árvore entre o conjunto de processos a uma profundidade suficiente e depois fazê-los cooperar apenas nos níveis mais altos.

Você pode encontrar um artigo recente discutindo o FMM em máquinas de escala peta aqui .


2
BH, também chamado de código de árvore, parece ser preferível com baixa precisão. Aqui está um artigo em que os métodos são combinados de forma adaptativa, mas ainda não vi esse trabalho em prática.
precisa saber é o seguinte


8

Como fonte alternativa, você também pode procurar métodos semelhantes a Ewald baseados em malha. A gênese dos métodos de "malha de partículas" (como PPPM e malha de partículas suavizada Ewald) reside em simulações de galáxias para astrofísica; a conexão com as cobranças foi um efeito colateral não intencional (que acabou por ultrapassar o uso original).

Mais recentemente, também tem havido alguma literatura sobre métodos de soma multinível, semelhantes aos métodos multipolares rápidos e ao Barnes-Hut, mas podem oferecer vantagens em diferentes circunstâncias (geometrias mais gerais e flexíveis, alguns ganhos de eficiência etc.).


8

Para o problema gravitacional clássico dos corpos n , acho que os dois artigos a seguir fazem um bom trabalho ao discutir os ângulos da implementação paralela para a etapa de avaliação da força. Embora os documentos discutam uma implementação de GPU, eles fazem um bom trabalho ao discutir o paralelismo e fornecem detalhes dos algoritmos:

Este artigo de Nyland, Harris e Prins apresenta o algoritmo direto n-body em CUDA para GPUs.

Este outro artigo de Yokota e Barba tem uma boa discussão sobre o código de árvore e o algoritmo multipolar rápido também no contexto da computação em GPU

Suas perguntas sobre a precisão das simulações numéricas de n corpos são um pouco mais envolvidas e há tantos detalhes importantes que uma resposta pode gerar vários livros. Acho que o melhor a pensar é fornecer algumas referências de livros. Eu sugiro:

Simulações gravitacionais de corpo N por Sverre J. Aarseth

Simulações em computador usando partículas de Hockney e Eastwood. (Desculpe, não versão em pdf)


4

Se você precisar de uma abordagem de implementação simples que não seja ideal no sentido assintótico, convém considerar o uso de operações de comunicação de coleta completa. Como cada um dos N corpos precisa conhecer o efeito gravitacional dos outros corpos, é importante que todo processador conheça todo o conjunto de dados. É isso que as operações de coleta completa fazem. Há um bom livro: Programação Paralela em C com MPI e OPENMP, de Michael J. Quinn (2004), que discute exatamente esse tópico na página 82. Talvez valha a pena dar uma olhada para começar.


3
O(n2)

Isso é verdade. Embora, como afirmei anteriormente, essa seja uma implementação fácil, não necessariamente eficiente.
Paul

+1 de alguma forma, todas as outras respostas estão assumindo que o OP está procurando desempenho em tera ou em escala de petas. FMM e afins fazem sentido apenas em oposição a abordagens mais ingênuas.
Stefano M

1

Veja o Google Scholar e procure referências ao HACC e GADGET, entre outros códigos.


2
Você poderia adicionar um pouco mais de detalhes sobre o motivo pelo qual recomenda o HACC e o GADGET?
Paul

1
Ambos são códigos de cosmologia de alto perfil que incluem solucionadores de gravidade.
Jeff Jeff
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.