Respostas:
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 .
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 .
Veja o método multipolar rápido . É altamente escalável e . Permite negociar entre precisão e custo. Aqui está um exemplo em que ele é executado em 42 Tflops em um cluster de GPU .
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.).
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)
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.