PETSc สำหรับ Dense Matrices มีประโยชน์อย่างไร


14

ทุกที่ที่ฉันเห็น PETSc tutorial / เอกสาร ฯลฯ บอกว่ามันมีประโยชน์สำหรับพีชคณิตเชิงเส้นและมักจะระบุว่าระบบจะได้ประโยชน์ สิ่งที่เกี่ยวกับเมทริกซ์หนาแน่น? ผมกังวลเกี่ยวกับการแก้x = Bสำหรับหนาแน่นAx=A

ฉันเขียนโค้ดของตัวเองสำหรับ CG และ QMR ใน Fortran สร้างพื้นฐานคือการฉีกออกจากกันรหัสเทียมและเพิ่มการปฏิบัติหน่ายเป็นไปได้ ( ddot, dnrmและdgemv) ที่มีการปรับตัวเองเล็ก ๆ น้อย ๆ สิ่งนี้จะเปรียบเทียบกับ PETSc ได้อย่างไร

ฉันรู้ว่าคำตอบที่ดีที่สุดสำหรับฉันที่จะลองด้วยตัวเอง แต่ด้วยเหตุผลของเวลาและอื่น ๆ นั่นเป็นไปไม่ได้

ความช่วยเหลือใด ๆ ที่ชื่นชมมาก

คำตอบ:


7

หากคุณมีเมทริกซ์ที่หนาแน่นที่มีโครงสร้าง (เช่นการแปลงอย่างรวดเร็ว, การเติม Schur เป็นต้น) PETSc อาจมีประโยชน์ ในกรณีเหล่านี้คุณจะไม่รวมเมทริกซ์เต็มรูปแบบ

สำหรับระบบที่มีการประกอบหนาแน่นปัจจุบัน PETSc ใช้ PLAPACK แต่การกระจายเมทริกซ์ในรูปแบบดั้งเดิมของ PETSc นั้นไม่ใช่วิธีที่ดีที่สุดในการลดการสื่อสาร (สำหรับการปฏิบัติงานส่วนใหญ่) Jack Poulson, Matt Knepley, และฉันได้พูดถึงการย้ายพีชคณิตเชิงเส้นหนาแน่นของ PETSc เพื่อใช้Elementalซึ่งเป็นห้องสมุดพีชคณิตเชิงเส้นที่หนาแน่นมากขึ้นของแจ็ค มันยังไม่เกิดขึ้น แต่เราจะทำเมื่อเรามีเวลา

ถ้าคุณต้องการไลบรารี่พีชคณิตเชิงเส้นที่มีคุณลักษณะครบถ้วนให้ใช้ Elemental มีแนวโน้มที่จะมี API ที่สมบูรณ์มากกว่าสำหรับการดำเนินการเหล่านั้นเสมอกว่า PETSc หากคุณต้องการมีปฏิสัมพันธ์กับระบบที่กระจัดกระจายหรือไม่ได้ประกอบก็น่าจะเหมาะสมที่จะใช้ PETSc และแยกสิ่งที่คุณต้องการใช้ Elemental สำหรับส่วนที่หนาแน่น (หรือช่วยเราเขียนอินเตอร์เฟส PETSc ไปยังองค์ประกอบ)


คุณจะได้รับคำตอบอะไรถ้าฉันใช้ระบบหน่วยความจำร่วม
สอบถาม

1
คุณสามารถใช้กระบวนการ MPI หลายกระบวนการหรือหลาย pthreads ฉันไม่เห็นจุดมากในการเขียนซอฟต์แวร์แบบขนานที่ใช้งานได้กับหน่วยความจำที่ใช้ร่วมกันเท่านั้นเนื่องจากโดยทั่วไปแล้วหน่วยความจำที่คุณคิดเมื่อเขียนหน่วยความจำแบบกระจายช่วยปรับปรุงประสิทธิภาพเมื่อเทียบกับการใช้งานทั้งหมด หากคุณต้องการ API "อนุกรม" ที่ใช้เธรดภายในสำหรับพีชคณิตเชิงเส้นหนาแน่นเท่านั้นคุณสามารถใช้ BLAS เธรดได้
Jed Brown

ฉันต้องการให้รหัสทำงานบนเวิร์กสเตชันหลัก Xeon 12 ของฉัน (ฉันไม่ได้ดูที่ Clusters ณ ตอนนี้) ฉันใช้ Intel MKL สำหรับ BLAS (เธรด) คุณยังแนะนำให้ฉันลอง PETSc หรือไม่
สอบถาม

หากสิ่งที่คุณต้องการคือ BLAS คุณมีความสุขกับมันและคุณได้เขียนโค้ดแล้วใช้มัน หากคุณต้องการความยืดหยุ่นมากขึ้นและ / หรือโอกาสในการใช้หน่วยความจำแบบกระจายคุณอาจต้องการ PETSc
Jed Brown

ความยืดหยุ่นในแง่ของ? หน่วยความจำแบบกระจาย?
สอบถาม

5

O(n3)O(n2)

เนื่องจากคุณพูดถึงว่าคุณอยู่ในระบบหน่วยความจำที่ใช้ร่วมกันฉันจะแนะนำlibFLAMEและ / หรือPLASMAแต่ฉันไม่คิดว่าจะเร็วกว่า BLAS ของเธรดของผู้ขายอย่างมากสำหรับการดำเนินการระดับ 1 และระดับ 2 ของคุณ

Jed แนะนำElementalซึ่งฉันเกิดขึ้นเพื่อพัฒนา แต่ฉันจะเน้นอีกครั้งว่าการดำเนินงานระดับ 1 และระดับ 2 ไม่ใช่จุดสนใจหลักของไลบรารีพีชคณิตเชิงเส้นขนานหนาแน่น ฉันไม่เคยเปรียบเทียบมาตรฐานตามปกติ


ดังนั้นจากสิ่งที่ฉันได้รับห้องสมุดพีชคณิตเชิงเส้นขนานที่ตามมาทุกอันจะพยายามปรับการทำงานให้เหมาะสมเช่นการคำนวณไอเกนเวคเตอร์การแก้ปัญหาของระบบมากกว่า BLAS นอกจากนี้องค์ประกอบดูน่าประทับใจจริงๆ แน่นอนฉันจะให้มันทำงานเมื่อฉันสามารถ
สอบถาม

โดยทั่วไปจะเพิ่มประสิทธิภาพระดับ 3 BLAS เหตุผลคือคนส่วนใหญ่ที่ใช้ห้องสมุดจะทำการคำนวณขนาดใหญ่ซึ่งโดยปกติสามารถแมปกับระดับ 3 BLAS
Jack Poulson

นั่นเป็นเพราะ BLAS 1/2 ไม่สามารถดีขึ้นได้อีกหรือ (อาจเป็นเพราะคุณสมบัติพื้นผิวต่อปริมาตร?) ข้อมูล O (N ^ 2) และการคำนวณ O (N ^ 2)?
สอบถาม

เป็นเพราะ BLAS 1 และ 2 เป็นคำที่มีลำดับต่ำกว่าในการคำนวณ 'เกม' ทั้งหมดของพีชคณิตเชิงเส้นที่มีความหนาแน่นสูงที่มีประสิทธิภาพสูงคือการเหล่ในทุกการดำเนินการในวิธีที่ถูกต้องเพื่อให้คุณสามารถเรียก xGEMM และเพื่อน ๆ ได้มากที่สุดเท่าที่จะทำได้
Jack Poulson

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