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

LAPACK (Linear Algebra PACKage) เป็นไลบรารีของรูทีนย่อยที่ใช้กันทั่วไปสำหรับงานพีชคณิตเชิงเส้นเชิงตัวเลขรวมถึงคำตอบของชุดสมการเชิงเส้นกำลังสองเชิงเส้นน้อยที่สุดปัญหาค่าลักษณะเฉพาะและการสลายตัวของค่าเอกพจน์ กิจวัตร LAPACK อาจใช้กับภาษา Fortran, C และญาติและภาษาอื่น ๆ

3
อะไรคือความสัมพันธ์ของ BLAS, LAPACK และห้องสมุดพีชคณิตเชิงเส้นอื่น ๆ ?
ฉันได้ดูไลบรารีพีชคณิตเชิงเส้น C ++ สำหรับโครงการที่ฉันกำลังทำอยู่ สิ่งที่ฉันยังไม่เข้าใจคือการเชื่อมต่อของ BLAS และ LAPACK กับห้องสมุดพีชคณิตเชิงเส้นอื่น ๆ เมื่ออ่านบทความนี้ในห้องสมุดพีชคณิตเชิงเส้นฉันพบว่ามันน่าสนใจที่: ห้องสมุดบางแห่งมีความเป็นอิสระจาก BLAS และ LAPACK บางคนต้องการ BLAS และ LAPACK บางตัวมีอินเตอร์เฟสเสริมสำหรับ BLAS และ LAPACK และอย่างที่ฉันเข้าใจคุณสามารถใช้ BLAS และ LAPACK เพื่อแก้ปัญหาพีชคณิตเชิงเส้นโดยตรง ฉันสามารถจินตนาการได้ว่าบางไลบรารีเป็นเพียงอินเตอร์เฟส C ++ ไปยังไลบรารี BLAS และ LAPACK ที่เขียนใน C และ Fortran และอื่น ๆ ได้ใช้งานรูทีนทดแทนของตัวเอง แต่ อะไรคือความหมายของอินเทอร์เฟซเสริมของ BLAS และ LAPACK? คุณทำอะไรหายโดยการไม่เข้าร่วมและห้องสมุดกำลังทำอะไรแทน ห้องสมุดใดมีมากกว่าอินเตอร์เฟสหรือไม่? ตัวอย่างเช่น …

3
ทำไมการคูณการคูณเมทริกซ์ - เวกเตอร์ของฉันไม่
ขออภัยสำหรับโพสต์ที่ยาวนาน แต่ฉันต้องการรวมทุกอย่างที่ฉันคิดว่ามีความเกี่ยวข้องในครั้งแรก สิ่งที่ฉันต้องการ ฉันกำลังใช้ Krylov Subspace Method แบบขนานสำหรับเมทริกซ์หนาแน่น GMRES ส่วนใหญ่, QMR และ CG ฉันรู้ (หลังจากทำโปรไฟล์) ว่ารูทีน DGEMV ของฉันน่าสงสาร ดังนั้นฉันจึงตัดสินใจที่จะมีสมาธิกับมันโดยแยกมันออกมา ฉันได้ลองใช้งานด้วยเครื่อง 12 คอร์ แต่ผลลัพธ์ด้านล่างนี้สำหรับแล็ปท็อป Intel i3 แบบ 4 คอร์ แนวโน้มไม่แตกต่างกันมากนัก ฉันKMP_AFFINITY=VERBOSEส่งออกสามารถใช้ได้ที่นี่ ฉันเขียนรหัสเล็ก ๆ : size_N = 15000 A = randomly_generated_dense_matrix(size_N,size_N); %Condition Number is not bad b = randomly_generated_dense_vector(size_N); for it=1:n_times %n_times …

4
พิจารณาอย่างรวดเร็วว่าเมทริกซ์หนาแน่นหรือไม่นั้นอยู่ในระดับต่ำ
ในโครงการซอฟต์แวร์ที่ฉันกำลังดำเนินการการคำนวณบางอย่างง่ายขึ้นอย่างมากสำหรับเมทริกซ์ระดับต่ำที่หนาแน่น อินสแตนซ์ปัญหาบางอย่างเกี่ยวข้องกับเมทริกซ์อันดับต่ำหนาแน่น แต่พวกเขามอบให้ฉันเต็มแทนที่จะเป็นปัจจัยดังนั้นฉันจะต้องตรวจสอบอันดับและปัจจัยเมทริกซ์ถ้าฉันต้องการใช้ประโยชน์จากโครงสร้างระดับต่ำ . โดยทั่วไปแล้วเมทริกซ์ในคำถามจะเต็มหรือเกือบจะหนาแน่นเกือบสมบูรณ์โดยมี n ตั้งแต่หนึ่งร้อยถึงไม่กี่พัน หากเมทริกซ์มีอันดับต่ำ (พูดน้อยกว่า 5 ถึง 10) การคำนวณ SVD และใช้รูปแบบการแยกตัวประกอบอันดับต่ำนั้นคุ้มค่ากับความพยายาม อย่างไรก็ตามหากเมทริกซ์ไม่ได้อยู่ในอันดับต่ำความพยายามก็จะสูญเปล่า ดังนั้นฉันต้องการค้นหาวิธีที่รวดเร็วและเชื่อถือได้อย่างสมเหตุสมผลในการพิจารณาว่าอันดับอยู่ในระดับต่ำหรือไม่ก่อนที่จะลงทุนในการแยกตัวประกอบ SVD แบบเต็ม หาก ณ จุดใด ๆ เห็นได้ชัดว่าอันดับอยู่เหนือทางลัดกระบวนการสามารถหยุดได้ทันที หากโพรซีเดอร์แจ้งว่าเมทริกซ์อยู่ในระดับต่ำเมื่อไม่ผิดนี่ไม่ใช่ปัญหาใหญ่เพราะฉันยังคงทำ SVD แบบเต็มเพื่อยืนยันอันดับต่ำและค้นหาการแยกตัวประกอบต่ำ ตัวเลือกที่ฉันถือว่ามีอันดับที่เปิดเผย LU หรือ QR ตัวประกอบตามด้วย SVD แบบเต็มเป็นเช็ค มีวิธีอื่นที่ฉันควรพิจารณาอีกหรือไม่

3
มีประโยชน์ในการรวบรวม LAPACK จากแหล่งที่มาเมื่อเทียบกับการติดตั้งแพคเกจที่สร้างไว้ล่วงหน้าจาก Ubuntu หรือไม่
ฉันรู้ว่า ATLAS สามารถเพิ่มประสิทธิภาพตัวเองสำหรับเครื่องที่รวบรวมและทำให้เกิดประโยชน์สูงสุดโดยรวบรวมจากแหล่งที่มา มีประโยชน์ในการรวบรวม LAPACK จากแหล่งที่มา? มันจะง่ายกว่าการติดตั้งแพ็คเกจที่สร้างไว้ล่วงหน้า

3
ทำความเข้าใจว่า Numpy ทำ SVD อย่างไร
ฉันใช้วิธีที่ต่างกันในการคำนวณทั้งอันดับของเมทริกซ์และคำตอบของระบบเมทริกซ์ของสมการ ฉันเจอฟังก์ชัน linalg.svd เมื่อเปรียบเทียบกับความพยายามของฉันในการแก้ไขระบบด้วยการกำจัดแบบเกาส์เซียนดูเหมือนว่าจะเร็วขึ้นและแม่นยำยิ่งขึ้น ฉันพยายามเข้าใจว่ามันเป็นไปได้อย่างไร เท่าที่ฉันรู้ฟังก์ชั่น linalg.svd ใช้อัลกอริทึม QR เพื่อคำนวณค่าลักษณะเฉพาะของเมทริกซ์ของฉัน ฉันรู้ว่ามันใช้งานได้อย่างไรในทางคณิตศาสตร์ แต่ฉันไม่รู้ว่า Numpy สามารถจัดการได้อย่างรวดเร็วและไม่สูญเสียความแม่นยำมากนัก ดังนั้นคำถามของฉัน: ฟังก์ชั่น numpy.svd ทำงานอย่างไรและโดยเฉพาะเจาะจงมากขึ้นมันทำงานได้อย่างรวดเร็วและแม่นยำอย่างไร (เทียบกับการกำจัดแบบเกาส์เซียน)

2
แก้ปัญหา
ฉันกำลังย้ายรหัสที่มีอยู่จาก MATLAB ไปยัง C ++ และมีระบบเชิงเส้นเพื่อแก้ไข (แทนที่จะเป็นรูปแบบทั่วไปA x = b )xA=bxA=bxA=bAx=bAx=bAx=b เมทริกซ์นั้นหนาแน่นและอยู่ในรูปแบบทั่วไป แต่ไม่ใหญ่กว่า 1,000x1000 ดังนั้นใน MATLAB คำตอบคือฟังก์ชั่นหรือสัญกรณ์ไปข้างหน้าAAAmrdivide(b,A)x = b/A; ฉันจะแก้ไขปัญหานี้ในรหัส C ++ ของฉันโดยใช้รูทีน BLAS และ LAPACK ได้อย่างไร ฉันคุ้นเคยกับกิจวัตรประจำวัน LAPACK DGESVซึ่งจะช่วยแก้x = BสำหรับxAx=bAx=bAx=bxxx ดังนั้นหนึ่งคิดว่าฉันต้องทำกิจวัตรบางอย่างโดยใช้ตัวแปลงสัญญาณเมทริกซ์: (xA)T=bT(xA)T=bT(xA)^T=b^T ATxT=bTATxT=bTA^T x^T = b^T xT=(AT)−1bTxT=(AT)−1bTx^T = (A^T)^{-1} b^T แล้วแก้รูปแบบสุดท้ายใช้DGESVการดำเนินงานในการขนย้ายT (ดังนั้นค่าใช้จ่ายในการเคลื่อนย้ายAและค่าใช้จ่ายในการแก้ไขระบบ)ATATA^TAAA มีวิธีการที่มีประสิทธิภาพมากกว่าหรือดีกว่าอย่างอื่นหรือไม่? ฉันทำงานกับเมทริกซ์และคลาสเวกเตอร์รวมถึงการใช้ BLAS จากไลบรารี BOOST uBLAS …

2
ฟังก์ชั่น LAPACK ที่สอดคล้องกันหลัง Matlab [Q, R, E] = qr (A) คืออะไร?
ฉันกำลังพยายามคำนวณการจัดอันดับที่ดีสำหรับเมทริกซ์อย่างถูก ดังนั้นฉันจึงคำนวณการถอดรหัสคอลัมน์โดยใช้การถอดรหัส QRAAA [Q,R,E]=qr(A) ใน Matlab ฉันประเมินระดับAAAใช้ tol = size(A,n)*eps*norm(A,'fro'); r = sum(abs(diag(R))>tol) มันใช้งานได้ดีและพล็อตในแนวทแยงทั้งหมดของ R มีลักษณะดังนี้: หากพอร์ตอัลกอริธึมทั้งหมดเป็น C / Fortran ฉันจะแทนที่ [Q, R, E] = qr (A) โดยใช้ DGEQP3 จาก LAPACK ซึ่งคำนวณคอลัมน์ที่มีการแยกย่อย QR แต่ถ้าฉันใช้การประมาณแบบเดียวกันกับอันดับฉันส่วนใหญ่เข้าใจผิด พล็อตเดียวกันสำหรับผลิตจาก DGEQP3 ดูเหมือนว่า RRR อินพุตเมทริกซ์เหมือนกันทั้งสองการทดลอง คำถามของฉันตอนนี้ฟังก์ชั่น LAPACK คือคอลัมน์ใดที่หมุนแกน QR การสลายตัวจาก Matlab พึ่งพา? ขอบคุณสำหรับความช่วยเหลือใด ๆ Grisu แก้ไข: …
12 matlab  lapack 

2
การใช้งาน BLAS / LAPACK ที่เร็วที่สุดหรือการใช้พีชคณิตเชิงเส้นอื่น ๆ ในระบบ GPU คืออะไร?
ตัวอย่างเช่น nVidia มี CUBLAS ซึ่งสัญญาว่าจะเร่งความเร็ว 7-14x ไร้เดียงสานี่ไม่มีที่ไหนใกล้กับทฤษฏีความเร็วของการ์ด GPU ของ nVidia อะไรคือความท้าทายในการเร่งพีชคณิตเชิงเส้นบน GPU และมีการกำหนดเส้นทางพีชคณิตเชิงเส้นเร็วกว่าที่มีอยู่แล้วหรือไม่

4
เลขชี้กำลังเมทริกซ์ของเมทริกซ์แบบเอียง - เฮอร์มีเชียนที่มี Fortran 95 และ LAPACK
ฉันเพิ่งเข้าสู่ Fortran 95 สำหรับการจำลองกลศาสตร์ควอนตัม สุจริตฉันถูกนิสัยเสียโดย Octave ดังนั้นฉันจึงได้รับการยกกำลังเมทริกซ์สำหรับการรับ ที่กำหนด (ขนาดเล็ก ) ลาดเมทริกซ์ -Hermitian ขนาดn × nสิ่งที่เป็นวิธีที่มีประสิทธิภาพมากที่สุดของการใช้ LAPACK ที่จะแก้ปัญหานี้หรือไม่ ฉันไม่ได้ใช้เครื่องห่อหุ้ม LAPACK95 เพียงโทรไปที่ LAPACK โดยตรงn ≤ 36n≤36n\leq 36n × nn×nn\times n
11 fortran  lapack 

1
ปัญหาเบนช์มาร์กสำหรับอัลกอริทึมการเรียงลำดับใหม่ของค่าเฉพาะ
ทุกคนจริงเมทริกซ์สามารถลดลงในฟอร์ม Schur จริงT = U T Uใช้มุมฉาก similiary เปลี่ยนU เมทริกซ์Tนี่คือรูปแบบกึ่งสามเหลี่ยมโดยมี 1 คูณ 1 หรือ 2 คูณ 2 บล็อกบนเส้นทแยงมุมหลัก แต่ละบล็อก 1 ต่อ 1 สอดคล้องกับค่าลักษณะเฉพาะที่แท้จริงของAและแต่ละบล็อก 2 ต่อ 2 สอดคล้องกับคู่ค่าลักษณะเชิงสังยุคที่ซับซ้อนของAAAAT= UTUT=UTAUT = U^T A UยูUUTTTAAAAAA ปัญหาการจัดเรียงใหม่ eigenvalue ประกอบด้วยการหาฉากการเปลี่ยนแปลงความคล้ายคลึงกันดังกล่าวว่าการเลือกค่าลักษณะเฉพาะของผู้ใช้ปรากฏตามเส้นทแยงมุมของมุมซ้ายบนของS = V T T VVVVAAAS=VTTVS=VTTVS = V^T T V ใน LAPACK รูทีนความแม่นยำสองเท่าที่เกี่ยวข้องที่เรียกว่า DTRSEN Daniel Kressner …

1
PETSc เคยใช้ประโยชน์จากห้องสมุด LAPACK สำหรับคณิตศาสตร์เมทริกซ์กระจัดกระจายหรือไม่?
การรวบรวม PETSc กับไลบรารี BLAS / LAPACK ภายนอกส่งผลกระทบต่อประสิทธิภาพการทำงานของเมทริกซ์แบบเบาบางหรือไม่หรือใช้ไลบรารีเหล่านั้นเพื่อคำนวณเมทริกซ์หนาแน่นเท่านั้น?

3
เมทริกซ์เลขชี้กำลังของเมทริกซ์อสมมาตรจริงด้วย Fortran 95 และ LAPACK
ฉันเพิ่งถามคำถามในบรรทัดเดียวกันสำหรับเมทริกซ์เอียง - เฮอร์เมียน ได้รับแรงบันดาลใจจากความสำเร็จของคำถามนั้นและหลังจากต่อสู้กับกำแพงเป็นเวลาสองสามชั่วโมงฉันกำลังดูเมทริกซ์เลขชี้กำลังของเมทริกซ์สมมาตรจริง เส้นทางในการค้นหาค่าลักษณะเฉพาะและค่าลักษณะเฉพาะนั้นค่อนข้างซับซ้อนและฉันกลัวว่าฉันจะสูญเสียไป ที่มา: บางครั้งฉันถามคำถามนี้เกี่ยวกับฟิสิกส์เชิงทฤษฎี SE ผลที่ได้ทำให้ฉันสมการวลีหลักเป็นเมทริกซ์แบบอสมมาตรจริง ในกรณีที่ไม่ขึ้นกับเวลาสมการหลักจะถูกแก้ไขโดยการแจกแจงเมทริกซ์นี้ ในกรณีที่ขึ้นอยู่กับเวลามันจะต้องมีการรวม ฉันเกี่ยวข้องกับความเป็นอิสระเวลาเท่านั้นในขณะนี้ เมื่อมองไปที่รูทีนย่อยต่างๆฉันคิดว่าฉันควรจะเรียก ( ? gehrd , orghr , hseqr ... ) มันไม่ชัดเจนว่ามันจะง่ายกว่าที่จะใช้เมทริกซ์จากreal*8ถึงcomplex*16และดำเนินการตามรูทีนเวอร์ชันคู่ที่ซับซ้อนเหล่านี้ หรือติดกับreal*8และใช้การเพิ่มจำนวนของอาร์เรย์ของฉันและสร้างเมทริกซ์ที่ซับซ้อนของพวกเขาในภายหลัง ดังนั้นฉันควรจะเรียกรูทีนใด (และในลำดับใด) และฉันควรใช้เวอร์ชันสองเท่าจริงหรือเวอร์ชันสองซับซ้อน? ด้านล่างนี้เป็นความพยายามในการทำเช่นนี้กับเวอร์ชันสองเท่าจริง L*tฉันกลายเป็นติดการหาเวกเตอร์ลักษณะเฉพาะของ function time_indep_master(s,L,t) ! s is the length of a side of L, which is square. ! L is a real*8, asymmetric …

3
วิธีเริ่มใช้ LAPACK ใน c ++
ฉันยังใหม่กับวิทยาศาสตร์การคำนวณและฉันได้เรียนรู้วิธีการพื้นฐานสำหรับการรวมการแก้ไขวิธีการเช่น RK4, Numerov และอื่น ๆ ใน c ++ แต่เมื่อเร็ว ๆ นี้อาจารย์ของฉันขอให้ฉันเรียนรู้วิธีการใช้ LAPACK สำหรับการแก้ปัญหาที่เกี่ยวข้องกับเมทริกซ์ เช่นการหาค่าลักษณะเฉพาะของเมทริกซ์เชิงซ้อน ฉันไม่เคยใช้ห้องสมุดบุคคลที่สามและฉันมักจะเขียนฟังก์ชั่นของตัวเอง ฉันค้นหามาหลายวันแล้ว แต่ไม่สามารถหาคำแนะนำที่เป็นมิตรกับมือสมัครเล่นในการทำ lapack พวกเขาทั้งหมดเขียนด้วยคำที่ฉันไม่เข้าใจและฉันไม่รู้ว่าทำไมการใช้ฟังก์ชันที่เขียนไว้แล้วควรมีความซับซ้อนเช่นนี้ พวกเขาเต็มไปด้วยคำเช่น zgeev, dtrsv เป็นต้นและฉันรู้สึกหงุดหงิด ฉันต้องการโค้ดบางอย่างเช่นโค้ดหลอกนี้: #include <lapack:matrix> int main(){ LapackComplexMatrix A(n,n); for... for... cin>>A(i,j); cout<<LapackEigenValues(A); return 0; } ฉันไม่รู้ว่าฉันเป็นคนโง่หรือมือสมัครเล่น แต่อีกครั้งนี่ไม่ควรยากขนาดนั้นเหรอ? ฉันไม่รู้ด้วยซ้ำว่าฉันควรใช้ LAPACK หรือ LAPACK ++ (ฉันเขียนโค้ดใน c ++ และไม่มีความรู้เกี่ยวกับ Python หรือ …
10 lapack 

3
เหตุผลที่ LAPACK ใช้คืออะไร
ประจำ QR ของ LAPACK เก็บ Q เป็นเจ้าของบ้านสะท้อนแสง มันชั่งเวกเตอร์การสะท้อนกลับvvv กับ 1/v11/v11/v_1ดังนั้นองค์ประกอบแรกของผลลัพธ์จึงกลายเป็น 111ดังนั้นจึงไม่จำเป็นต้องจัดเก็บ และมันเก็บแยกต่างหากττ\tauเวกเตอร์ซึ่งมีปัจจัยขนาดที่ต้องการ เมทริกซ์ตัวสะท้อนแสงจึงเป็นดังนี้:H=I−τvvT,H=I−τvvT,H=I-\tau v v^T, ที่ไหน vvvไม่ได้ทำให้ปกติ ในขณะที่ในตำราเรียนเมทริกซ์สะท้อนแสงคือ H=I−2vvT,H=I−2vvT,H = I-2vv^T, ที่ไหน vvv ถูกทำให้เป็นมาตรฐาน ทำไมขนาด LAPACK vvv กับ 1/v11/v11/v_1แทนที่จะทำให้เป็นมาตรฐาน พื้นที่เก็บข้อมูลที่จำเป็นเหมือนกัน (แทนที่จะเป็น ττ\tau, v1v1v_1 จะต้องมีการจัดเก็บ) และหลังจากนั้นจึงนำไปใช้ HHH สามารถทำได้เร็วขึ้นเนื่องจากไม่จำเป็นต้องคูณด้วย ττ\tau การคูณด้วย 222 ในเวอร์ชันตำราเรียนสามารถปรับให้เหมาะสมถ้าแทนของการปรับสภาพง่าย vvv ถูกปรับอัตราส่วนโดย 2–√/∥v∥2/‖v‖\sqrt 2/\|v\|) (เหตุผลของคำถามของฉันคือฉันกำลังเขียนชุดคำสั่ง QR และ SVD และฉันต้องการทราบเหตุผลของการตัดสินใจนี้ไม่ว่าฉันจะต้องทำตามหรือไม่)

1
อัลกอริทึมสมดุลเมทริกซ์
ฉันได้รับการเขียนกล่องเครื่องมือระบบการควบคุมจากรอยขีดข่วนและหมดจดใน Python3 (เสียบด้านหน้า: harold) จากการวิจัยที่ผ่านมาของฉันฉันมักจะบ่นเกี่ยวกับนักแก้ปัญหา Riccati care.mด้วยเหตุผลที่เป็นเทคนิค / ไม่เกี่ยวข้อง ดังนั้นฉันได้เขียนชุดคำสั่งของตัวเอง balance.mสิ่งหนึ่งที่ผมไม่สามารถหาวิธีรอบคือการได้รับขั้นตอนวิธีการสมดุลและมีประสิทธิภาพสูงอย่างน้อยดีเท่า ก่อนที่คุณจะพูดถึงมันxGEBALในครอบครัวเป็นที่เปิดเผยใน SciPy และคุณโดยทั่วไปสามารถโทรจาก SciPy ดังต่อไปนี้สมมติว่าคุณมีชนิดลอย 2D อาร์เรย์A: import scipy as sp gebal = sp.linalg.get_lapack_funcs(('gebal'),(A,)) # this picks up DGEBAL Ab, lo, hi, scaling , info = gebal(A, scale=1 , permute=1 , overwrite_a=0 ) ตอนนี้ถ้าฉันใช้เมทริกซ์ทดสอบต่อไปนี้ array([[ 6. , 0. , …

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