중력의 n-body 문제를 어떻게 병렬로 해결할 수 있습니까?


답변:


27

다양한 알고리즘이 있습니다. Barnes Hut 는 널리 사용되는 방법이며 Fast Multipole Method 는 훨씬 더 복잡한 대안입니다.O(NlogN)O(N)

두 방법 모두 노드가 기본적으로 각 트리 레벨에서 가장 가까운 이웃과 만 상호 작용하는 트리 데이터 구조를 사용합니다. 프로세스 세트간에 트리를 충분한 깊이로 분할 한 다음 최상위 레벨에서만 협력하도록 생각할 수 있습니다.

페타 스케일 기계에 관한 FMM에 관한 최근 논문은 여기 에서 찾을 수 있습니다 .


2
트리 코드라고도하는 BH는 정확도가 낮은 것으로 보입니다. 여기 에 방법이 적응 적으로 결합 된 논문 이 있지만 아직이 작업을 보지 못했습니다.
Matt Knepley


8

대체 소스로서 메쉬 기반 Ewald와 유사한 방법을 볼 수도 있습니다. "입자 메쉬"방법 (PPPM 및 평활 입자 메쉬 Ewald와 같은)의 기원은 천체 물리학에 대한 은하의 시뮬레이션에있다. 청구와의 연결은 의도하지 않은 부작용이었습니다.

보다 최근에는 빠른 다중 극 방법 및 반스-헛과 유사한 다중 수준 합산 방법 에 대한 문헌 이 있지만 다른 환경 (더 일반적이고 유연한 형상, 일부 효율성 향상 등)에서 이점을 제공 할 수 있습니다.


8

위해 고전 중력 다체 문제 , 나는 다음과 같은 두 가지 서류가 힘 평가 단계에 대한 병렬 구현의 내장을 논의에서 좋은 일을 생각한다. 이 논문은 GPU 구현에 대해 설명하지만 병렬 처리에 대해 잘 알고 알고리즘에 대한 세부 정보를 제공합니다.

Nyland, Harris 및 Prins 의이 백서 는 GPU 용 CUDA의 직접적인 n-body 알고리즘을 제시합니다.

다른 종이 요코타와 BARBA로도 GPU 컴퓨팅의 맥락에서 treecode 빠른 다극 알고리즘의에 좋은 토론이있다

n-body 수치 시뮬레이션정확성에 대한 귀하의 질문은 조금 더 복잡하며 답이 여러 권의 책을 낳을 수있는 중요한 세부 정보가 많이 있습니다. 가장 좋은 방법은 몇 권의 책을 참고하는 것입니다. 나는 제안한다 :

Sverre J. Aarseth의 중력 N- 바디 시뮬레이션

Hockney와 Eastwood의 입자사용한 컴퓨터 시뮬레이션 . (죄송합니다 PDF 버전 없음)


4

점근 적 의미에서 최적이 아닌 간단한 구현 방법이 필요한 경우 전체 수집 통신 작업을 사용하는 것이 좋습니다. 각 N- 본체는 다른 신체의 중력 효과를 알아야하므로 모든 프로세서가 전체 데이터 세트를 아는 것이 중요합니다. 이것이 모든 수집 작업입니다. 좋은 책이 있습니다 : Michael J. Quinn (2004)의 MPI 및 OPENMP를 사용한 C의 병렬 프로그래밍 (2004)은이 주제에 대해 82 페이지에서 설명합니다. 시작하기 위해 살펴볼 가치가 있습니다.


3
O(n2)

사실입니다. 앞서 언급했듯이 이것은 쉬운 구현이지만 반드시 효율적인 구현은 아닙니다.
Paul

OP가 테라 또는 페타 스케일 성능을 찾고 있다고 가정하면 다른 답변은 +1입니다. FMM과 비슷한 것은 더 순진한 접근 방식에만 반대되는 의미입니다.
Stefano M

1

다른 코드 중에서도 Google Scholar를 참조하고 HACC 및 GADGET에 대한 참조를 찾으십시오.


2
HACC 및 GADGET을 권장하는 이유에 대해 좀 더 자세히 설명해 주시겠습니까?
Paul

1
그것들은 중력 솔버를 포함하는 유명한 우주론 코드입니다.
Jeff
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.