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

17
มีตัวแก้ปัญหาการเขียนโปรแกรมแบบไม่เชิงเส้นคุณภาพสูงสำหรับ Python หรือไม่?
ฉันมีปัญหาการเพิ่มประสิทธิภาพทั่วโลกที่ไม่ท้าทายเพื่อแก้ปัญหา ปัจจุบันผมใช้กล่องเครื่องมือเพิ่มประสิทธิภาพของ MATLAB (โดยเฉพาะfmincon()กับอัลกอริทึม = 'sqp') ซึ่งมีประสิทธิภาพมาก อย่างไรก็ตามรหัสของฉันส่วนใหญ่อยู่ใน Python และฉันก็ชอบที่จะเพิ่มประสิทธิภาพใน Python ด้วยเช่นกัน มีตัวแก้ NLP ที่มีการผูก Python ที่สามารถแข่งขันได้fmincon()หรือไม่ มันจะต้อง สามารถรับมือกับความไม่เสมอภาคและความไม่เท่าเทียมกันได้ ไม่ต้องการให้ผู้ใช้จัดหายาโคบ ไม่เป็นไรหากไม่รับประกันว่าจะมีประสิทธิภาพระดับโลก ( fmincon()ไม่) fmincon()ฉันกำลังมองหาบางสิ่งบางอย่างที่ทนทานลู่ไปยังท้องถิ่นที่เหมาะสมแม้สำหรับความท้าทายปัญหาและแม้ว่ามันจะช้ากว่าเล็กน้อย ฉันได้พยายามแก้หลายที่ให้บริการผ่าน OpenOpt และพบว่าพวกเขาจะด้อยกว่าของ fmincon/sqpMATLAB เพียงเพื่อเน้นฉันมีสูตรเวิ้งว้างและแก้ปัญหาที่ดี เป้าหมายของฉันคือการเปลี่ยนภาษาเพื่อให้เวิร์กโฟลว์มีความคล่องตัวมากขึ้น เจฟฟ์ชี้ให้เห็นว่าคุณลักษณะบางอย่างของปัญหาอาจเกี่ยวข้องกัน พวกเขาคือ: 10-400 ตัวแปรการตัดสินใจ 4-100 ข้อ จำกัด ความเท่าเทียมกันของพหุนาม (ดีกรีพหุนามมีช่วงตั้งแต่ 1 ถึงประมาณ 8) จำนวนข้อ จำกัด ของความไม่เท่าเทียมกันที่มีเหตุผลเท่ากับจำนวนตัวแปรการตัดสินใจประมาณสองเท่า ฟังก์ชั่นวัตถุประสงค์เป็นหนึ่งในตัวแปรการตัดสินใจ ชาวจาโคเบียนแห่งข้อ จำกัด ความเท่าเทียมมีความหนาแน่นสูงเช่นเดียวกับชาวจาโคเบียนแห่งข้อ จำกัด …

3
ต้นทุนการคำนวณในไลบรารีมาตรฐานคืออะไร
หนึ่งในประเด็นสำคัญที่เราต้องจัดการในการจำลองโมเลกุลคือการคำนวณแรงขึ้นกับระยะทาง ถ้าเราสามารถ จำกัด แรงและระยะทางฟังก์ชั่นที่จะมีอำนาจแม้กระทั่งของระยะห่างแล้วเราก็สามารถคำนวณตารางของระยะทางและไม่ต้องกังวลเกี่ยวกับการวิจัยหากมีอำนาจแปลก แต่แล้วเราต้องจัดการกับ2}RrrR2= r ⋅ rr2=r⋅rr^2 = {\bf r \cdot r}Rrrr = r2--√r=r2r = \sqrt{r^2} คำถามของฉันคือ: การคำนวณมีราคาแพงเพียงใดในห้องสมุดที่ใช้ภาษาทั่วไป (C / C ++, Fortran, Python) และอื่น ๆ ? มีการปรับปรุงประสิทธิภาพจำนวนมากโดยการปรับโค้ดสำหรับสถาปัตยกรรมเฉพาะหรือไม่?x--√x\sqrt{x}
26 efficiency 

3
อะไรคือข้อดีและข้อเสียของการสลายตัวของอนุภาคและอัลกอริธึมการสลายตัวแบบขนานของโดเมนคืออะไร?
ฉันใช้การจำลองแบบโมเลกุล (MD) โดยใช้ซอฟต์แวร์หลายชุดเช่น Gromacs และ DL_POLY ขณะนี้Gromacสนับสนุนการสลายตัวของอนุภาคและอัลกอริธึมการสลายตัวของโดเมน ตามค่าเริ่มต้นการจำลอง Gromacs ใช้การสลายตัวของโดเมนแม้ว่าจะเป็นเวลาหลายปีจนกระทั่งเมื่อเร็ว ๆ นี้การสลายตัวของอนุภาคเป็นวิธีการเดียวที่นำมาใช้ใน Gromacs ในหนึ่งในเอกสาร Gromacs (DOI 10.1002 / jcc.20291) ผู้เขียนให้เหตุผลในการเลือกการสลายตัวของอนุภาคเริ่มต้น: "การตัดสินใจออกแบบช่วงแรกคือทางเลือกในการทำงานกับการสลายตัวของอนุภาคมากกว่าการสลายตัวของโดเมนเพื่อแจกจ่ายงานผ่านโปรเซสเซอร์ในกรณีหลังโดเมนเชิงพื้นที่ได้รับมอบหมายให้โปรเซสเซอร์ซึ่งช่วยให้สามารถค้นหาเพื่อนบ้านเชิงพื้นที่ได้อย่างรวดเร็วโดยการสื่อสารในท้องถิ่นเท่านั้น ไปยังอนุภาคที่เคลื่อนที่ผ่านขอบเขตเชิงพื้นที่มีความสำคัญการสลายตัวของโดเมนเป็นตัวเลือกที่ดีกว่าเมื่อขนาดของระบบเชิงเส้นมีขนาดใหญ่กว่าช่วงของการปฏิสัมพันธ์ซึ่งไม่ค่อยเกิดขึ้นในกรณีของการเคลื่อนที่ของโมเลกุลด้วยการสลายตัวของอนุภาคแต่ละตัวประมวลผล สำหรับเศษส่วนที่กำหนดของอนุภาคโดยใช้รายการเพื่อนบ้านที่คำนวณล่วงหน้าอย่างเท่าเทียมกันกระจายไปทั่วโปรเซสเซอร์FฉันเจFผมJF_{ij}เกิดขึ้นจากการทำงานร่วมกันระหว่างอนุภาค และซึ่งจำเป็นสำหรับการปรับปรุงความเร็วของทั้งอนุภาคและ ผมผมiJJjผมผมiJJjถูกคำนวณเพียงครั้งเดียวและสื่อสารกับโปรเซสเซอร์อื่น ๆ โปรเซสเซอร์ทุกตัวจะเก็บชุดพิกัดที่สมบูรณ์ของระบบไว้ในหน่วยความจำภายในของมันแทนที่จะ จำกัด ที่เก็บข้อมูลให้ตรงกับความต้องการ สิ่งนี้ง่ายกว่าและประหยัดค่าใช้จ่ายในการสื่อสารในขณะที่การอ้างสิทธิ์หน่วยความจำมักไม่ได้เป็นปัจจัย จำกัด แม้แต่กับอนุภาคหลายล้านตัว ในทางกลับกันเพื่อนบ้านซึ่งสามารถบรรจุอนุภาคได้มากถึง 1,000 เท่าของจำนวนนั้นจะถูกกระจายไปทั่วโปรเซสเซอร์ การสื่อสารนั้น จำกัด การส่งพิกัดและแรงหนึ่งครั้งต่อรอบวงแหวนโปรเซสเซอร์ ตัวเลือกเหล่านี้ได้รับการพิสูจน์แล้วว่ามีความแข็งแกร่งเมื่อเวลาผ่านไปและสามารถใช้กับกลุ่มโปรเซสเซอร์ที่ทันสมัยได้อย่างง่ายดาย " พวกเขาหมายถึงอะไรโดย "ขนาดของระบบเชิงเส้น" ในประโยค "การสลายตัวของโดเมนเป็นตัวเลือกที่ดีกว่าเฉพาะเมื่อขนาดของระบบเชิงเส้นมีขนาดใหญ่เกินขอบเขตของการปฏิสัมพันธ์ซึ่งไม่ค่อยเกิดขึ้นในโมเลกุล" จากย่อหน้าข้างต้นฉันได้รับแนวคิดว่าการสลายตัวของอนุภาคมีข้อดีที่ไม่ต้องจัดการกับอนุภาคที่เคลื่อนที่ข้ามขอบเขตของโดเมน แต่คุณต้องมีหน่วยความจำเพียงพอสำหรับโปรเซสเซอร์แต่ละตัวเพื่อจัดเก็บการกำหนดค่าระบบทั้งหมด ดังนั้นการสลายตัวของอนุภาคจึงดูดีมากในขณะที่การสลายตัวของโดเมนดูไม่ดีนัก ฉันแน่ใจว่านี่เป็นคำถามที่ซับซ้อนมาก (และอาจเป็นเรื่องของหนังสือหลายเล่ม) แต่โดยทั่วไปแล้วหากการสลายตัวของอนุภาคดูดีมากทำไมทุกคนต้องใช้การย่อยสลายโดเมน …

3
I / O กลยุทธ์สำหรับปัญหาการคำนวณกับชุดข้อมูลขนาดใหญ่?
กลุ่มวิจัยของฉันมุ่งเน้นไปที่การเปลี่ยนแปลงระดับโมเลกุลซึ่งสามารถสร้างข้อมูลกิกะไบต์ได้เป็นส่วนหนึ่งของวิถีเดียวซึ่งจะต้องวิเคราะห์ ปัญหาหลายอย่างที่เราเกี่ยวข้องกับความสัมพันธ์ในชุดข้อมูลซึ่งหมายความว่าเราจำเป็นต้องติดตามข้อมูลจำนวนมากในหน่วยความจำและวิเคราะห์พวกเขามากกว่าที่จะใช้วิธีการเรียงลำดับมากขึ้น สิ่งที่ฉันอยากรู้คือกลยุทธ์ที่มีประสิทธิภาพที่สุดในการจัดการ I / O ของชุดข้อมูลขนาดใหญ่เป็นสคริปต์ ปกติแล้วเราจะใช้สคริปต์ที่ใช้ Python เพราะมันทำให้การเข้ารหัสไฟล์ I / O น้อยกว่า C หรือ Fortran แต่เมื่อเรามีบรรทัดที่ต้องประมวลผลเป็นสิบหรือร้อยล้านก็ไม่ชัดเจนว่าวิธีที่ดีที่สุดคืออะไร . เราควรพิจารณาทำส่วนไฟล์อินพุตของรหัสใน C หรือกลยุทธ์อื่นมีประโยชน์มากกว่าหรือไม่ (จะโหลดล่วงหน้าทั้งอาเรย์ลงในหน่วยความจำได้ดีกว่าชุดของการอ่านตามลำดับของ "chunks" (ลำดับเมกะไบต์) หรือไม่ หมายเหตุเพิ่มเติมบางส่วน: เรากำลังมองหาเครื่องมือการเขียนสคริปต์เป็นหลักสำหรับการโพสต์การประมวลผลมากกว่าเครื่องมือ "ออนไลน์" ดังนั้นการใช้ Python D = 16LimΔ t → ∞⟨ ( x ( t + Δ t ) - x ( t ) …
15 python  c  efficiency 

2
วิธีที่มีประสิทธิภาพมากที่สุดในการเขียนลูป 'for' ใน Matlab คืออะไร
ฉันได้อ่านแล้วว่าถ้าเช่นฉันมี double forloop ที่วิ่งอยู่เหนือ index ของเมทริกซ์จากนั้นการวางดัชนีการรันคอลัมน์ในลูปด้านนอกนั้นมีประสิทธิภาพมากกว่า ตัวอย่างเช่น: a=zeros(1000); for j=1:1000 for i=1:1000 a(i,j)=1; end end วิธีที่มีประสิทธิภาพมากที่สุดในการเขียนโค้ดคืออะไรถ้าฉันมีforลูปสามลูปขึ้นไป ตัวอย่างเช่น: a=zeros(100,100,100); for j=1:100 for i=1:100 for k=1:100 a(i,j,k)=1; end end end

1
ค่าใช้จ่ายของการค้นหาและการคำนวณ
ฉันสนใจในการตั้งค่าการคำนวณเพื่อตรวจสอบว่าเป็นเกณฑ์ระยะเป็นที่พอใจนั่นคือระยะห่างระหว่างเวกเตอร์และดอกไม้เวกเตอร์xเจควรจะน้อยกว่าบางค่าR ม x ข้อมูลของฉันถูกแบ่งพาร์ติชันตามตารางพิกัดฉาก เนื่องจากทางลัดของฉันมีขนาดเล็กกว่าระยะทางระหว่างจุดปลายของพิกัดที่ใกล้เคียงที่สุดเพื่อนบ้านฉันต้องการเพิ่มตัวแปร "octant" เพื่อตรวจสอบว่ามีการตั้งค่าอย่างถูกต้องหรือไม่:xixi{\bf x}_ixjxj{\bf x}_jrmaxrmaxr_{\rm max} if octant[j] in allowed_list continue ในฐานะ "ลัดวงจร" ถึง if dist(x[i], x[j]) < r_max คำถามของฉันคือการค้นหาแบบบูลีนและการเปรียบเทียบที่มีประสิทธิภาพอย่างไรเมื่อเปรียบเทียบกับการดำเนินการทศนิยม? สิ่งนี้คุ้มค่าที่จะทำกับสถาปัตยกรรมสมัยใหม่หรือไม่?
12 efficiency 

2
เมื่อความแตกต่างอัตโนมัติราคาถูก?
การสร้างความแตกต่างโดยอัตโนมัติช่วยให้เราสามารถประเมินผลอนุพันธ์ของโปรแกรมในอินพุตเฉพาะ มีทฤษฎีบทที่การคำนวณนี้สามารถทำได้ในราคาที่น้อยกว่าห้าเท่าของค่าใช้จ่ายในการเรียกใช้โปรแกรมต้นฉบับ ปัจจัยห้านี้เป็นขอบเขตบน ค่าใช้จ่ายนี้สามารถลดลงได้ในสถานการณ์ใดบ้าง รหัสอนุพันธ์ในสนามจำนวนมากทำงานที่ความเร็วใกล้เคียงกับโปรแกรมต้นฉบับ จะทำอย่างไรเพื่อให้ได้ความเร็วนี้ อะไรคือลักษณะของโปรแกรมต้นฉบับที่สามารถนำไปใช้ประโยชน์เพื่อเพิ่มความเร็วในการคำนวณ? เทคนิควิศวกรรมซอฟต์แวร์ใดที่สามารถนำมาใช้เพื่อเพิ่มความเร็วในการคำนวณ

3
มีความซับซ้อนระหว่าง
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามดังนั้นจึงเป็นหัวข้อสำหรับการแลกเปลี่ยนวิทยาศาสตร์ซ้อนกัน ปิดให้บริการใน5 ปีที่ผ่านมา มีระดับความซับซ้อนที่ใหญ่กว่าและเล็กกว่าหรือไม่O ( n log n )O(n)O(n)O(n)O(nlogn)O(nlog⁡n)O(n \log n)

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

4
การใช้ความแม่นยำสองเท่าอย่างรวดเร็วและแม่นยำของฟังก์ชันแกมมาที่ไม่สมบูรณ์
อะไรคือวิธีที่ทันสมัยในการใช้งานฟังก์ชั่นพิเศษที่มีความแม่นยำสองเท่า ฉันต้องการอินทิกรัลต่อไปนี้: สำหรับและซึ่งสามารถเขียนได้ในรูปของฟังก์ชันแกมม่าที่ไม่สมบูรณ์ต่ำกว่า นี่คือการใช้ Fortran และ C ของฉัน:เมตร=0,1,2, . . t>0Fม.( t ) = ∫10ยู2 มอี- ทียู2dคุณ= γ( m + 12, t )2 ตันm + 12Fm(t)=∫01u2me−tu2du=γ(m+12,t)2tm+12 F_m(t) = \int_0^1 u^{2m} e^{-tu^2} d u = {\gamma(m+{1\over 2}, t)\over 2 t^{m+{1\over 2}}} ม. = 0 , 1 , 2 , . .m=0,1,2,...m=0, …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.