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

คำถามเกี่ยวกับความเร็วในการเรียกใช้และการใช้หน่วยความจำของอัลกอริทึมโครงสร้างข้อมูลภาษาและไลบรารี

4
วิธีจัดการกับข้อมูลมากเกินไป
การจำลองพลศาสตร์พลาสมาของเรามักจะสร้างข้อมูลมากเกินไป ในระหว่างการจำลองเราบันทึกคุณสมบัติทางกายภาพต่าง ๆ บนกริด (x, y, z, t) ที่มีขนาดใหญ่เท่ากับ (8192x1024x1024x1500) เป็นเวลาอย่างน้อย 10 คุณสมบัติ ข้อมูลนี้จะถูกประมวลผลหลังจากการจำลองเสร็จสมบูรณ์ กับเรา ทำภาพยนตร์ของคุณสมบัติ ทำการวิเคราะห์ฟูริเยร์ คำนวณคุณสมบัติเฉลี่ย การทุ่มตลาดอย่างง่ายของข้อมูลมากที่สุดเท่าที่จะทำได้ดีเมื่อเราศึกษาระบบขนาดเล็ก สิ่งนี้ทำให้เรามีความยืดหยุ่นในการโต้ตอบกับผลลัพธ์และตัดสินใจในภายหลังว่าเราต้องการทำอะไรกับมัน นอกจากนี้ยังช่วยให้เราจัดสรรทรัพยากรการคำนวณของเรา (เวลา CPU) เพียงแค่เรียกใช้การจำลอง เราได้เริ่มกระบวนการของการทำการวิเคราะห์ฟูริเยร์ได้ทันทีและกรองเฉพาะสเกลความยาวที่เลือกเท่านั้น ด้วยเหตุผลเชิงตัวเลขบางครั้งเราจำเป็นต้องแก้ไขสเกลความยาวที่เล็กกว่าที่เราสนใจจริง ๆ ดังนั้นในกรณีเหล่านี้ตัวกรองนี้ช่วยได้อย่างมาก นอกจากนี้เรายังมีการสำรวจห้องสมุดขนาน IO ต่างๆเช่นขนาน I / O ตัวเลือกใน HDF5 มีกลวิธีใดบ้างที่จะช่วยให้การประมวลผลข้อมูลมีประสิทธิภาพสูงสุด? มีประโยชน์ในการทำการวิเคราะห์ทั้งหมด (ไม่รวมการโพสต์เช่นภาพยนตร์และแปลง) ได้ทันทีหรือไม่ ฉันจินตนาการได้ว่าปัญหานี้กำลังเกิดขึ้นในงานวิจัยด้านอื่น ตัวอย่างเช่นคุณอาจมีการจำลองพลวัตของโมเลกุลที่ต้องพัฒนาเป็นเวลานาน แต่คุณสนใจในช่วงเวลาสั้น ๆ เมื่อมีบางสิ่งที่น่าสนใจเกิดขึ้น หรือใน CFD การพัฒนาครั้งแรกอาจช้า แต่เมื่อความปั่นป่วนเกิดขึ้นคุณอาจต้องใช้ความละเอียดเวลาสูงกว่าในการตรวจสอบพลวัต มีตัวอย่างของการรวบรวมผลลัพธ์ที่ซับซ้อนจากแบบจำลองหรือไม่?

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

5
การคำนวณโครงสร้าง sparsity สำหรับเมทริกซ์องค์ประกอบ จำกัด
คำถาม: มีวิธีการใดในการคำนวณโครงสร้าง sparsity ของเมทริกซ์ไฟท์องค์ประกอบที่แม่นยำและมีประสิทธิภาพ ข้อมูล: ฉันกำลังทำงานกับตัวแก้สมการความดัน Poisson โดยใช้วิธีของ Galerkin ที่มีพื้นฐานกำลังสองของลากรองจ์เขียนใน C และใช้ PETSc สำหรับการจัดเก็บเมทริกซ์แบบกระจัดกระจายและกิจวัตร KSP ในการใช้ PETSc อย่างมีประสิทธิภาพฉันจำเป็นต้องจัดสรรหน่วยความจำล่วงหน้าสำหรับเมทริกซ์ความแข็งระดับโลก ขณะนี้ฉันกำลังประกอบ mock เพื่อประเมินจำนวนที่ไม่ใช่ศูนย์ต่อแถวดังต่อไปนี้ (pseudocode) int nnz[global_dim] for E=1 to NUM_ELTS for i=1 to 6 gi = global index of i if node gi is free for j=1 to 6 gj = global …

3
การใช้หน่วยความจำใน fortran เมื่อใช้อาร์เรย์ของชนิดที่ได้รับกับตัวชี้
ในโปรแกรมตัวอย่างนี้ฉันกำลังทำสิ่งเดียวกัน (อย่างน้อยฉันก็คิดอย่างนั้น) ในสองวิธีที่แตกต่างกัน ฉันใช้งานบนพีซีลีนุกซ์และตรวจสอบการใช้งานหน่วยความจำด้วยด้านบน การใช้ gfortran ฉันพบว่าในวิธีแรก (ระหว่าง "1" และ "2") หน่วยความจำที่ใช้คือ 8.2GB ในขณะที่วิธีที่สอง (ระหว่าง "2" และ "3") การใช้หน่วยความจำคือ 3.0GB ด้วยคอมไพเลอร์ของ Intel ความแตกต่างก็ยิ่งใหญ่กว่า: 10GB เทียบกับ 3GB นี่ดูเหมือนจะเป็นการลงโทษที่มากเกินไปสำหรับการใช้พอยน์เตอร์ ทำไมสิ่งนี้ถึงเกิดขึ้น program test implicit none type nodesType integer:: nnodes integer,dimension(:),pointer:: nodes end type nodesType type nodesType2 integer:: nnodes integer,dimension(4):: nodes end type nodesType2 …

4
FLOP นับสำหรับฟังก์ชั่นห้องสมุด
เมื่อประเมินจำนวน FLOPs ในฟังก์ชั่นที่เรียบง่ายมักจะสามารถลงไปในการแสดงออกของผู้ประกอบการทางคณิตศาสตร์ขั้นพื้นฐานรับทราบ อย่างไรก็ตามในกรณีของคำแถลงทางคณิตศาสตร์ที่เกี่ยวข้องกับการแบ่งคู่เราไม่สามารถทำสิ่งนี้ได้และคาดว่าจะสามารถเปรียบเทียบกับ FLOP นับได้จากฟังก์ชั่นที่มีการเพิ่มเติมและการคูณเท่านั้น สถานการณ์ยิ่งแย่ลงเมื่อการดำเนินการถูกนำไปใช้ในไลบรารี ดังนั้นจึงจำเป็นที่จะต้องมีแนวคิดที่สมเหตุสมผลเกี่ยวกับประสิทธิภาพของฟังก์ชั่นพิเศษ โดยฟังก์ชั่นพิเศษเราหมายถึงสิ่งที่ชอบ: ประสบการณ์ () sqrt () บาป / cos / สีน้ำตาล () ซึ่งมักจะมีให้โดยไลบรารีระบบ การกำหนดความซับซ้อนของสิ่งเหล่านี้จะทำให้เกิดความสับสนมากยิ่งขึ้นจากข้อเท็จจริงที่ว่าหลายคนปรับตัวได้และมีความซับซ้อนขึ้นอยู่กับอินพุต ตัวอย่างเช่นการใช้งานที่มีเสถียรภาพของตัวเลข() มักจะ rescale แบบปรับตัวและใช้การค้นหา ความประทับใจครั้งแรกของฉันที่นี่คือสิ่งที่ดีที่สุดในกรณีนี้คือตรวจสอบพฤติกรรมโดยเฉลี่ยของฟังก์ชั่น แน่นอนว่าการสนทนาทั้งหมดนี้ขึ้นอยู่กับสถาปัตยกรรมเป็นอย่างมาก สำหรับการสนทนานี้เราสามารถ จำกัด ตัวเราให้เป็นสถาปัตยกรรมที่มีวัตถุประสงค์ทั่วไปแบบทั่วไปและยกเว้นสิ่งที่มีหน่วยฟังก์ชั่นพิเศษ (GPU ฯลฯ ) เราสามารถค้นหาความพยายามที่ค่อนข้างง่ายในการสร้างมาตรฐานเหล่านี้สำหรับสถาปัตยกรรมเฉพาะเพื่อประโยชน์ของระบบและการเปรียบเทียบระบบ แต่ไม่สามารถยอมรับได้หากมีใครสนใจวิธีการและประสิทธิภาพของวิธีการ วิธีการใดในการพิจารณาความซับซ้อนของ FLOP ของฟังก์ชั่นเหล่านี้ถือเป็นที่ยอมรับ มีข้อผิดพลาดที่สำคัญหรือไม่?

2
เป็นวิธีที่เร็วที่สุดในการคำนวณค่าลักษณะเฉพาะทั้งหมดของเมทริกซ์ adjacency ใหญ่และเบาบางในงูใหญ่คืออะไร?
ฉันพยายามที่จะคิดออกว่ามีวิธีที่เร็วกว่าในการคำนวณค่าลักษณะเฉพาะและ eigenvector ทั้งหมดของเมทริกซ์ adjacency ขนาดใหญ่มากและกระจัดกระจายกว่าการใช้ scipy.sparse.linalg.eigsh เท่าที่ฉันรู้วิธีการนี้ใช้เพียงการกระจายและ คุณลักษณะสมมาตรของเมทริกซ์ เมทริกซ์คำวิเศษณ์เป็นเลขฐานสองสิ่งที่ทำให้ฉันคิดว่ามีวิธีที่เร็วกว่าที่จะทำ ฉันสร้างเมทริกซ์ adjacency แบบสุ่มขนาด 1000x1000 และเปรียบเทียบระหว่างหลายวิธีในแล็ปท็อป x230 ubuntu 13.04 ของฉัน: scipy.sparse.linalg.eigs: 0.65 วินาที scipy.sparse.linalg.eigsh: 0.44 วินาที scipy.linalg.eig: 6.09 วินาที scipy.linalg.eigh: 1.60 วินาที ด้วยการกระจัดกระจาย eigs และ eigsh ฉันตั้ง k จำนวนค่าลักษณะเฉพาะและ eigenvectors ที่ต้องการให้เป็นอันดับของเมทริกซ์ ปัญหาเริ่มต้นด้วยเมทริกซ์ที่ใหญ่กว่า - บนเมทริกซ์ 9000x9000 ใช้เวลา scipy.sparse.linalg.eigsh 45 นาที!

2
Octave: คำนวณระยะห่างระหว่างเมทริกซ์สองตัวของเวกเตอร์
สมมติว่าฉันมีเมทริกซ์สองตัว Nx2, Mx2 แทน N, M 2d เวกเตอร์ตามลำดับ มีวิธีที่ง่ายและดีในการคำนวณระยะทางระหว่างเวกเตอร์แต่ละคู่ (n, m) หรือไม่? แน่นอนว่าวิธีที่ง่าย แต่ไม่มีประสิทธิภาพคือ: d = zeros(N, M); for i = 1:N, for j = 1:M, d(i,j) = norm(n(i,:) - m(j,:)); endfor; endfor; คำตอบที่ใกล้เคียงที่สุดที่ฉันพบคือbsxfunใช้เช่น: bsxfun(inline("x-y"),[1,2,3,4],[3;4;5;6]) ans = -2 -1 0 1 -3 -2 -1 0 -4 -3 -2 -1 -5 …

3
แอปพลิเคชันกรณีใดบ้างที่มีเงื่อนไขการเสริมล่วงหน้าที่ดีกว่าตัวคูณ
ทั้งในการสลายตัวของโดเมน (DD) และ multigrid (MG) วิธีหนึ่งอาจเขียนแอพลิเคชันของการปรับปรุงบล็อกหรือแก้ไขหยาบเป็นทั้งสารเติมแต่งหรือคูณ สำหรับนักแก้จุดบกพร่องนี่คือความแตกต่างระหว่างการทำซ้ำ Jacobi และ Gauss-Seidel เรียบคูณสำหรับx = Bทำหน้าที่เป็นS ( x o L d , B ) = x n E Wจะถูกใช้เป็นAx=bAx=bAx = bS(xold,b)=xnewS(xold,b)=xnewS(x^{old}, b) = x^{new} xi+1=Sn(Sn−1(...,S1(xi,b)...,b),b)xi+1=Sn(Sn−1(...,S1(xi,b)...,b),b) x_{i+1} = S_n(S_{n-1}( ..., S_1(x_i, b) ..., b), b) และสารเติมแต่งเรียบเนียนถูกนำไปใช้เป็น xi+1=xi+∑ℓ=0nλℓ(Sℓ(xi,b)−xi)xi+1=xi+∑ℓ=0nλℓ(Sℓ(xi,b)−xi) x_{i+1} = x_{i} + \displaystyle\sum_{\ell = 0}^{n}\lambda_\ell(S_\ell(x_i, …

2
โครงสร้างพื้นฐานของการทำงานของรหัสทางวิทยาศาสตร์คืออะไร?
พิจารณาคอมพิวเตอร์สองเครื่องที่มีการกำหนดค่าฮาร์ดแวร์และซอฟต์แวร์ที่แตกต่างกัน เมื่อเรียกใช้รหัส Navier-Stokes ที่เหมือนกันในแต่ละแพลตฟอร์มจะใช้เวลา x และ y ในการดำเนินการซ้ำหนึ่งครั้งสำหรับคอมพิวเตอร์ 1 และ 2 ตามลำดับ ในกรณีนี้คือความแตกต่างของเวลาการวนซ้ำระหว่างคอมพิวเตอร์ 1 และคอมพิวเตอร์ 2Δ=x−yΔ=x−y\Delta = x-y สิ่งที่อาจส่งผลกระทบต่อขนาดของ ? ผู้สมัครที่ชัดเจนคือ CPU คำถามหลักของฉันคือมีปัจจัยอื่น ๆ ที่อาจส่งผลกระทบในลำดับเดียวกับความแตกต่างของฮาร์ดแวร์ระหว่าง CPU หรือไม่ΔΔ\DeltaΔΔ\Delta

1
แบบจำลองทางสถิติสำหรับหน่วยความจำ / การคำนวณโลคัลเวลาแฝงของเครือข่ายและแบนด์วิดท์ตัวสั่นใน HPC
การคำนวณแบบขนานมีการจำลองแบบบ่อยครั้งโดยใช้อัตราการคำนวณในท้องถิ่นที่กำหนดไว้ค่าใช้จ่ายในการตอบสนองและแบนด์วิดท์เครือข่าย ในความเป็นจริงเหล่านี้เป็นตัวแปรเชิงพื้นที่และไม่กำหนดขึ้น การศึกษาเช่นสกินเนอร์และเครเมอร์ (2005)สังเกตการกระจายแบบหลายโมดัล แต่การวิเคราะห์ประสิทธิภาพดูเหมือนว่าจะใช้การแจกแจงแบบกำหนดเวลาหรือแบบเกาส์นเสมอ (ไม่ใช่แค่ไม่ถูกต้องเท่านั้น มีการพัฒนาแบบจำลองทางสถิติที่มีความเที่ยงตรงสูงขึ้นหรือไม่ บัญชีใดที่มีความสัมพันธ์ข้ามกันในการคำนวณ / หน่วยความจำเวลาแฝงและความแปรปรวนของแบนด์วิดท์หรือไม่

3
วิธีการใช้ฟังก์ชั่นการจัดทำดัชนีที่มีประสิทธิภาพสำหรับการรวมสองอนุภาค <ij | kl>
นี่เป็นปัญหาการแจงนับสมมาตรอย่างง่าย ฉันให้พื้นฐานเต็มรูปแบบที่นี่ แต่ไม่จำเป็นต้องมีความรู้เกี่ยวกับเคมีควอนตัม อินทิกรัลสองอนุภาค⟨ i j | k l ⟩⟨ผมJ|kล.⟩\langle ij|kl\rangleคือ: ⟨ i j | k l ⟩ = ∫ψ* * * *ผม( x ) ψ* * * *J( x') ψk( x ) ψล.( x')| x - x'|d3xd3x'⟨ผมJ|kล.⟩=∫ψผม* * * *(x)ψJ* * * *(x')ψk(x)ψล.(x')|x-x'|d3xd3x' \langle ij|kl\rangle = \int {\psi_i^*({\bf x})\psi_j^*({\bf …

3
Nvidia K20X vs GeForce Titan สำหรับการเร่งความเร็ว GPGPU
ฉันพยายามเข้าใจความแตกต่างระหว่างการ์ดกราฟิกทั้งสองสำหรับการคำนวณเชิงวิชาการโดยเฉพาะสำหรับส่วนประกอบ DGEMM หากเราดูสถิติดิบทั้งคู่มีชิป GK110 เหมือนกันมีสถิติเทียบเคียงในแทบทุกหมวดหมู่และฉันเชื่อว่ามีสถาปัตยกรรมแกนหลักเดียวกัน ก่อนที่จะมีส่วนลดใด ๆ K20X นั้นมีราคาของไททันประมาณ 4 เท่า จากมุมมองของประสิทธิภาพดูเหมือนว่าเหมาะสมที่จะใช้ไททันกับ K20X ฉันมีช่วงเวลาที่ยากลำบากในการทำความเข้าใจความแตกต่างที่นี่ใครสามารถส่องสว่างสถานการณ์ได้หรือไม่ ตามที่ทราบมาฉันกำลังมองหาซื้อการ์ดเหล่านี้เพื่อใช้กับแร็คเซิร์ฟเวอร์และทำการเอียงอย่างเต็มรูปแบบโดยพื้นฐานจนกว่าจะตาย แต่ฉันไม่ได้ดูประสิทธิภาพของการใช้ GPU หลายตัวสำหรับงานเดียวที่จะยิ่งสำคัญ

1
ผลกระทบของการย้ายความหมาย C ++ 11 ในบริบทของการคำนวณทางวิทยาศาสตร์คืออะไร?
C ++ 11 แนะนำซีแมนทิกส์การย้ายที่สามารถยกตัวอย่างเช่นปรับปรุงประสิทธิภาพของรหัสในสถานการณ์ที่ C ++ 03 จะต้องดำเนินการสร้างสำเนาหรือคัดลอกการกำหนด นี้บทความรายงานว่ารหัสต่อไปนี้ประสบการณ์ความเร็ว 5x ขึ้นเมื่อรวบรวมกับ C + 11: vector&lt;vector&lt;int&gt; &gt; V; for(int k = 0; k &lt; 100000; ++k) { vector&lt;int&gt; x(1000); V.push_back(x); } ผลกระทบของการย้ายความหมาย C ++ 11 ในบริบทของการคำนวณทางวิทยาศาสตร์คืออะไร? ฉันสนใจในคำถามนี้เป็นเรื่องทั่วไป แต่โดยเฉพาะฉันยังสนใจที่จะย้ายซีแมนทิกส์สำหรับรหัสไฟไนต์อิลิเมนต์ที่เขียนโดยใช้ห้องสมุดเพิ่ม ฉันทดสอบโค้ด C ++ 03 ของตัวเองบางตัวโดยใช้บูสต์รุ่น 1.47.0 (ตั้งแต่รีลีสโน้ตที่กล่าวถึงการย้ายความหมายมีการแนะนำใน 1.48.0) และบูสต์รุ่น 1.53.0 แต่ฉันไม่ได้สังเกตเห็นการปรับปรุงมากนัก ฉันเดาว่าเงินออมใด ๆ …

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

3
ค่าใช้จ่ายในการคูณเมทริกซ์คืออะไร
การคูณเมทริกซ์ (ทั้ง Mat * Mat และ Mat * Vec) มีการปรับมาตราส่วนด้วยจำนวนที่ไม่เป็นศูนย์หรือมีขนาดของเมทริกซ์หรือไม่? หรือการรวมกันของทั้งสอง เกี่ยวกับรูปร่าง ตัวอย่างเช่นฉันมีเมทริกซ์ 100 x 100 พร้อม 100 ค่าในนั้นหรือเมทริกซ์ 1,000 x 1,000 ที่มี 100 ค่า เมื่อยกกำลังสองเมทริกซ์เหล่านี้ (หรือคูณด้วยเมทริกซ์ที่คล้ายกันที่มีการกระจายแบบเดียวกัน) เป็นครั้งแรก (100x100) จะเร็วกว่าวินาที (1000x1000) หรือไม่ มันขึ้นอยู่กับว่าค่าอยู่ที่ไหน? ถ้ามันขึ้นอยู่กับการใช้งานฉันสนใจคำตอบสำหรับ PETSc

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