Boost :: mpi hoặc C MPI cho các ứng dụng khoa học hiệu suất cao?


16

Điều tôi không thích nhất ở MPI là xử lý các kiểu dữ liệu (tức là bản đồ dữ liệu / mặt nạ) vì chúng không phù hợp với điều đó với C ++ hướng đối tượng. boost::mpichỉ hỗ trợ MPI 1.1, tuy nhiên, từ trang web của họ:

boost :: mpi là giao diện thân thiện với C ++ với Giao diện chuyển tin nhắn tiêu chuẩn, Boost Boost.MPI có thể xây dựng các kiểu dữ liệu MPI cho các loại do người dùng xác định bằng thư viện Boost.Serialization

Có ai có kinh nghiệm boost::mpivề tính toán khoa học nghiêm túc không? Bạn muốn giới thiệu nó? Bạn đã có bất kỳ vấn đề nào (vấn đề mở rộng, vấn đề trình biên dịch, lỗi, không được triển khai các tính năng, sự cần thiết của một số tính năng mpi 2.2)?

Bạn có thể nhận xét về việc sử dụng boost::mpithay vì sử dụng triển khai MPI C từ C ++ không? Bạn có thể kết hợp cả hai (sử dụng boost :: mpi khi bạn có thể, C-MPI ở nơi khác) không?

Bạn có biết bất kỳ mã khoa học lớn sử dụng boost::mpi?


Bạn cũng nên xem trang này boost.org/doc/libs/1_50_0/doc/html/mpi/iêu để đảm bảo rằng tất cả các chức năng mà bạn cần đều được hỗ trợ. Khả năng tự thực hiện chúng cũng nên được xem xét.
Alexander

1
Lý do tốt nhất tôi có thể nghĩ đến để sử dụng Boost :: MPI là nó hỗ trợ tự động hóa các loại C ++. Giao diện MPI C không thể tự làm điều này và bạn sẽ phải tạo các kiểu dữ liệu MPI cho tất cả các đối tượng C ++ của mình để truyền chúng qua Send / Recv, v.v., trừ khi bạn muốn tự thực hiện tuần tự hóa bằng một số phương tiện khác.
Jeff

Giao diện MPI Elemental (libelemental.org) ( github.com/elemental/Euityal/blob/master/src/core/imports/ trộm ) thực hiện phát hiện loại tự động theo cách thanh lịch. Tuy nhiên, nó không cố gắng thực hiện nhiều điều mà Boost :: MPI làm.
Jeff

Câu trả lời:


13

Tôi đã luôn nghĩ rằng chúng ta nên sử dụng nó trong dự án của riêng mình, deal.II, bởi vì nó ở cấp độ cao hơn MPI thuần túy và có thể lưu một vài dòng mã ở đây và đó. Điều đó nói rằng, những gì tôi đã học được trong nhiều năm qua là hầu hết các mã cấp cao không thực sự có nhiều mã MPI để bắt đầu - 600.000 dòng mã trong thỏa thuận.II chỉ có ~ 50 cuộc gọi đến MPI. Điều đó chắc chắn ít hơn nhiều so với một gói như PETSc, nhưng tôi nghĩ rằng tuy nhiên hầu hết các mã đều có ít cuộc gọi MPI hơn so với mong đợi lúc đầu và do đó, lợi ích của việc sử dụng thứ gì đó ở mức cao hơn không phải là một có thể nghĩ ngay từ cái nhìn đầu tiên

Điều này sau đó sôi nổi là để bạn xem xét sự đánh đổi là gì. Bạn sẽ cần bao nhiêu MPI để sử dụng và mức độ đó so với nỗ lực bổ sung cần thiết để xây dựng và liên kết với một thư viện bên ngoài.


6

Theo như tôi biết, boost::mpichỉ là một c++trình bao bọc xung quanh CAPI. Như vậy, bạn sẽ có thể sử dụng boost::mpivà chuyển sang CAPI bất cứ khi nào một số chức năng không được triển khai. Thật vậy, từ trang web của họ:

Các tóm tắt mỏng trong Boost.MPI cho phép một người dễ dàng kết hợp nó với các cuộc gọi đến thư viện C MPI bên dưới.

Tôi đã không sử dụng nó cho mình và không biết về một thư viện lớn nào, nhưng tôi hy vọng nó chỉ là một trình bao bọc nhẹ và vì vậy không nên lo lắng về hiệu suất so với CAPI.


2
Boost :: MPI là một trình bao bọc xung quanh một tập hợp con của MPI; như tôi nhớ, nó chỉ hỗ trợ MPI 1.2, khác xa so với các tiêu chuẩn MPI-2.2 hoặc MPI-3 về mặt tôi.
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.