คำถามติดแท็ก mpi

5
ผู้ใช้ต้องการคุณลักษณะอะไรบ้างจากอินเทอร์เฟซ MPI C ++
เวอร์ชัน 3.0 ของมาตรฐาน MPI ลบอินเตอร์เฟส C ++ อย่างเป็นทางการ (ก่อนหน้านี้เลิกใช้แล้ว) ในขณะที่การใช้งานอาจยังคงสนับสนุนคุณสมบัติที่ใหม่ใน MPI-3 ไม่มีอินเตอร์เฟส C ++ ที่กำหนดในมาตรฐาน MPI ดูhttp://blogs.cisco.com/performance/the-mpi-c-bindings-what-happened-and-why/สำหรับข้อมูลเพิ่มเติม แรงจูงใจในการลบอินเทอร์เฟซ C ++ ออกจาก MPI คือมันไม่มีค่าใดที่มีนัยสำคัญเหนืออินเตอร์เฟส C มีความแตกต่างน้อยมากนอกเหนือจาก "s / _ / :: / g" และคุณลักษณะหลายอย่างที่ผู้ใช้ C ++ ไม่คุ้นเคยเคยใช้ (เช่นการกำหนดประเภทอัตโนมัติผ่านเทมเพลต) ในฐานะที่เป็นคนที่มีส่วนร่วมในฟอรัม MPI และทำงานกับโปรเจ็กต์ C ++ จำนวนมากที่ใช้อินเทอร์เฟซ C ++ ของตัวเองกับฟังก์ชั่น MPI C ฉันต้องการทราบว่าคุณลักษณะที่พึงประสงค์ของอินเตอร์เฟส C …
28 c++  mpi 

3
ตัวเลือก Parallel I / O โดยเฉพาะ HDF5 แบบขนาน
ฉันมีแอปพลิเคชันที่สามารถทำให้ขนานกันเล็กน้อย แต่ประสิทธิภาพของมันคือขอบเขต I / O ขนาดใหญ่ แอปพลิเคชันอ่านอาร์เรย์อินพุตเดียวที่เก็บอยู่ในไฟล์ที่โดยทั่วไปมีขนาด 2-5 GB (แต่ฉันคาดว่าจำนวนนี้จะเพิ่มขึ้นในอนาคต) การคำนวณทั่วไปใช้การดำเนินการเดียวกันกับแต่ละแถวหรือคอลัมน์ของอาร์เรย์นั้น สำหรับการทำงานหนักของ CPU ฉันได้รับการปรับขนาดที่ดีมากถึงโปรเซสเซอร์ 100 ตัว แต่สำหรับการดำเนินการที่ช้าลง I / O และการสื่อสารที่เกี่ยวข้อง (การเข้าถึง NFS) นั้นครองและฉันไม่สามารถใช้ตัวประมวลผลได้อย่างมีประสิทธิภาพ ตัวเลือกใดที่มีประสิทธิภาพและพกพา (มีประสิทธิภาพในการพกพา) สำหรับสถานการณ์เช่นนี้? Parallel HDF5 ดูเหมือนว่าจะมีแนวโน้ม ไม่มีใครมีประสบการณ์ชีวิตจริงกับมันหรือไม่? MPI-I / O จะเป็นสิ่งที่ควรพิจารณาหรือไม่ มันสามารถทำงานได้อย่างมีประสิทธิภาพกับรูปแบบไฟล์ที่กำหนดหรือฉันต้องปรับทุกอย่าง?

2
Boost :: mpi หรือ C MPI สำหรับการใช้งานทางวิทยาศาสตร์ที่มีประสิทธิภาพสูง?
สิ่งที่ฉันไม่ชอบมากที่สุดเกี่ยวกับ 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 ++ ได้หรือไม่? คุณสามารถรวมทั้งสอง …
16 hpc  c++  mpi 

1
วิธีเรียกใช้ MPI-3.0 ในโหมดหน่วยความจำที่แชร์เช่น OpenMP
ฉันกำลังโค้ดแบบขนานเพื่อแก้ตัวเลขแบบจำลองสมดุลประชากร 5 มิติ ขณะนี้ฉันมีรหัส MPICH2 ที่ดีมากใน FORTRAN แต่เมื่อเราเพิ่มค่าพารามิเตอร์อาร์เรย์จะใหญ่เกินไปที่จะทำงานในโหมดหน่วยความจำแบบกระจาย ฉันสามารถเข้าถึงคลัสเตอร์ที่มี 15 โหนดโดยที่แต่ละโหนดมี CPU หลัก 8 ตัวและ RAM ขนาด 128GB ฉันต้องการเขียนเรียกใช้โปรแกรมด้วย MPI-3.0 ในโหมดหน่วยความจำที่ใช้ร่วมกันเพื่อให้แต่ละกระบวนการไม่สร้างสำเนาของแต่ละอาร์เรย์ขึ้นมาเอง ก่อนที่ฉันจะรันอะไรก็ได้ในคลัสเตอร์ฉันต้องทดสอบบนเดสก์ท็อปที่ใช้ Ubuntu มันคือเบลดหนึ่งคลัสเตอร์ที่มี CPU 8 คอร์สองตัวและ RAM ขนาด 128 GB ฉันจะเขียนและทดสอบรหัสของฉันบนมันดังนั้นโปรดส่งคำตอบของคุณไปยังโปรแกรมที่ทำงานบนคอมพิวเตอร์ Ubuntu ฉันได้อ่านแล้วว่ามีวิธีเรียกใช้ MPI-3.0 ในโหมดหน่วยความจำที่ใช้ร่วมกันเช่น OpenMP แทนที่จะเป็นโหมดหน่วยความจำเริ่มต้นแบบกระจาย คำถาม: ฉันจะเปลี่ยนรหัสได้อย่างไร ฉันต้องเพิ่มการเรียกไปยังฟังก์ชั่น MPI อื่นMPI_WIN_ALLOCATEหรือไม่? ฉันจะรวบรวมรหัสของฉันเพื่อเรียกใช้ MPI-3.0 ในโหมดหน่วยความจำที่ใช้ร่วมกันได้อย่างไร สิ่งนี้จะแตกต่างกันหรือไม่หากมีหลายโหนด โปรดให้สคริปต์การรวบรวมตัวอย่างถ้าคุณทำได้ ฉันมีคอมไพเลอร์ GNU …

4
คำแนะนำใด ๆ สำหรับกรอบการทดสอบหน่วยเข้ากันได้กับรหัส / ไลบรารีที่ใช้ MPI
โดยปกติฉันเขียนรหัสซีเรียลและเมื่อฉันฉันเขียนการทดสอบหน่วยด้วยกรอบการทดสอบแบบ xUnit (MATLAB xUnit, PyUnit / nose หรือกรอบการทดสอบ C ++ ของ Google) จากการค้นหาโดยคร่าวๆของ Google ฉันไม่เห็นว่าโค้ดทดสอบหน่วยผู้ปฏิบัติงานที่ใช้ MPI มากน้อยเพียงใด มีวิธีปฏิบัติที่ดีที่สุดสำหรับสิ่งนั้นหรือไม่? เปรียบเทียบกับกลยุทธ์สำหรับการทดสอบหน่วยและการพัฒนาที่ขับเคลื่อนด้วยการทดสอบฉันกำลังมองหาคำตอบที่เกี่ยวข้องกับซอฟต์แวร์ที่ฉันควรใช้สำหรับกรอบการทดสอบ (ถ้ามี) คำตอบอาจเป็น "ม้วนรหัสของคุณเอง" ซึ่ง ตัวอย่างกรณีของรหัสการทดสอบที่กำหนดเองจะเป็นประโยชน์) สิ่งที่ฉันกำลังมองหาเพื่อทดสอบส่วนใหญ่คือการประเมินฟังก์ชั่นทางด้านขวาและกิจวัตรประจำวันของ Jacobian matrix สำหรับเวลาที่จะรวม PDEs แบบกึ่งแยกส่วน ฉันจะใช้ PETSc ดังนั้นถ้ามีอะไรเฉพาะ PETSc ที่จะเป็นประโยชน์นอกเหนือไปจากกรอบการทดสอบทั่วไปมากขึ้น ชี้แจงการแก้ไข: ตัวอย่างจะอยู่ใน${PETSC_DIR}/src/ts/examples/tutorials/ex2.cที่ที่ฉันต้องการทดสอบบางสิ่งเช่นRHSFunction(การประเมินฟังก์ชั่นด้านขวา) และRHSJacobian(การประเมินเมทริกซ์จาโคเบียน) ฉันจะทดสอบกับค่าที่ทราบสำหรับด้านขวาที่ประกอบและเมทริกซ์ Jacobian ที่ประกอบขึ้น ฉันสามารถรับค่าเหล่านี้ในเชิงวิเคราะห์สำหรับอินสแตนซ์ปัญหาง่ายๆ ฟังก์ชั่นเหล่านี้เป็นฟังก์ชั่นเฉพาะแอปพลิเคชันที่จะไม่ใช้งานฟังก์ชั่นระดับแอปพลิเคชันอื่น ๆ แต่พวกเขาสามารถเรียก MPI ถ้าการประกอบเวกเตอร์หรือเมทริกซ์จะทำภายในฟังก์ชัน (เช่นในตัวอย่าง PETSc ที่เชื่อมโยงด้านบน) …

2
ต้นทุนการคำนวณของการดำเนินงาน mpi_allgather เปรียบเทียบกับการดำเนินการรวบรวม / กระจายอย่างไร
ฉันกำลังทำงานกับปัญหาที่สามารถทำให้ขนานได้โดยใช้การดำเนินงาน mpi_allgather เดียวหรือหนึ่ง mpi_scatter และหนึ่งการดำเนินงาน mpi_gather การดำเนินการเหล่านี้จะถูกเรียกภายในวงขณะที่ดังนั้นพวกเขาอาจจะเรียกหลายครั้ง ในการนำไปใช้กับรูปแบบ MPI_allgather ฉันกำลังรวบรวมเวกเตอร์แบบกระจายสู่กระบวนการทั้งหมดสำหรับการแก้เมทริกซ์ที่ซ้ำกัน ในการใช้งานอื่น ๆ ฉันรวบรวมเวกเตอร์ที่กระจายไปยังโปรเซสเซอร์เดียว (โหนดรูท) แก้ไขระบบเชิงเส้นบนโปรเซสเซอร์นี้จากนั้นกระจายเวกเตอร์โซลูชันกลับสู่กระบวนการทั้งหมด ฉันอยากรู้ว่าค่าใช้จ่ายในการดำเนินการของตัวรวบรวมทั้งหมดมากกว่าการกระจายและรวมการปฏิบัติการเข้าด้วยกันอย่างมีนัยสำคัญหรือไม่ ความยาวของข้อความมีบทบาทสำคัญในความซับซ้อนหรือไม่ มันแตกต่างกันระหว่างการใช้งานของ MPI หรือไม่ แก้ไข:

3
วิธีการแสดงข้อมูลเหตุการณ์ในการค้นหาปัญหาด้านประสิทธิภาพ
ฉันพยายามเพิ่มประสิทธิภาพแอปพลิเคชั่น MPI ด้วยรูปแบบการสื่อสารแบบอะซิงโครนัสสูง แต่ละอันดับมีรายการสิ่งที่ต้องคำนวณและส่งข้อความตามที่จำเป็นหากอินพุตหรือเอาต์พุตอยู่ในอันดับที่แตกต่างกัน นอกจากนี้แต่ละระดับจะถูกเธรด (ปัจจุบันมีหนึ่งเธรดการสื่อสารและ 5 คนงาน) ฉันใช้รหัสกับตัวจับเวลาเกี่ยวกับประสิทธิภาพของส่วนต่าง ๆ ของรหัสซึ่งให้รายการของฉัน (เริ่มต้นสิ้นสุดประเภท) อเนกประสงค์สำหรับแต่ละเธรด พล็อตด้วยวิธีที่ชัดเจนโดยมีเวลาเป็นแกนนอนอันดับและเธรดเป็นแนวตั้งและสีที่ระบุว่าแต่ละเธรดกำลังทำอะไรฉันได้รับภาพเช่นนี้สำหรับ 16 อันดับด้วย 6 เธรด / อันดับ: คำถามของฉันคือ: วิธีอื่นในการแสดงข้อมูลนี้ที่อาจช่วยแก้ไขปัญหาด้านประสิทธิภาพคืออะไร ใครบ้างที่มีพล็อตประเภทโปรดที่พวกเขาใช้เมื่อทำโปรไฟล์แอปพลิเคชันแบบอะซิงโครนัส? ชุดข้อมูลนี้มีข้อ จำกัด ในการที่ไม่ทราบว่าโครงสร้างดาต้าโฟลว์ แต่ฉันต้องการทำความเข้าใจให้มากที่สุดก่อนที่จะพยายามรวบรวมสิ่งที่ซับซ้อนมากขึ้น รูปภาพที่ไม่มีการบีบอัดอยู่ที่นี่ในกรณีที่ทุกคนต้องการมองไปรอบ ๆ (ไม่สามารถอัพโหลดผ่านเส้นทางปกติ) น่าเสียดาย Firefox ไม่ยอมรับแม้ว่าฉันจะเชื่อว่ามันถูกต้องอาจเป็นเพราะมันใหญ่เกินไป

2
ค่าใช้จ่ายในการสื่อสารในซูเปอร์คอมพิวเตอร์
ฉันกำลังมองหาแหล่งอ้างอิงที่น่าเชื่อถือระบุว่าซูเปอร์คอมพิวเตอร์ใช้ทรัพยากรในการประสานงานกับงานที่เกี่ยวข้องกับงานจริงมากเพียงใด ทรัพยากรอาจเป็นพลังการประมวลผลที่ใช้ได้ แต่แม้แต่ Watts ก็ดูเหมือนหน่วยที่ใช้ได้ ฉันเชื่อว่าหนึ่งในอาจารย์หรือหนังสือของฉันเคยกล่าวไว้ว่าในระบบคู่ขนานขนาดใหญ่พลังการประมวลผลที่มีอยู่มากถึงครึ่งหนึ่งใช้ในการประสานงานและการส่งข้อความ น่าเสียดายที่ฉันไม่สามารถหาข้อมูลอ้างอิงนี้หรือเนื้อหาอื่น ๆ เกี่ยวกับสัดส่วนนี้ ฉันรู้ว่าสิ่งนี้จะแตกต่างกันมากขึ้นอยู่กับสถาปัตยกรรมซูเปอร์คอมพิวเตอร์และการนำไปใช้งานที่ทันสมัยอาจมีประสิทธิภาพมากขึ้นในเรื่องนี้ดังนั้นภาพรวมของการวัดนี้ในสถาปัตยกรรมหรือวิวัฒนาการหลาย ๆ อย่าง (ก่อนและหลังฮาร์ดแวร์ส่งข้อความเฉพาะ)
10 hpc  mpi 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.