ค่าใช้จ่ายในการคูณเมทริกซ์คืออะไร


10

การคูณเมทริกซ์ (ทั้ง Mat * Mat และ Mat * Vec) มีการปรับมาตราส่วนด้วยจำนวนที่ไม่เป็นศูนย์หรือมีขนาดของเมทริกซ์หรือไม่? หรือการรวมกันของทั้งสอง

เกี่ยวกับรูปร่าง

ตัวอย่างเช่นฉันมีเมทริกซ์ 100 x 100 พร้อม 100 ค่าในนั้นหรือเมทริกซ์ 1,000 x 1,000 ที่มี 100 ค่า

เมื่อยกกำลังสองเมทริกซ์เหล่านี้ (หรือคูณด้วยเมทริกซ์ที่คล้ายกันที่มีการกระจายแบบเดียวกัน) เป็นครั้งแรก (100x100) จะเร็วกว่าวินาที (1000x1000) หรือไม่ มันขึ้นอยู่กับว่าค่าอยู่ที่ไหน?

ถ้ามันขึ้นอยู่กับการใช้งานฉันสนใจคำตอบสำหรับ PETSc

คำตอบ:


11

ค่าใช้จ่ายของการเพิ่มจำนวนของการคูณเมทริกซ์ - เวกเตอร์เชิงเส้นด้วยจำนวนรายการที่ไม่ใช่ศูนย์เนื่องจากแต่ละรายการจะถูกคูณหนึ่งครั้งโดยบางรายการในเวกเตอร์

ค่าใช้จ่ายของการคูณเมทริกซ์เมทริกซ์กระจัดกระจายขึ้นอยู่กับโครงสร้างของค่าที่ไม่ใช่ศูนย์ ตัวอย่างเช่นพิจารณาการกระจายเมทริกซ์กระจัดกระจายซึ่งเป็นโครงสร้างของหัวลูกศร :A

A=(δ1β1δ2β2δn-1βn-1γ1γ2γn-1δn),

ดังนั้นมีO ( n )ไม่ใช่ศูนย์แต่A 2มีความหนาแน่นสูง มีการตีความกราฟที่รู้จักกันดีของปรากฏการณ์นี้: เส้นทางที่มีความยาว 1 หรือ 2 ทั้งหมดในกราฟของAจะกลายเป็นขอบในกราฟของA 2 (เช่นรายการที่ไม่ใช่ศูนย์ในA 2 )AO(n)A2AA2A2


4

ประการแรกมันขึ้นอยู่กับการใช้งาน หากคุณใช้เมทริกซ์กระจัดกระจายเป็นเมทริกซ์หนาแน่นและกรอกข้อมูลลงในศูนย์ที่ไม่ใช่มันจะปรับขนาดด้วยขนาดโดยรวมของเมทริกซ์ ถ้ามันถูกเก็บไว้เป็นค่าที่ไม่ใช่ศูนย์มันจะปรับขนาดตามเวลาการเข้าถึงที่ปรับขนาดด้วยเมทริกซ์

ในเอกสาร PETScจะอธิบายว่าที่เก็บข้อมูลเริ่มต้นสำหรับเมทริกซ์กระจัดกระจายคือหน่วยเก็บข้อมูลแถวที่ถูกบีบอัดซึ่งปรับขนาดตามจำนวนแถวและจำนวนของค่าที่ไม่เป็นศูนย์ต่อแถว ดังนั้นฉันคาดหวังว่า MatMat จะขยายวงกว้างด้วยจตุรัสของมาตรการนี้ คือ )O(R2n2)

อย่างไรก็ตามสิ่งหนึ่งที่ควรทราบคือไม่มีจุดเก็บสิ่งที่ไม่มี หากคุณสนใจเกี่ยวกับประสิทธิภาพนี้ทำไมคุณเก็บ 100 ค่าสำหรับเมทริกซ์ 1,000x1000 นั่นหมายความว่าอย่างน้อย 90% ของแถว / คอลัมน์ไม่มีค่าที่ไม่ใช่ศูนย์เลยและสามารถลบออกจากเมทริกซ์ได้อย่างสิ้นเชิง หากรูปแบบของค่าที่ไม่ใช่ศูนย์ไม่เปลี่ยนแปลงให้พิจารณาลบแถว always-all-zero ออกจากทั้งนี้และเมทริกซ์เป้าหมาย มันจะลบความพยายามออกไป 90% ทำให้ประสิทธิภาพของเมทริกซ์ทั้งสอง (100 2 , 1,000 2 ) เทียบเท่ากันในวงกว้าง


แถวและคอลัมน์ที่ว่างเปล่ามักจะมีฟังก์ชั่นเกี่ยวกับปัญหา (เช่นการทำแผนที่ให้เหมือนกันระหว่างหมายเลขแถวไปยังตำแหน่งในภาพ) จะมีการแลกเปลี่ยนที่จะไม่กำจัดสิ่งเหล่านี้
meawoppl

ว่า; การทำให้ประสิทธิภาพรันไทม์ของคุณแย่ลงประมาณ 10 เท่าเพื่อรักษาการแม็พที่คุณสามารถเก็บไว้ในอาร์เรย์เดียวที่มี 100 int ไม่ใช่การแลกเปลี่ยนปกติ เนื่องจากคำถามเกี่ยวกับประสิทธิภาพเป็นขนาดว่างของเมทริกซ์ตาชั่งนี่เป็นจุดสำคัญโดยเฉพาะอย่างยิ่งสำหรับ PETSc ตามที่เขาถาม
Phil H

3

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

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