เหตุผลที่ LAPACK ใช้คืออะไร


9

ประจำ QR ของ LAPACK เก็บ Q เป็นเจ้าของบ้านสะท้อนแสง มันชั่งเวกเตอร์การสะท้อนกลับv กับ 1/v1ดังนั้นองค์ประกอบแรกของผลลัพธ์จึงกลายเป็น 1ดังนั้นจึงไม่จำเป็นต้องจัดเก็บ และมันเก็บแยกต่างหากτเวกเตอร์ซึ่งมีปัจจัยขนาดที่ต้องการ เมทริกซ์ตัวสะท้อนแสงจึงเป็นดังนี้:

H=IτvvT,

ที่ไหน vไม่ได้ทำให้ปกติ ในขณะที่ในตำราเรียนเมทริกซ์สะท้อนแสงคือ

H=I2vvT,

ที่ไหน v ถูกทำให้เป็นมาตรฐาน

ทำไมขนาด LAPACK v กับ 1/v1แทนที่จะทำให้เป็นมาตรฐาน

พื้นที่เก็บข้อมูลที่จำเป็นเหมือนกัน (แทนที่จะเป็น τ, v1 จะต้องมีการจัดเก็บ) และหลังจากนั้นจึงนำไปใช้ H สามารถทำได้เร็วขึ้นเนื่องจากไม่จำเป็นต้องคูณด้วย τ การคูณด้วย 2 ในเวอร์ชันตำราเรียนสามารถปรับให้เหมาะสมถ้าแทนของการปรับสภาพง่าย v ถูกปรับอัตราส่วนโดย 2/v)

(เหตุผลของคำถามของฉันคือฉันกำลังเขียนชุดคำสั่ง QR และ SVD และฉันต้องการทราบเหตุผลของการตัดสินใจนี้ไม่ว่าฉันจะต้องทำตามหรือไม่)

คำตอบ:


7

เป็นตัวแปรที่ถูกบล็อกของ Householder-QR ที่ผลักดันการออกแบบนี้ ถ้าคุณดูในหนังสือของ Golub และ Van Loan (Ch 5.2 หรือมากกว่านั้น) พวกเขาพูดถึงวิธีที่ k-iterations ของอัลกอริทึมสามารถถูกบล็อกด้วยกันโดยการสะสมตัวสะท้อนแต่ละตัวลงในตัวสะท้อนอันดับ -k ของรูปแบบที่ทั้งและเป็น "สูงผอม" เมทริกซ์ที่มีขนาดk อัลกอริทึมนี้ใช้งานได้มากกว่า แต่เร็วกว่าในทางปฏิบัติเพราะมันอุดมด้วยการเรียก gemm () น่าเสียดายที่สิ้นเปลืองในการจัดเก็บเนื่องจากต้องการแสดงและอย่างอิสระI+WYTWYn×kWY

ในกระดาษต่อมา (อ้างถึงด้านล่าง) แวนกู้อธิบายมีประสิทธิภาพมากขึ้น "symmetrized" โครงสร้างข้อมูลสะท้อนบล็อกของแบบฟอร์มT} ที่นี่ยังคงแต่ความต้องการฟลอพ / หน่วยเก็บข้อมูลสำหรับการสร้างได้ถูกกำจัดโดยการแนะนำ ,ขนาดเล็กเมทริกซ์รูปสามเหลี่ยมบน แม้ว่าจะต้องคูณโดยเปิดตัวจำนวนเล็ก ๆ ของการทำงานพิเศษก็มักจะมีกำไรสุทธิเพราะnI+YTYTYn×kWTk×kTk<<n

ภายใน LAPACK ขั้นตอนวิธีการที่ไม่ถูกปิดกั้นเป็นจริงเพียง จำกัดกรณีของอัลกอริทึมบล็อกทุกทางลงไปที่ทางเลือกของสัญลักษณ์ (ซึ่งนำเราไปสู่น้อยรุ่นของสามเหลี่ยม )k1τ1×1T

การอ้างอิง: ไกร์เบอร์โรเบิร์ตและชาร์ลส์แวนสินเชื่อ "การเป็นตัวแทน WY ของสตอเรจที่มีประสิทธิภาพสำหรับผลิตภัณฑ์ที่มีการเปลี่ยนเจ้าของ" วารสารสยามเกี่ยวกับการคำนวณทางวิทยาศาสตร์และสถิติ 10.1 (1989): 53-57


ขอบคุณสำหรับคำตอบ! ฉันไม่เห็นว่าเป็นเพียง -sizedT ในกระดาษที่อ้างถึงในอัลกอริทึม 5,คือและคือ -2 ดังนั้นมันจึงกลายเป็นเวอร์ชั่นตำราไม่ใช่รุ่น LAPACK ฉันพลาดอะไรไปหรือเปล่า? τ1×1TYvT
geza

2

คุณไม่ต้องเก็บคุณสามารถคำนวณซ้ำได้จากส่วนที่เหลือของเวกเตอร์ (คุณสามารถคำนวณจากรายการอื่น ๆ ได้ในเวอร์ชันปกติ แต่เป็นการคำนวณที่ไม่เสถียรเนื่องจากการลบเหล่านั้น)τv1

ที่จริงแล้วคุณสามารถใช้ชิ้นส่วนรูปสามเหลี่ยมด้านล่างของเพื่อเก็บเพื่อให้การคำนวณการแยกตัวประกอบดำเนินการอย่างเต็มที่ Lapack ให้ความสำคัญกับการทำงานของอัลกอริธึมรุ่นนี้Rv2,...vn


1

คำแนะนำของฉันอยู่บนพื้นฐานของเอกสารสำหรับ Intel MKL https://software.intel.com/en-us/mkl-developer-reference-c-geqrf ดูเหมือนว่าค่าบนและสูงกว่าเส้นทแยงมุมของเอาท์พุทสโตร์ R ดังนั้นจึงเหลือเพียงสามเหลี่ยมล่างสำหรับ Q. ดูเหมือนว่าเป็นธรรมชาติที่จะใช้ที่เก็บข้อมูลเพิ่มเติมสำหรับปัจจัยการปรับสเกล

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