Boost :: mpi หรือ C MPI สำหรับการใช้งานทางวิทยาศาสตร์ที่มีประสิทธิภาพสูง?


16

สิ่งที่ฉันไม่ชอบมากที่สุดเกี่ยวกับ MPI คือการจัดการกับประเภทข้อมูล (เช่น data maps / masks) เพราะมันไม่เหมาะกับ object เชิง C ++ boost::mpiอย่างไรก็ตามรองรับ MPI 1.1 จากเว็บไซต์ของพวกเขาเท่านั้น:

boost :: mpi เป็นอินเทอร์เฟซที่ใช้งานง่ายของ C ++ ไปยังอินเตอร์เฟสการส่งข้อความมาตรฐาน… Boost.MPI สามารถสร้างประเภทข้อมูล MPI สำหรับประเภทที่ผู้ใช้กำหนดโดยใช้ไลบรารี Boost.Serialization

มีใครมีประสบการณ์เกี่ยวกับboost::mpiการคำนวณทางวิทยาศาสตร์อย่างจริงจังบ้างไหม? คุณจะแนะนำหรือไม่ คุณเคยมีปัญหาใด ๆ (ปัญหาการปรับขนาด, ปัญหาคอมไพเลอร์, ข้อผิดพลาด, คุณสมบัติที่ไม่ได้ใช้งาน, ความต้องการคุณสมบัติ MPi 2.2 บางส่วน) หรือไม่?

คุณสามารถแสดงความคิดเห็นเกี่ยวกับการใช้boost::mpiแทนการใช้ MPI C จาก C ++ ได้หรือไม่? คุณสามารถรวมทั้งสอง (ใช้เพิ่ม :: mpi เมื่อคุณสามารถ C-MPI ที่อื่น)?

คุณรู้รหัสทางวิทยาศาสตร์ขนาดใหญ่ที่ใช้boost::mpiหรือไม่?


คุณควรดูที่หน้านี้boost.org/doc/libs/1_50_0/doc/html/mpi/…เพื่อให้แน่ใจว่ารองรับฟังก์ชั่นทั้งหมดที่คุณต้องการ ควรพิจารณาถึงความเป็นไปได้ที่จะนำไปใช้ด้วยตนเอง
อเล็กซานเด

1
เหตุผลที่ดีที่สุดที่ฉันคิดว่าจะใช้ Boost :: MPI ก็คือมันรองรับการทำให้เป็นอนุกรมประเภท C ++ โดยอัตโนมัติ อินเทอร์เฟซ MPI C ไม่สามารถทำได้ด้วยตัวเองและคุณจะต้องสร้างประเภทข้อมูล MPI สำหรับวัตถุ C ++ ทั้งหมดของคุณเพื่อส่งผ่านทาง Send / Recv เป็นต้นเว้นแต่ว่าคุณต้องการทำให้เป็นอันดับของคุณเองด้วยวิธีการอื่น
Jeff

Elemental (libelemental.org) อินเทอร์เฟซ MPI ( github.com/elemental/Elemental/blob/master/src/core/imports/… ) ทำการตรวจจับชนิดอัตโนมัติในลักษณะที่สง่างาม อย่างไรก็ตามมันไม่ได้พยายามทำหลายอย่างที่ Boost :: MPI ทำ
เจฟฟ์

คำตอบ:


13

ฉันคิดเสมอว่าเราควรใช้มันในโปรเจ็กต์ของเราเองข้อตกลง II เพราะมันเป็นระดับที่สูงกว่า MPI บริสุทธิ์และสามารถบันทึกรหัสสองสามบรรทัดได้ที่นี่ สิ่งที่ฉันได้เรียนรู้ในช่วงหลายปีที่ผ่านมาคือรหัสระดับสูงส่วนใหญ่ไม่มีรหัส MPI นั้นเริ่มต้นด้วยรหัส 600,000 บรรทัดในข้อตกลง II มีการเรียก MPI เพียง 50 ครั้งเท่านั้น แน่นอนว่าน้อยกว่าแพ็คเกจเช่น PETSc แต่ฉันคิดว่ามันเป็นความจริงที่ว่ารหัสส่วนใหญ่มีการเรียก MPI น้อยกว่าที่คาดไว้ในตอนแรกและดังนั้นประโยชน์ของการใช้สิ่งที่ระดับสูงกว่านั้นไม่ดีเท่ากับ อาจคิดได้อย่างรวดเร็วก่อน

สิ่งนี้จะทำให้คุณพิจารณาว่าอะไรคือจุดด้อยของการค้าขาย คุณต้องใช้ MPI เท่าใดและเปรียบเทียบกับความพยายามเพิ่มเติมที่จำเป็นในการสร้างและเชื่อมโยงกับไลบรารีภายนอกอย่างไร


6

เท่าที่ฉันรู้boost::mpiเป็นเพียงc++เสื้อคลุมรอบ ๆCAPI ดังนั้นคุณควรจะสามารถใช้boost::mpiและเปลี่ยนเป็นCAPI ได้เมื่อใดก็ตามที่ไม่มีการใช้งานฟังก์ชันบางอย่าง แน่นอนจากหน้าเว็บของพวกเขา:

abstractions ใน Boost.MPI อนุญาตให้หนึ่งรวมเข้ากับการเรียกไปยังไลบรารี C MPI พื้นฐานได้อย่างง่ายดาย

ฉันไม่ได้ใช้ด้วยตัวเองและไม่รู้จักกับห้องสมุดหลักที่ทำ แต่ฉันคาดหวังว่ามันจะเป็นแค่เสื้อคลุมที่มีน้ำหนักเบาและไม่ควรกังวลเกี่ยวกับประสิทธิภาพเมื่อเทียบกับCAPI


2
Boost :: MPI เป็น wrapper รอบส่วนย่อยของ MPI; ตามที่ฉันจำได้มันรองรับเฉพาะ MPI 1.2 ซึ่งเป็นหนทางไกลจากมาตรฐาน MPI-2.2 หรือ MPI-3 ตามที่ฉันต้องการ
Jeff
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.