Yerçekimi n-vücut problemi paralel olarak nasıl çözülebilir?


Yanıtlar:


27

Çok çeşitli algoritmalar var; Barnes Hut popüler bir yöntemidir ve Hızlı Çoklu Kutup Yöntemi çok daha sofistike bir O ( N ) alternatifidir.O(N-günlükN-)O(N-)

Her iki yöntem de, düğümlerin temel olarak yalnızca ağacın her bir seviyesindeki en yakın komşularıyla etkileşime girdiği bir ağaç veri yapısını kullanır; ağacı kümeleri arasında yeterli derinlikte bölmeyi ve sonra sadece en üst düzeyde işbirliği yapmayı düşünebilirsiniz.

Petastagram makinelerinde FMM ile ilgili son makaleleri burada bulabilirsiniz .


2
Ağaç kodu olarak da adlandırılan BH, düşük doğrulukta tercih edilebilir gibi görünüyor. Yöntemlerin uyarlanabilir bir şekilde birleştirildiği bir makale var, ancak bu çalışmayı pratikte henüz görmedim.
Matt Knepley


8

Alternatif bir kaynak olarak, meş tabanlı Ewald benzeri yöntemlere de bakabilirsiniz. "Parçacık ağı" yöntemlerinin (PPPM ve düzleştirilmiş parçacık ağı Ewald gibi) oluşması astrofizik için gökadaların simülasyonunda yatmaktadır; Masraflara olan bağlantı istenmeyen bir yan etkiye yol açıyordu (en sonunda orijinal kullanımı geçiyordu).

Daha yakın zamanlarda, hızlı çok kutuplu yöntemlere ve Barnes-Hut'a ruhu olan çok düzeyli toplama yöntemleriyle ilgili bazı literatürler de var , ancak farklı koşullarda avantajlar sunabilir (daha genel ve esnek geometriler, bazı verimlilik kazanımları, vb.).


8

İçin klasik yerçekimsel n-beden problemi , şu iki kağıtları kuvvet değerlendirme aşaması için paralel uygulama cesareti tartışırken iyi bir iş yaptığımızı düşünüyoruz. Makaleler bir GPU uygulamasını tartışmasına rağmen, paralelliğin tartışılmasında ve algoritmaların ayrıntılarının sağlanmasında iyi bir iş çıkarır:

Nyland, Harris ve Prins tarafından yayınlanan bu makale , GPU'lar için CUDA'da doğrudan n-vücut algoritmasını sunmaktadır.

Yokota ve Barba'nın bu diğer makalesi , GPU-hesaplama bağlamında da ağaç kodu ve hızlı çoklu kutup algoritması hakkında iyi bir tartışma yürütüyor.

N-vücut sayısal simülasyonlarının doğruluğu hakkındaki sorularınız biraz daha fazla ve bir cevabı birkaç kitapta ortaya çıkarabilecek kadar önemli detaylar var. Bence yapılacak en iyi şey birkaç kitap referansı vermek. Öneririm:

Gravitasyonel N-vücut Simülasyonları , Sverre J. Aarseth

Hockney ve Eastwood'un parçacıklarını kullanarak bilgisayar simülasyonları . (Üzgünüz pdf sürümü yok)


4

Asimptotik anlamda en uygun olmayan basit bir uygulama yaklaşımına ihtiyacınız varsa, tüm toplama iletişim işlemlerini kullanmayı düşünebilirsiniz. N bedenlerinin her biri diğer bedenlerin yerçekimi etkisini bilmesi gerektiğinden, her işlemcinin tüm veri setini bilmesi önemlidir. Bütün toplanma işlemlerinin yaptığı şey budur. İyi bir kitap var: Bu konuyu tam olarak sayfa 82'de tartışan Michael J. Quinn (2004) tarafından MPI ve OPENMP ile C'de Paralel Programlama. Size bir başlangıç ​​yapmaya değebilir.


3
O(n2)

Bu doğru. Daha önce de söylediğim gibi, bu mutlaka verimli bir uygulama değil, kolay bir uygulama.
Paul

Bir şekilde +1, diğer tüm cevaplar, OP'nin tera veya petascale performansı aradığını varsayıyor. FMM ve akın yalnızca daha naif yaklaşımlara karşı mantıklı geliyor.
Stefano M

1

Google Akademik’e bakın ve diğer kodların yanı sıra HACC ve GADGET’e referanslar arayın.


2
HACC ve GADGET'i neden önerdiğiniz konusunda biraz daha ayrıntı ekleyebilir misiniz?
Paul

1
Her ikisi de, yerçekimi çözücüleri içeren yüksek profilli kozmoloji kodlarıdır.
Jeff,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.