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

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

10
อะไรคือกลยุทธ์ที่ดีสำหรับการปรับปรุงประสิทธิภาพของรหัสของฉัน
ฉันทำงานในวิทยาศาสตร์การคำนวณและด้วยเหตุนี้ฉันจึงใช้เวลาไม่มากกับการพยายามเพิ่มปริมาณงานทางวิทยาศาสตร์ของรหัสจำนวนมากรวมทั้งการทำความเข้าใจประสิทธิภาพของรหัสเหล่านี้ สมมติว่าฉันได้ประเมินประสิทธิภาพเทียบกับความสามารถในการอ่าน / การใช้ซ้ำได้ / การบำรุงรักษาที่ไม่ดีของซอฟต์แวร์ที่ฉันกำลังทำงานอยู่และฉันได้ตัดสินใจแล้วว่าถึงเวลาแล้วที่จะต้องมีประสิทธิภาพ สมมติว่าฉันรู้ว่าฉันไม่มีอัลกอริทึมที่ดีกว่าสำหรับปัญหาของฉัน (ในแง่ของฟลอพ / s และแบนด์วิดท์หน่วยความจำ) คุณสามารถสมมติว่ารหัสฐานของฉันเป็นภาษาระดับต่ำเช่น C, C ++ หรือ Fortran สุดท้ายสมมติว่าไม่มีการขนานในโค้ดหรือว่าเราสนใจเพียงประสิทธิภาพในแกนเดียวเท่านั้น อะไรคือสิ่งสำคัญที่สุดที่ควรลองก่อน ฉันจะรู้ได้อย่างไรว่าได้ประสิทธิภาพมากแค่ไหน?

7
การวิเคราะห์อัลกอริทึมโดยการนับฟลอพล้าสมัยหรือไม่
ในหลักสูตรการวิเคราะห์เชิงตัวเลขของฉันฉันเรียนรู้ที่จะวิเคราะห์ประสิทธิภาพของอัลกอริทึมโดยการนับจำนวนของการดำเนินการจุดลอยตัว (flops) ที่พวกเขาต้องการเทียบกับขนาดของปัญหา ตัวอย่างเช่นในข้อความของ Trefethen & Bau ใน Numerical Linear Algebra มีแม้กระทั่งรูปภาพที่ดูแบบ 3 มิติของจำนวนฟล็อป ตอนนี้มันเป็นแฟชั่นที่จะกล่าวว่า "flops ฟรี" เพราะเวลาแฝงของหน่วยความจำในการดึงข้อมูลใด ๆ ที่ไม่ได้อยู่ในแคชนั้นยิ่งใหญ่กว่าค่าใช้จ่ายของ flop แต่เรายังสอนนักเรียนให้นับจำนวนอย่างน้อยในหลักสูตรการวิเคราะห์เชิงตัวเลข เราควรสอนพวกเขาให้นับการเข้าถึงหน่วยความจำแทนหรือไม่ เราจำเป็นต้องเขียนตำราใหม่หรือไม่ หรือการเข้าถึงหน่วยความจำเฉพาะเกินไปที่จะใช้เวลากับเครื่อง? แนวโน้มระยะยาวจะเป็นอย่างไรในแง่ของการไม่ว่าจะเป็น flops หรือการเข้าถึงหน่วยความจำเป็นคอขวด? หมายเหตุ: คำตอบบางข้อด้านล่างดูเหมือนจะตอบคำถามต่าง ๆ เช่น "ฉันควรเขียนการใช้งานของฉันใหม่อีกครั้งเพื่อบันทึก flops สองสามครั้งหรือปรับปรุงประสิทธิภาพแคชหรือไม่" แต่สิ่งที่ฉันถามนั้นเป็นไปตามแนวของ " มีประโยชน์มากกว่าหรือไม่ที่จะประเมินความซับซ้อนของอัลกอริทึมในแง่ของการดำเนินการทางคณิตศาสตร์หรือการเข้าถึงหน่วยความจำ ?"

4
อะไรทำให้ Fortran เร็ว
Fortran มีสถานที่พิเศษในการเขียนโปรแกรมเชิงตัวเลข คุณสามารถสร้างซอฟต์แวร์ที่ดีและรวดเร็วในภาษาอื่น ๆ ได้ แต่ Fortran ยังคงทำงานได้ดีแม้อายุจะมาก ยิ่งไปกว่านั้นการสร้างโปรแกรมที่รวดเร็วใน Fortran ง่ายขึ้น ฉันได้ทำโปรแกรมเร็วใน C ++ แต่คุณต้องระวังให้มากขึ้นเกี่ยวกับสิ่งต่าง ๆ เช่น aliasing ของตัวชี้ ดังนั้นจะต้องมีเหตุผลสำหรับสิ่งนี้และหนึ่งในเทคนิคมาก เป็นเพราะคอมไพเลอร์สามารถเพิ่มประสิทธิภาพมากขึ้น? ฉันอยากรู้รายละเอียดทางเทคนิคจริง ๆ ดังนั้นถ้าฉันใช้ภาษาอื่นฉันสามารถนำสิ่งเหล่านี้มาพิจารณา ตัวอย่างเช่นฉันรู้ - หรือดังนั้นฉันคิดว่า - สิ่งหนึ่งคือมาตรฐานระบุว่าพอยน์เตอร์ติดกันในหน่วยความจำเสมอซึ่งหมายถึงการเข้าถึงหน่วยความจำที่เร็วขึ้น ฉันเชื่อว่าคุณสามารถทำได้ใน C ++ โดยให้ธงกับคอมไพเลอร์ ด้วยวิธีนี้จะช่วยให้ทราบว่า Fortran ทำอะไรได้ดีดังนั้นหากใช้ภาษาอื่นเราสามารถเลียนแบบได้

4
ตัวดำเนินการแบ็กสแลช MATLAB จะแก้ปัญหา
ฉันกำลังเปรียบเทียบรหัสของฉันบางส่วนกับรหัส "หุ้น" MATLAB ฉันประหลาดใจที่ผลลัพธ์ ฉันรันโค้ดตัวอย่าง (Sparse Matrix) n = 5000; a = diag(rand(n,1)); b = rand(n,1); disp('For a\b'); tic;a\b;toc; disp('For LU'); tic;LULU;toc; disp('For Conj Grad'); tic;conjgrad(a,b,1e-8);toc; disp('Inv(A)*B'); tic;inv(a)*b;toc; ผล : For a\b Elapsed time is 0.052838 seconds. For LU Elapsed time is 7.441331 seconds. For Conj Grad Elapsed time is …

5
ความแตกต่างด้านประสิทธิภาพระหว่าง ATLAS และ MKL หรือไม่
ATLAS คือการแทนที่ BLAS / LAPACK ฟรีที่ปรับแต่งตัวเองไปยังเครื่องเมื่อรวบรวม MKL เป็นห้องสมุดเชิงพาณิชย์ที่จัดส่งโดย Intel ไลบรารีทั้งสองนี้เปรียบได้หรือไม่เมื่อเทียบกับประสิทธิภาพหรือ MKL มีความสามารถเหนือกว่าสำหรับงานบางอย่างหรือไม่? ถ้าเป็นเช่นนั้น

4
มีเครื่องมือหรือวิธีการใดบ้างที่สามารถเพิ่มความเร็วให้กับโค้ดที่เขียนใน Python
แบ็คกราวน์:ฉันคิดว่าฉันอาจต้องการพอร์ตโค้ดบางอย่างที่คำนวณเมทริกซ์เอ็กซ์โปเนนเชียล - เวกเตอร์ผลิตภัณฑ์โดยใช้วิธีการย่อย Krylov จาก MATLAB ถึง Python (โดยเฉพาะฟังก์ชั่นexpmvpของJitse Niesenซึ่งใช้อัลกอริทึมที่อธิบายไว้ในบทความนี้) อย่างไรก็ตามฉันรู้ว่าถ้าฉันใช้ฟังก์ชั่นจำนวนมากจากโมดูลที่ได้มาจากไลบรารีที่รวบรวม (เช่นฉันใช้ raw Python เท่านั้น ในฟังก์ชั่น) แล้วมันอาจจะค่อนข้างช้า คำถาม:มีเครื่องมือหรือวิธีการใดบ้างที่สามารถช่วยฉันเร่งความเร็วโค้ดที่ฉันเขียนใน Python เพื่อประสิทธิภาพการทำงาน โดยเฉพาะอย่างยิ่งฉันสนใจเครื่องมือที่ทำให้กระบวนการเป็นไปโดยอัตโนมัติมากที่สุดแม้ว่าวิธีการทั่วไปจะได้รับการต้อนรับเช่นกัน หมายเหตุ:ฉันมีอัลกอริทึมของ Jitse รุ่นเก่ากว่าและไม่ได้ใช้ในขณะนี้ มันง่ายมากที่จะทำให้รหัสนี้เร็ว แต่ฉันรู้สึกว่ามันจะเป็นตัวอย่างที่ดีและเกี่ยวข้องกับงานวิจัยของฉันเอง การถกเถียงวิธีการของฉันสำหรับการใช้อัลกอริทึมเฉพาะนี้ใน Python เป็นคำถามอื่นทั้งหมด

4
เมื่อใดที่ฉันควรใช้เทมเพลตนิพจน์ C ++ ในวิทยาศาสตร์การคำนวณและเมื่อใดที่ฉัน * ไม่ควรใช้เทมเพลตเหล่านี้
สมมติว่าฉันกำลังทำงานกับรหัสทางวิทยาศาสตร์ใน C ++ ในการสนทนาเมื่อเร็ว ๆ นี้กับเพื่อนร่วมงานเป็นที่ถกเถียงกันอยู่ว่าเทมเพลตนิพจน์อาจเป็นสิ่งที่ไม่ดีจริงๆซึ่งอาจทำให้ซอฟต์แวร์สามารถคอมไพล์ได้ใน gcc บางรุ่นเท่านั้น สมมุติว่าปัญหานี้ส่งผลกระทบต่อรหัสทางวิทยาศาสตร์บางประการตามที่กล่าวถึงในคำบรรยายของเรื่องล้อเลียนเรื่อง Downfallการล้อเลียนของหายนะนี้(นี่เป็นเพียงตัวอย่างเดียวที่ฉันรู้ดังนั้นลิงก์) อย่างไรก็ตามคนอื่น ๆ แย้งว่าเทมเพลตการแสดงออกมีประโยชน์เพราะพวกเขาสามารถเพิ่มประสิทธิภาพการทำงานได้เช่นเดียวกับในบทความนี้ใน SIAM Journal of Scientific Computingโดยหลีกเลี่ยงการเก็บผลลัพธ์กลางในตัวแปรชั่วคราว ฉันไม่รู้อะไรมากมายเกี่ยวกับเทมเพลตการเขียนโปรแกรมใน C ++ แต่ฉันรู้ว่ามันเป็นวิธีการหนึ่งที่ใช้ในการแยกความแตกต่างโดยอัตโนมัติและในการคำนวณช่วงเวลาซึ่งเป็นวิธีที่ฉันได้เข้าร่วมการสนทนาเกี่ยวกับเทมเพลตนิพจน์ เมื่อพิจารณาทั้งข้อดีที่เป็นไปได้ของประสิทธิภาพการทำงานและข้อเสียที่อาจเกิดขึ้นในการบำรุงรักษา (หากเป็นคำที่เหมาะสม) เมื่อใดฉันจึงควรใช้เทมเพลตนิพจน์ C ++ ในวิทยาศาสตร์การคำนวณและฉันควรหลีกเลี่ยงเมื่อใด

1
อะไรคือวิธีที่ต้องการและมีประสิทธิภาพสำหรับการแก้ไขข้อมูลหลายมิติ?
อะไรคือวิธีที่ต้องการและมีประสิทธิภาพสำหรับการแก้ไขข้อมูลหลายมิติ? สิ่งที่ฉันกังวลเกี่ยวกับ: ประสิทธิภาพและหน่วยความจำสำหรับการสร้างการประเมินผลเดี่ยว / ชุด การจัดการมิติตั้งแต่ 1 ถึง 6 เชิงเส้นหรือสูงกว่าคำสั่ง ความสามารถในการรับการไล่ระดับสี (ถ้าไม่ใช่เชิงเส้น) กริดปกติกับกระจัดกระจาย ใช้เป็นฟังก์ชัน Interpolating เช่นค้นหารากหรือย่อขนาด ความสามารถในการอนุมาน มีการใช้งานโอเพนซอร์ซที่มีประสิทธิภาพหรือไม่ ฉันมีโชคบางส่วนกับ scipy.interpolate และความสนใจจาก scikit เรียนรู้ ฉันไม่ได้ลอง splines, Chebyshev polynomials เป็นต้น นี่คือสิ่งที่ฉันพบจนถึงในหัวข้อนี้: Python 4D การประมาณเชิงเส้นในตารางสี่เหลี่ยม การแก้ไขที่รวดเร็วของข้อมูล 3D ตัวอย่างเป็นระยะด้วยช่วงเวลาที่แตกต่างกันใน x, y และ z การแก้ไขข้อมูลกริดแบบปกติอย่างรวดเร็ว วิธีการแก้ไขแบบกระจายหลายตัวแปรที่ดีที่สุดสำหรับการใช้งานจริงคืออะไร?

3
Intel Fortran Compiler: เคล็ดลับในการเพิ่มประสิทธิภาพที่รวบรวม
ฉันจะเริ่มต้นด้วยประสบการณ์ส่วนตัวในห้องแล็บของเรา ย้อนกลับไปใน ifort 9 และ 10 วันเราเคยก้าวร้าวมากกับการปรับให้เหมาะสมรวบรวมด้วยแฟล็ก -O3 และตัวประมวลผลเฉพาะ (-xW -xSSE4.2 เป็นต้น) แต่เริ่มต้นด้วย ifort 11 เราเริ่มสังเกตเห็น: 1. ความไม่สอดคล้องกันบางอย่างในผลลัพธ์ (เพราะซีแมนทิกส์ไม่ได้รับการเก็บรักษาไว้) 2. กำไรเล็กลงเมื่อเทียบกับ -O2 ดังนั้นในปัจจุบันเรามักจะคอมไพล์ด้วย -O2 และ -xhost คุณมีคำแนะนำที่ดีกว่าสำหรับ ifort 11 หรือไม่ การเปลี่ยนแปลงนี้จะเกิดขึ้นอีกครั้งเมื่อเราเปลี่ยนเป็น ifort 12 หรือไม่ ขอบคุณล่วงหน้า.

1
ประสิทธิภาพของการดำเนินการของอาร์เรย์ Python / Numpy มีขนาดเพิ่มขึ้นอย่างไร
Python / Numpy arrays ปรับขนาดอย่างไรเมื่อเพิ่มขนาดอาเรย์ สิ่งนี้ขึ้นอยู่กับพฤติกรรมบางอย่างที่ฉันสังเกตเห็นในขณะทำการเปรียบเทียบรหัส Python สำหรับคำถามนี้: วิธีแสดงนิพจน์ที่ซับซ้อนนี้โดยใช้ชิ้นส่วนที่เป็นก้อน ปัญหาส่วนใหญ่เกี่ยวข้องกับการทำดัชนีเพื่อเติมอาเรย์ ฉันพบว่าข้อดีของการใช้ Cython และ Numpy (ไม่ดีมาก) กับ Python loop แตกต่างกันไปขึ้นอยู่กับขนาดของอาร์เรย์ที่เกี่ยวข้อง ทั้ง Numpy และ Cython มีความได้เปรียบด้านประสิทธิภาพที่เพิ่มขึ้นจนถึงจุดหนึ่ง (บางแห่งมีขนาดประมาณสำหรับ Cython และN = 2000สำหรับ Numpy บนแล็ปท็อปของฉัน) หลังจากนั้นข้อดีของมันก็ลดลง (ฟังก์ชัน Cython ยังคงเร็วที่สุด)ยังไม่มีข้อความ= 500N=500N=500ยังไม่มีข้อความ= 2000N=2000N=2000 ฮาร์ดแวร์นี้ถูกกำหนดหรือไม่? ในแง่ของการทำงานกับอาร์เรย์ขนาดใหญ่แนวทางปฏิบัติที่ดีที่สุดที่ควรปฏิบัติตามสำหรับรหัสที่ประสิทธิภาพนั้นได้รับการชื่นชมคืออะไร คำถามนี้ ( เพราะเหตุใดการปรับขนาดการคูณเมทริกซ์ - เวกเตอร์ของฉันไม่ได้ ) อาจเกี่ยวข้องกัน แต่ฉันสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการที่แตกต่างกันของวิธีการรักษาอาร์เรย์ในระดับไพ ธ อนเมื่อเทียบกัน

3
ระบบเส้นตรงแบบสมมาตรและคงที่สามารถแก้ไขได้ในเวลาสมการกำลังสองหลังจากการคำนวณล่วงหน้าหรือไม่
คือมีO(n3+n2k)O(n3+n2k)O(n^3+n^2 k)วิธีการที่จะแก้ปัญหาkkkเชิงเส้นระบบของฟอร์ม(Di+A)xi=bi(Di+A)xi=bi(D_i + A) x_i = b_iที่เป็นเมทริกซ์เมจิคงที่และD ฉันเป็นเมทริกซ์ทแยงมุมบวก?AAADiDiD_i ตัวอย่างเช่นถ้าแต่ละDiDiD_iเป็นสเกลาร์ก็พอเพียงที่จะคำนวณ SVD ของ อย่างไรก็ตามการแบ่งนี้สำหรับDทั่วไปเนื่องจากการขาดการสับเปลี่ยนAAADDD อัปเดต : คำตอบคือ "ไม่" ไม่มีใครมีสัญชาตญาณที่น่าสนใจว่าทำไม? ไม่มีคำตอบหมายความว่าไม่มีวิธีที่ไม่จำเป็นในการบีบอัดข้อมูลระหว่างผู้ให้บริการที่ไม่เปิดใช้งานสองคน มันไม่ได้เป็นเรื่องที่น่าประหลาดใจนัก แต่มันเป็นการดีที่จะเข้าใจมันมากขึ้น

4
แนวทางปฏิบัติที่ดีที่สุดในการจัดสรรหน่วยความจำแบบมัลติคอร์ / NUMA แบบพกพา / การกำหนดค่าเริ่มต้น
เมื่อทำการคำนวณแบนด์วิดท์หน่วยความจำที่ จำกัด จะดำเนินการในสภาพแวดล้อมหน่วยความจำที่ใช้ร่วมกัน (เช่นเธรดผ่าน OpenMP, Pthreads หรือ TBB) จะมีภาวะที่กลืนไม่เข้าคายไม่ออกของวิธีการตรวจสอบให้แน่ใจว่าหน่วยความจำกระจายอย่างถูกต้องผ่านหน่วยความจำกายภาพบัสหน่วยความจำ "ท้องถิ่น" แม้ว่าอินเทอร์เฟซนั้นไม่สามารถพกพาได้ระบบปฏิบัติการส่วนใหญ่มีวิธีตั้งค่าความสัมพันธ์ของเธรด (เช่นpthread_setaffinity_np()ในระบบ POSIX จำนวนมากsched_setaffinity()บน Linux SetThreadAffinityMask()บน Windows) นอกจากนี้ยังมีไลบรารีเช่นhwlocสำหรับกำหนดลำดับชั้นของหน่วยความจำ แต่น่าเสียดายที่ระบบปฏิบัติการส่วนใหญ่ยังไม่ได้เตรียมวิธีในการตั้งค่านโยบายหน่วยความจำ NUMA Linux เป็นข้อยกเว้นที่น่าทึ่งด้วยlibnumaการอนุญาตให้แอปพลิเคชันจัดการนโยบายหน่วยความจำและการโยกย้ายหน้าเว็บที่หน้าย่อย (ตั้งแต่เดือนพ. ศ. 2547 เป็นต้นมาซึ่งมีอยู่ทั่วไป) ระบบปฏิบัติการอื่นคาดว่าผู้ใช้จะปฏิบัติตามนโยบาย "สัมผัสแรก" โดยนัย การทำงานกับนโยบาย "สัมผัสแรก" หมายความว่าผู้โทรควรสร้างและแจกจ่ายเธรดด้วยความสัมพันธ์ที่พวกเขาวางแผนที่จะใช้ในภายหลังเมื่อเขียนไปยังหน่วยความจำที่จัดสรรใหม่ครั้งแรก (ระบบน้อยมากที่มีการกำหนดค่าเช่นที่malloc()พบหน้าจริง ๆ มันแค่สัญญาว่าจะพบพวกเขาเมื่อพวกเขาจะผิดจริงอาจจะโดยกระทู้ต่าง ๆ ) นี่ก็หมายความว่าการจัดสรรการใช้calloc()หรือการเริ่มต้นทันทีหลังจากการจัดสรรหน่วยความจำใช้memset()เป็นอันตราย หน่วยความจำทั้งหมดบนบัสหน่วยความจำของคอร์ที่รันเธรดที่จัดสรรซึ่งนำไปสู่แบนด์วิดท์หน่วยความจำกรณีที่แย่ที่สุดเมื่อเข้าถึงหน่วยความจำจากหลายเธรด เช่นเดียวกับตัวดำเนินการ C ++ newซึ่งยืนยันในการเริ่มต้นการจัดสรรใหม่จำนวนมาก (เช่นstd::complex) ข้อสังเกตบางประการเกี่ยวกับสภาพแวดล้อมนี้: การจัดสรรสามารถทำ "กลุ่มรวม" แต่ตอนนี้การจัดสรรกลายเป็นผสมในรูปแบบเกลียวซึ่งเป็นที่ไม่พึงประสงค์สำหรับห้องสมุดซึ่งอาจต้องโต้ตอบกับลูกค้าโดยใช้รูปแบบเกลียวที่แตกต่างกัน (อาจแต่ละคนมีเธรดพูลของตัวเอง) RAII …

6
ในระดับทั่วไปและการเขียนโปรแกรมเมตาโดยใช้เทมเพลต C ++ มีประโยชน์ในด้านวิทยาศาสตร์คอมพิวเตอร์อย่างไร
ภาษา C ++ ให้การเขียนโปรแกรมทั่วไปและmetaprogrammingผ่านแม่ เทคนิคเหล่านี้พบวิธีในแพ็คเกจการคำนวณทางวิทยาศาสตร์ขนาดใหญ่จำนวนมาก (เช่นMPQC , LAMMPS , CGAL , Trilinos ) แต่สิ่งที่พวกเขามีส่วนร่วมในการคำนวณทางวิทยาศาสตร์ในมูลค่าที่นอกเหนือไปจากภาษาที่ไม่ใช่ทั่วไปและไม่ใช่เมตาเช่น C หรือ Fortran ในแง่ของเวลาในการพัฒนาโดยรวมและการใช้งานสำหรับประสิทธิภาพเท่าเทียมกันหรือเพียงพอ? เมื่อได้รับงานการคำนวณทางวิทยาศาสตร์แล้วการเขียนโปรแกรมแบบทั่วไปและเมตาดาต้าผ่านเทมเพลต C ++ ได้แสดงให้เห็นถึงการปรับปรุงประสิทธิภาพการผลิตการแสดงออกหรือความสามารถในการใช้งานซึ่งวัดได้จากการวัดประสิทธิภาพที่เป็นที่เข้าใจกันดี ตามลําดับความเสี่ยงใดที่เกี่ยวข้องกับการใช้เทมเพลต C ++ สำหรับการเขียนโปรแกรมทั่วไปและเมตาดาต้า

2
การใช้โอเพ่นซอร์สของการประมาณด้วยเหตุผลกับฟังก์ชั่น
ฉันกำลังมองหาการใช้งานโอเพนซอร์ซบางส่วน (Python, C, C ++, Fortran นั้นใช้ได้) จากการประมาณด้วยเหตุผลถึงฟังก์ชั่น มีบางอย่างในบทความ [1] ฉันให้มันฟังก์ชั่นและมันให้สองชื่อพหุนามซึ่งมีอัตราส่วนคือการประมาณในช่วงเวลาที่กำหนดและข้อผิดพลาดกำลังสั่นด้วยแอมพลิจูดเดียวกันและเป็นการประมาณที่เหมาะสมที่สุดหรือใกล้เคียงกับมัน นี่คือสิ่งที่ฉันพบ: ดูเหมือนว่า chebfun สามารถทำได้ แต่ฉันไม่สามารถเข้าถึง Matlab * มีโปรแกรมอย่างง่ายในส่วนที่ 5-13 "Rational Chebyshev Approxation" ในสูตรเชิงตัวเลข (NR) Mathematica มีการประหยัดเชิงเหตุผลการประมาณค่าแบบย่อและ MiniMaxApproximation ฉันสงสัยว่ามีบางสิ่งที่ใหม่กว่า (ทดสอบได้ดีกว่า) กว่ารหัส NR หรือไม่ แอปพลิเคชันของฉันคือฉันมีชุดของฟังก์ชั่นพิเศษประมาณ 10 ซึ่งได้รับทั้งชุดไฮเพอร์เมตริกซ์หรือสูตรบางอย่างที่มีการยกเลิกตัวเลขและฉันต้องการมีฟังก์ชั่นการประเมินที่รวดเร็วและแม่นยำที่ถูกเรียกใช้ วงในสุดของการคำนวณองค์ประกอบเมทริกซ์ของอนุภาคสองตัวในการคำนวณ Hartree Fock ฉันวางตัวอย่างง่ายๆของฟังก์ชั่นที่เหมาะกับฉันที่ [2] อย่างที่คุณเห็นมันอาจใช้สูตรโดยตรงหรืออนุกรมรอบ ๆ x = 0 ที่ฉันคำนวณโดยใช้ SymPy มันเรียงลำดับของงาน แต่ความแม่นยำไม่ดีประมาณ …

3
การเปรียบเทียบวิธีการวนซ้ำ: จำนวนการวนซ้ำเทียบกับเวลาของ cpu
ฉันกำลังเปรียบเทียบวิธีการวนซ้ำสองวิธีสำหรับการย้อนกลับเมทริกซ์เมทริกแบบสุ่ม เนื่องจากเมทริกซ์เป็นแบบสุ่มทุกกรณีทดสอบต้องใช้ทั้งการวนซ้ำและเวลาที่ต่างกัน คำถามของฉันอยู่ด้านบนของเวลา CPU เฉลี่ยเป็นค่าเฉลี่ยของการทำซ้ำโดยทั้งสองวิธีข้อมูลที่เป็นประโยชน์สำหรับการเปรียบเทียบวิธี

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