ประสิทธิภาพของการใช้ Petsc4py กับ c / c ++ / Fortran


11

Petsc4py กับ c / c ++ / fortran ช้าเท่าไหร่?

ฉันรู้ว่ามันจะขึ้นอยู่กับรหัสที่ถูกเรียกใช้ แต่สิ่งที่เกี่ยวกับสิ่งที่ง่ายเช่นผลิตภัณฑ์ matrix-vector?

คำตอบ:


11

นี่เป็นข้อกังวลอย่างกว้างขวางในชุมชนการเขียนโปรแกรมทางวิทยาศาสตร์และฉันจะพิจารณาความไม่แน่นอนของประสิทธิภาพในการเป็นหนึ่งใน "ตำนาน" ที่สำคัญในวิทยาศาสตร์การคำนวณ

ดังที่@fcruzพูดถึงpetsc4pyเป็น wrapper ของไลบรารี PETSc ไม่ใช่การนำ PETSc มาใช้ใน Python ดังนั้นคุณสามารถคาดหวังว่าการลงโทษประสิทธิภาพจะมาจากการคัดลอกอาร์เรย์ไปยังและจาก PETSc หรือจากค่าใช้จ่ายในการเรียกรหัสไดรเวอร์ / ฟังก์ชั่นของคุณ petsc4pyมีการดำเนินการอย่างระมัดระวังและตราบใดที่คุณเข้าใจnumpyอินเทอร์เฟซอาร์เรย์หลายมิติคุณสามารถหลีกเลี่ยงการคัดลอกค่าใช้จ่าย สำหรับกรณีการใช้งานส่วนใหญ่ที่ฉันทำงานอยู่นั้นโทษประสิทธิภาพในการทำงานใน Python อยู่ที่ประมาณ 10-40% และฉันมักจะได้รับอย่างมากในรูปแบบอื่น ๆ ที่มากกว่าการชดเชยประสิทธิภาพการทำงานนี้ ในความเป็นจริงนักพัฒนา HPC Python ที่มีประสบการณ์หลายคนที่ฉันได้พูดคุยด้วยเห็นว่าความแตกต่างของประสิทธิภาพการทำงานนี้สามารถลดลงได้มากขึ้นและเมื่อ Python กำลังขับรหัสที่มีราคาแพง

petsc4pyพื้นที่เก็บข้อมูลตัวเองมีจำนวนตัวอย่างที่มีประโยชน์เพื่อแสดงให้เห็นประสิทธิภาพ / ความยืดหยุ่นในการถ่วงดุลอำนาจ ค้นหาในpetsc4pyแหล่งเก็บข้อมูลต้นฉบับสำหรับการสาธิตที่เรียกว่าperftestซึ่งแก้ไขระบบสมการไม่เชิงเส้นโดยใช้ทั้งไดรเวอร์ Python และไดรเวอร์ C (เหนือเคอร์เนล Fortran ที่มีให้ในApp.f90ไดเรกทอรีนั้น) ค่าใช้จ่ายด้านประสิทธิภาพที่นี่อยู่ที่ 10%

เป็นตัวอย่างที่เป็นรูปธรรมฉันเป็นส่วนหนึ่งของทีมนักวิทยาศาสตร์ที่ทำงานกับPyClawซึ่งเป็นชุดซอฟต์แวร์ที่เชื่อมต่อกับ PETSc สำหรับการจัดการกริดแบบขนานและเมล็ด Fortran แบบดั้งเดิมสำหรับการแก้ปัญหา Riemann บนอินเตอร์เฟสของเซลล์ เราดำเนินการศึกษาอย่างรอบคอบเป็นธรรมของการเสื่อมประสิทธิภาพจากการเปลี่ยนไปจากคนขับ Fortran และคุณสามารถเห็นผลลัพธ์ในด้านล่างของหน้า 5 ในตารางที่ 1 ในกระดาษประชุม ในกรณีของเราเราทำการแลกเปลี่ยนประสิทธิภาพแบบ on-core เล็กน้อยเพื่อความสามารถในการเชื่อมต่อโค้ดของเรากับ PETSc และ Fortran และทำงานได้อย่างมีประสิทธิภาพในแบบคู่ขนานกับแกนหลักหมื่น


ฉันยังมีความกังวลที่คล้ายกัน wrt รหัสไม่มีโครงสร้างขนาดเล็ก PETSc ให้โครงสร้างข้อมูลและตัวแก้ปัญหาเท่านั้น แต่ฉันยังต้องอ่านในตาข่าย (มากถึง 4GB ไฟล์), พาร์ทิชัน, การสร้างการแมป, วนรอบองค์ประกอบ, การคำนวณเมทริกซ์ความแข็งในท้องถิ่น (องค์ประกอบ) เป็นต้นก่อนที่ PETSc สามารถรวบรวมและแก้ปัญหา . หลามจะไม่ช้าลงสำหรับสิ่งที่ไม่เกี่ยวข้องกับ PETSc นี้โดยเฉพาะ I / O การแมปและการคำนวณระดับองค์ประกอบ เพราะส่วนที่เหลือของรหัสนั้นง่ายมากเลยล่ะค่ะ
stali

การคำนวณระดับองค์ประกอบมักจะส่งผ่านเป็นเคอร์เนล (ดูApp.f90แหล่งที่มาperftest) ไม่มีความแตกต่างของประสิทธิภาพใน I / O คุณดูFEniCSสำหรับแพ็คเกจระดับสูงกว่านี้หรือไม่?
Aron Ahmadia

คุณพูดถูก ฉันได้ความคิด แต่ในกรณีเฉพาะของฉันมีเมล็ดดังกล่าวจำนวนมาก (ฟังก์ชั่นรูปร่างสำหรับองค์ประกอบที่แตกต่างกันการคำนวณระดับองค์ประกอบการแมป ฯลฯ ) ซึ่งประมาณ 90% ของรหัส ฉันดู Fenics สักพักแล้วและมีรายละเอียดมากมายเช่นการจัดการกับตาข่ายภายนอกและการจัดเก็บภาษี BC ฯลฯ ไม่ชัดเจนเลยเมื่อมองแวบแรกหรือดูซับซ้อนกว่า (อย่างน้อยสำหรับฉัน) นอกจากนี้ฉันใช้ Fortran ซึ่งค่อนข้างตรงไปตรงมาเพื่อใช้ (รับเอกสาร PETSc ยอดเยี่ยม) สำหรับ CS ที่ไม่ใช่คนอย่างฉัน ฉันคิดว่ามันง่ายกว่างูหลาม :) สำหรับงานของฉัน
stali

7

Petsc4py เป็นอีกวิธีหนึ่งในการยอมรับ PETSc แต่จาก pythonหรือเหมือนกับที่กล่าวไว้ว่า Petsc4py ให้การเชื่อมเพื่อให้จาก python คุณสามารถเข้าถึงโครงสร้างข้อมูลและรูทีนของ PETSc และลดความพยายามในการพัฒนา PDE แบบขนาน (ขนาดนั้น)

PETSc ให้ abstractions หลายระดับแก่นักแก้ปัญหาของพวกเขาและคุณยังสามารถใช้ PETSc เพื่อสร้างตัวแก้ปัญหาของคุณเอง ในระดับต่ำสุดของซอฟต์แวร์ที่เป็นนามธรรม PETSc ใช้ BLAS, LAPACK และ MPI และที่ดีที่สุดมันจะเร็วพอ ๆ กับการใช้งานเหล่านี้

ตอนนี้ Pets4py ใช้ cython เพื่อสร้างการเชื่อมโยงกับ PETSc ค่าใช้จ่ายในการใช้ cython นั้นสัมพันธ์กับการคำนวณจำนวนมากที่ทำจาก PETSc หากคุณใช้ตัวแก้ PDE ระดับสูงจาก PETSc ค่าโสหุ้ยควรจะเล็กพอที่คุณไม่จำเป็นต้องกังวล

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.