Làm thế nào để giải quyết vấn đề cơ thể n hấp dẫn song song?


25

Làm thế nào để giải quyết vấn đề cơ thể n hấp dẫn song song bằng số?

Là sự đánh đổi độ chính xác phức tạp có thể?

Làm thế nào để độ chính xác ảnh hưởng đến chất lượng của mô hình?


Bài viết này mô tả các triển khai có thể có với OpenMP.
Lão máu

Câu trả lời:


27

Có rất nhiều thuật toán; Barnes Hut là một phương pháp phổ biến và Phương pháp đa cực nhanh là một phương pháp thay thế O ( N ) phức tạp hơn nhiều .O(NlogN)O(N)

Cả hai phương pháp đều sử dụng cấu trúc dữ liệu cây trong đó các nút về cơ bản chỉ tương tác với các lân cận gần nhất của chúng ở mỗi cấp độ của cây; bạn có thể nghĩ đến việc tách cây giữa tập hợp các quy trình ở độ sâu đủ, và sau đó để chúng chỉ hợp tác ở mức cao nhất.

Bạn có thể tìm thấy một bài báo gần đây thảo luận về FMM trên các máy petascale tại đây .


2
BH, còn được gọi là mã cây, dường như được ưa thích hơn ở độ chính xác thấp. Đây là một bài báo trong đó các phương pháp được kết hợp một cách thích ứng, nhưng tôi chưa thấy công việc này trong thực tế.
Matt Knepley


8

Là một nguồn thay thế, bạn cũng có thể xem xét các phương pháp giống như Ewald dựa trên lưới. Nguồn gốc của các phương pháp "lưới hạt" (như PPPM và lưới hạt mịn Ewald) nằm trong mô phỏng các thiên hà cho vật lý thiên văn; kết nối với các khoản phí là một tác dụng phụ không chủ ý (điều đó vừa xảy ra cuối cùng đã vượt qua mức sử dụng ban đầu).

Gần đây, cũng có một số tài liệu về các phương pháp tổng hợp đa cấp gần giống với phương pháp đa cực nhanh và Barnes-Hut, nhưng có thể mang lại lợi thế trong các trường hợp khác nhau (hình học tổng quát và linh hoạt hơn, tăng hiệu quả, v.v.).


8

Đối với bài toán cơ thể hấp dẫn cổ điển , tôi nghĩ hai bài báo sau đây làm tốt công việc thảo luận về can đảm của việc thực hiện song song cho bước đánh giá lực. Mặc dù các bài viết thảo luận về việc triển khai GPU, nhưng họ làm rất tốt khi thảo luận về tính song song và cung cấp chi tiết về các thuật toán:

Bài viết này của Nyland, Harris và Prins trình bày thuật toán n-body trực tiếp trong CUDA cho GPU.

Bài báo khác của Yokota và Barba có một cuộc thảo luận tốt về thuật toán treecode và đa cực nhanh cũng trong bối cảnh điện toán GPU

Các câu hỏi của bạn về tính chính xác của mô phỏng số n-body có liên quan nhiều hơn một chút và có rất nhiều chi tiết quan trọng mà một câu trả lời có thể sinh ra một vài cuốn sách. Tôi nghĩ rằng tốt nhất nên làm là cung cấp cho bạn một vài tài liệu tham khảo. Tôi đề nghị:

Mô phỏng cơ thể N hấp dẫn của Sverre J. Aarseth

Mô phỏng máy tính sử dụng các hạt của Hockney và Eastwood. (Xin lỗi không có phiên bản pdf)


4

Nếu bạn cần một cách tiếp cận thực hiện đơn giản mà không tối ưu theo nghĩa tiệm cận, bạn có thể muốn xem xét sử dụng tất cả các hoạt động giao tiếp tập hợp. Vì mỗi cơ thể N cần biết hiệu ứng hấp dẫn của các cơ thể khác, điều quan trọng là mọi bộ xử lý phải biết toàn bộ dữ liệu. Đây là những gì tất cả các hoạt động thu thập làm. Có một cuốn sách hay: Lập trình song song bằng C với MPI và OPENMP của Michael J. Quinn (2004) thảo luận chính xác chủ đề này ở trang 82. Có thể đáng để xem xét để cho bạn bắt đầu.


3
O(n2)

Đung. Mặc dù, như tôi đã nói trước đây, đây là một triển khai dễ dàng, không nhất thiết phải là một cách hiệu quả.
Paul

+1 bằng cách nào đó tất cả các câu trả lời khác đang giả định rằng OP đang tìm kiếm hiệu suất tera hoặc petascale. FMM và akin có ý nghĩa chỉ trái ngược với các cách tiếp cận ngây thơ hơn.
Stefano M

1

Xem Google Scholar và tìm các tài liệu tham khảo về HACC và GADGET, trong số các mã khác.


2
Bạn có thể thêm một chút chi tiết về lý do tại sao bạn đề xuất HACC và GADGET không?
Paul

1
Cả hai đều là mã vũ trụ cấu hình cao bao gồm người giải quyết trọng lực.
Jeff
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.