วิทยาศาสตร์การคำนวณ

ถามตอบสำหรับนักวิทยาศาสตร์ที่ใช้คอมพิวเตอร์เพื่อแก้ปัญหาทางวิทยาศาสตร์

2
มีอัลกอริทึมที่มีประสิทธิภาพสำหรับเศษส่วนต่อเนื่องที่มีค่าเมทริกซ์หรือไม่
สมมติว่าฉันมีสมการเมทริกซ์ที่กำหนดซ้ำเป็น A[n] = inverse([1 - b[n]A[n+1]]) * a[n] จากนั้นสมการสำหรับ A [1] จะดูคล้ายกับเศษส่วนต่อเนื่องซึ่งมีวิธีการที่มีประสิทธิภาพสูงบางอย่างที่หลีกเลี่ยงการคำนวณซ้ำที่น่าเบื่อ (ดู "สูตรอาหารเชิงตัวเลข" สำหรับตัวอย่างบางส่วน) อย่างไรก็ตามฉันสงสัยว่ามีวิธีการเปรียบเทียบที่อนุญาตให้สัมประสิทธิ์ b [n] และ [n] เป็นเมทริกซ์โดยมีข้อ จำกัด เพียงอย่างเดียวที่ b [n] A [n + 1] เป็นเมทริกซ์จตุรัสดังนั้นเมทริกซ์ 1 - b[n]A[n+1] กลับด้านได้จริง
18 algorithms 

4
วิธีการทางสถิติแบบใดที่ GPU เร็วกว่าซีพียู?
ฉันเพิ่งติดตั้งการ์ดกราฟิก Nvidia GT660 บนเดสก์ท็อปของฉันและหลังจากการต่อสู้บางอย่างฉันก็สามารถเชื่อมต่อกับ R ได้ ฉันได้เล่นกับแพ็คเกจ R หลายอันที่ใช้ GPU โดยเฉพาะอย่างยิ่ง gputools และฉันได้เปรียบเทียบเวลาที่ GPU และ CPU ของฉันใช้เพื่อดำเนินการขั้นพื้นฐาน: การแปลงเมทริกซ์ (CPU เร็วขึ้น) การสลายตัว qr (CPU เร็วขึ้น) เมทริกซ์ความสัมพันธ์ขนาดใหญ่ (เร็วกว่า CPU) การคูณเมทริกซ์ (GPU เร็วขึ้นมาก!) สังเกตว่าฉันได้ทำการทดลองกับ gputools เป็นหลักดังนั้นบางทีแพ็คเกจอื่นอาจทำงานได้ดีขึ้น ในแง่กว้างคำถามของฉันคืออะไรการดำเนินการทางสถิติประจำที่อาจมีมูลค่าการดำเนินการใน GPU มากกว่า CPU?
18 r  gpu 

6
เราจะกำหนดกลุ่มจุดของโมเลกุลได้อย่างไร?
ในที่สุดคุณก็สามารถค้นหาวิธีการจัดเรียงอะตอมในหน่วยงานโมเลกุลที่ค้นพบใหม่ของคุณ ขณะนี้คุณกำลังอยู่ในความครอบครองของพิกัดอะตอมมากมายชนิดอะตอมความยาวพันธะประเภทพันธะและสิ่งที่ไม่ได้อยู่ในโมเลกุลของคุณ ตอนนี้คุณสนใจที่จะกำหนดกลุ่มจุด (กลุ่มสมมาตร) ของโมเลกุลของคุณ สำหรับโมเลกุลอย่างง่ายเช่นมีเธน ( ) หรือเบนซีน ( ) มันเป็นเรื่องง่ายของการตรวจสอบด้วยภาพเพื่อกำหนดกลุ่มจุดที่มีโมเลกุลอยู่ อย่างไรก็ตามนี่เป็นไปไม่ได้เมื่อโมเลกุลมีขนาดค่อนข้างใหญ่D 6 ชมTdTdT_dD6 ชมD6ชั่วโมงD_{6h} เมื่อกำหนดโมเลกุลที่เก็บไว้ในรูปแบบข้อมูลที่สะดวก (* .pdb, * .mol ​​ฯลฯ ) คุณจะกำหนดกลุ่มสมมาตรของโมเลกุลได้อย่างไร

3
ระยะทางแบบยุคลิดใน Octave
ฉันอยากรู้ว่ามีวิธีที่รวดเร็วในการคำนวณระยะทางแบบยุคลิดของเวกเตอร์สองตัวใน Octave หรือไม่ ดูเหมือนว่าไม่มีฟังก์ชั่นพิเศษสำหรับสิ่งนั้นดังนั้นฉันควรใช้สูตรด้วยsqrtหรือไม่

3
C ++ แนวทางปฏิบัติที่ดีที่สุดสำหรับการจัดการกับค่าคงที่จำนวนมากตัวแปรในรหัสทางวิทยาศาสตร์
ฉันกำลังพัฒนารหัสเพื่อจำลองการไหลของของเหลวกับสารชีวภาพที่มีอยู่ในการไหล เรื่องนี้เกี่ยวข้องกับสมการเนเวียร์ - สโตกส์คู่กับแบบจำลองทางชีวภาพเพิ่มเติม มีหลายพารามิเตอร์ / ค่าคงที่ ฉันได้เขียนฟังก์ชันเพื่อจัดการการคำนวณที่สำคัญ แต่ปัญหาที่ฉันมีคือค่าคงที่ / พารามิเตอร์จำนวนมากที่การคำนวณเหล่านี้ขึ้นอยู่กับ ดูเหมือนว่ายุ่งยากที่จะส่งผ่านอาร์กิวเมนต์ 10-20 ข้อไปยังฟังก์ชัน อีกทางเลือกหนึ่งคือการทำให้ค่าคงที่ทั่วโลกตัวแปรทั้งหมด แต่ฉันรู้ว่านี่คือขมวดคิ้วใน C ++ วิธีมาตรฐานในการจัดการอินพุตจำนวนมากให้กับฟังก์ชันคืออะไร ฉันควรสร้าง struct และส่งมันแทนหรือไม่? ขอขอบคุณ
17 c++ 

3
การใช้งาน BLAS รับประกันว่าจะให้ผลลัพธ์ที่แน่นอนหรือไม่
ด้วยการใช้งาน BLAS สองแบบที่แตกต่างกันเราคาดหวังได้หรือไม่ว่าพวกเขาทำการคำนวณจุดลอยตัวที่แน่นอนและกลับผลลัพธ์เดียวกัน หรือสามารถเกิดขึ้นได้เช่นหนึ่งคำนวณผลิตภัณฑ์สเกลาร์เป็น และอีกหนึ่งเป็น ( x 1 y 1 + x 2 y 2 ) + ( x 3 y 3 + x 4( ( x1Y1+ x2Y2) + x3Y3) +x4Y4((x1Y1+x2Y2)+x3Y3)+x4Y4 ((x_1y_1 + x_2y_2) + x_3y_3) + x_4y_4 ดังนั้นอาจจะให้ผลที่แตกต่างกันใน IEEE ลอยคำนวณจุด?( x1Y1+ x2Y2) + ( x3Y3+ x4Y4) ,(x1Y1+x2Y2)+(x3Y3+x4Y4), (x_1y_1 + …

2
ฉันควรเรียนรู้ Fortran เวอร์ชันใด
ฉันเป็นนักเรียนวิศวกรรมเครื่องกลที่สนใจในสาขาวิศวกรรมการบินและอวกาศที่ฉันบอกว่า Fortran ยังคงใช้กันทั่วไป Fortran รุ่นใดที่ฉันควรใช้เวลาในการเรียนรู้
17 fortran 

4
ทำไมวิธี Runge – Kutta ที่มีลำดับสูงกว่าจึงไม่ได้ใช้บ่อยกว่า
ฉันแค่อยากรู้ว่าทำไมลำดับขั้นสูง (เช่นมากกว่า 4) วิธี Runge – Kutta แทบไม่เคยพูดถึง / ใช้ (อย่างน้อยก็เพื่อความรู้ของฉัน) ฉันเข้าใจว่าต้องใช้เวลาในการคำนวณมากขึ้นต่อขั้นตอน (เช่นRK14 ที่มีขั้นตอนการฝังลำดับที่ 12 ) แต่มีข้อเสียอื่น ๆ ของการใช้คำสั่ง Runge – Kutta ที่สูงกว่า (เช่นปัญหาด้านเสถียรภาพ) หรือไม่ เมื่อนำไปใช้กับสมการด้วยโซลูชันที่มีความผันผวนสูงในช่วงเวลาที่รุนแรงวิธีการที่มักจะมีคำสั่งที่สูงกว่านี้จะไม่เป็นที่ต้องการหรือไม่
17 ode  runge-kutta 

5
โทษประสิทธิภาพ 20% สำหรับการออกแบบซอฟต์แวร์ที่ดี
ฉันกำลังเขียนห้องสมุดขนาดเล็กสำหรับการคำนวณเมทริกซ์กระจัดกระจายเป็นวิธีการสอนตัวเองให้ใช้ประโยชน์จากการเขียนโปรแกรมเชิงวัตถุได้ดีที่สุด ฉันทำงานหนักมากในการสร้างแบบจำลองวัตถุที่ดีซึ่งชิ้นส่วน (เมทริกซ์กระจัดกระจายและกราฟที่อธิบายโครงสร้างการเชื่อมต่อของพวกเขา) เป็นคู่ที่หลวมมาก ในมุมมองของฉันเองรหัสนั้นสามารถขยายได้และสามารถบำรุงรักษาได้มากขึ้น อย่างไรก็ตามมันค่อนข้างช้ากว่าถ้าฉันใช้วิธีทู่ เพื่อทดสอบข้อเสียของการมีแบบจำลองวัตถุนี้ฉันเขียนชนิดเมทริกซ์กระจัดกระจายใหม่ซึ่งทำให้การห่อหุ้มของกราฟต้นแบบเพื่อดูว่าจะทำงานได้เร็วเท่าใด ตอนแรกมันดูเยือกเย็นมาก รหัสที่ฉันเคยภูมิใจที่รันช้ากว่ารุ่น 60% โดยไม่มีการออกแบบซอฟต์แวร์ที่หรูหรา แต่ฉันสามารถทำการเพิ่มประสิทธิภาพระดับต่ำได้ไม่กี่ครั้ง - การใส่ฟังก์ชั่นและเปลี่ยนลูปนิดหน่อยโดยไม่ต้องเปลี่ยน API เลย ด้วยการเปลี่ยนแปลงเหล่านี้ตอนนี้ช้ากว่าคู่แข่งเพียง 20% ซึ่งนำมาสู่คำถามของฉัน: ฉันควรยอมรับการสูญเสียประสิทธิภาพมากแค่ไหนถ้ามันหมายความว่าฉันมีโมเดลวัตถุที่ดี

2
Galerkin ไม่ต่อเนื่อง: ข้อดีและข้อเสียของ Modal Nodal
มีวิธีการทั่วไปสองวิธีในการแสดงวิธีแก้ปัญหาในวิธี galerkin ที่ไม่ต่อเนื่อง: โหนดและโมดัล Modal : โซลูชั่นจะถูกแทนด้วยผลรวมของสัมประสิทธิ์กิริยาคูณด้วยชุดของพหุนาม e กรัมที่เป็นพหุนามมักจะตั้งฉาก เช่น Legendre ข้อดีอย่างหนึ่งของสิ่งนี้คือพหุนามมุมฉากทำให้เกิดเมทริกซ์มวลในแนวทแยงยู( x , t ) = ∑ยังไม่มีข้อความi = 1ยูผม( t ) ϕผม( x )ยู(x,เสื้อ)=Σผม=1ยังไม่มีข้อความยูผม(เสื้อ)φผม(x)u(x,t) = \sum_{i=1}^N u_i(t) \phi_i(x)φผมφผม\phi_i Nodal : เซลล์ประกอบด้วยหลายโหนดที่กำหนดโซลูชัน การสร้างเซลล์ขึ้นใหม่จะยึดตามพหุนามแบบสอดแทรกที่เหมาะสมเช่นโดยที่คือพหุนาม Lagrange ข้อดีอย่างหนึ่งของสิ่งนี้คือคุณสามารถวางตำแหน่งโหนดของคุณที่จุดพื้นที่สี่เหลี่ยมจัตุรัสและประเมินอินทิกรัลได้อย่างรวดเร็วคุณ( x , t ) = ∑ยังไม่มีข้อความi = 1ยูผม(x,t)li(x)u(x,t)=∑i=1Nui(x,t)li(x)u(x,t) = \sum_{i=1}^N u_i(x,t) l_i(x)lilil_i ในบริบทของขนาดใหญ่ซับซ้อน ( -อานนท์) …

2
ขนาดไฟล์ไบนารีกับ ASCII
ฉันต้องการเขียนข้อมูลบางอย่างจากการคำนวณซึ่งจะอ่านในภายหลังโดย Paraview (ไฟล์. vtu หรือ vtk) เมื่อพูดถึงขนาดของไฟล์ฉันควรใช้รูปแบบ ASCII หรือรูปแบบไบนารีหรือไม่

7
ซอฟต์แวร์สร้างสคริปต์แบบตาข่าย
ฉันกำลังมองหาซอฟแวร์การสร้างตาข่ายที่ ฟรีและโอเพนซอร์ส ให้อินเตอร์เฟซการเขียนสคริปต์มีสติสำหรับข้อมูลจำเพาะโดเมน ใช้งานได้กับรูปทรงเรขาคณิตที่ซับซ้อน สามารถสร้าง 2D และ 3D meshes ฉันมีตัวเลือกอะไรบ้าง

6
Python กับ FORTRAN
อันไหนดีกว่า: FORTRAN หรือ Python และฉันเดาว่าในทั้งสองกรณีคุณต้องการ Gnuplot ฉันพูดถูกมั้ย ฉันกำลังทำงานกับเครื่อง Windows ในขณะนี้ ฉันต้องการใช้มันเพื่อหาวิธีแก้ปัญหาเชิงตัวเลขสำหรับปัญหาฟิสิกส์รวมถึงการจำลองของมอนติคาร์โลการบูรณาการเชิงตัวเลขและความแตกต่างการเปลี่ยนแปลงในระดับโมเลกุลเป็นต้น ฉันเห็นหลักสูตรเกี่ยวกับฟิสิกส์เชิงคำนวณซึ่งแนะนำทั้ง FORTRAN (77 ฉันเชื่อ) และ Python ฉันวางแผนที่จะเริ่มต้นด้วยสิ่งใดสิ่งหนึ่งและจากนั้นเรียนรู้สิ่งอื่น แต่ฉันไม่รู้ว่าการเปลี่ยนแปลงใดอาจเป็นวิธีที่ง่ายที่สุด คุณต้องการแนะนำคอมไพเลอร์ใดด้วย? คำถามพื้นฐานสำหรับฉันมาถึง: สิ่งที่ง่ายที่สุดในการเรียนรู้ซึ่งเป็นคำถามที่เร็วที่สุดซึ่งเป็นคำถามที่ใช้ง่ายที่สุดและเหนือกว่าคำถามใดที่ใช้มากที่สุด (เพื่อเปรียบเทียบ 4 ข้อนี้) และถัดจากนั้นคอมไพเลอร์ที่ใช้บ่อยที่สุด (ฟรีหรือมีค่าใช้จ่าย) ใช้งานอะไร? ฉันกำลังพิจารณาที่จะแปลงแล็ปท็อปเครื่องเก่า (Intel dual core รุ่นแรก) เป็น Linux หวังว่าจะเร็วพอ ขอบคุณมากสำหรับคำตอบจนถึงตอนนี้! คำตอบที่สอดคล้องกับสิ่งที่ฉันกำลังค้นหาคือคำตอบของ LKlevin และ SAAD ฉันรู้พื้นฐานของ C ++, Maple และฉันเป็นอาจารย์ MATLAB และ Mathematica9 เกือบจะสมบูรณ์ถ้ามันช่วยได้
17 python  fortran 

4
ปัจจุบัน GPU ที่มีอยู่รองรับเลขคณิตทศนิยมแม่นยำสองเท่าหรือไม่?
ฉันเรียกใช้รหัสโมเลกุล (MD) GROMACSในคลัสเตอร์ Ubuntu Linux ซึ่งประกอบด้วยโหนดที่มี CPU Intel 24 Xeon จุดสนใจของฉันค่อนข้างจะอ่อนไหวต่อความแม่นยำในการคำนวณจุดลอยดังนั้นฉันต้องรัน GROMACS ด้วยความแม่นยำสองเท่าแทนที่จะใช้ความแม่นยำเดียว - แม้จะมีค่าใช้จ่ายในการคำนวณที่สูงกว่าความแม่นยำสองเท่า ดังนั้นในคลัสเตอร์ฉันได้รวบรวม GROMACS ด้วยความแม่นยำสองเท่า ฉันกำลังพิจารณาที่จะซื้อ GPU บางตัวเนื่องจากอาจมีการเร่งความเร็วญาติ ("การเร่งความเร็ว GPU") กับซีพียู อย่างไรก็ตามฉันต้องการ GPU ที่จะทำให้ฉันสามารถคำนวณเลขคณิตความแม่นยำสองเท่าได้ คุณรู้หรือไม่ว่าฮาร์ดแวร์ดังกล่าวมีวางจำหน่ายทั่วไป โพสต์ล่าสุดบน GROMACS รายชื่อผู้รับจดหมายแสดงให้เห็นว่า GPUs แม่นยำสองจะไม่สามารถใช้ได้ในเชิงพาณิชย์: ฮาร์ดแวร์ไม่รองรับ [เลขคณิตความแม่นยำสองเท่า] แต่ AFAIK นี้หน้าวิกิพีเดียดูเหมือนจะชี้ให้เห็นว่า GPUs แม่นยำสองมีการผิดปกติเนื่องจากพวกเขาอาจจะไม่มีประสิทธิภาพ: การนำไปใช้งานของ floating point บน Nvidia GPU นั้นเป็นไปตามมาตรฐาน IEEE; อย่างไรก็ตามสิ่งนี้ไม่เป็นความจริงสำหรับผู้ขายทุกราย สิ่งนี้มีความเกี่ยวข้องกับความถูกต้องซึ่งถือว่ามีความสำคัญต่อการประยุกต์ใช้ทางวิทยาศาสตร์ …

3
พล็อตการปรับขนาด / การบันทึกแบบขนานของล็อก - ล็อก
งานของฉันจำนวนมากหมุนรอบการทำให้อัลกอริธึมขยายขนาดได้ดีขึ้นและหนึ่งในวิธีที่ต้องการในการแสดงการปรับสเกลแบบขนานและ / หรือประสิทธิภาพแบบขนานคือการพล็อตประสิทธิภาพของอัลกอริทึม / รหัสบนจำนวนแกนเช่น โดยที่ -axis แสดงถึงจำนวนแกนและy -axis ตัวชี้วัดบางตัวเช่นงานที่ทำต่อหน่วยเวลา เส้นโค้งที่แตกต่างกันแสดงประสิทธิภาพแบบขนานที่ 20%, 40%, 60%, 80% และ 100% ที่ 64 แกนตามลำดับxxxYYy แต่น่าเสียดายที่แม้ว่าในสิ่งพิมพ์หลายผลเหล่านี้มีพล็อตที่มีการเข้าสู่ระบบเข้าสู่ระบบการปรับเช่นผลลัพธ์ในนี้หรือนี้กระดาษ ปัญหาของแผนการบันทึกการใช้งานเหล่านี้คือมันยากที่จะประเมินค่า / ประสิทธิภาพขนานจริงอย่างไม่น่าเชื่อ ซึ่งเป็นพล็อตเดียวกับด้านบน แต่ยังมีการปรับขนาดบันทึกการทำงาน โปรดทราบว่าขณะนี้ไม่มีความแตกต่างอย่างมากระหว่างผลลัพธ์ที่มีประสิทธิภาพแบบขนาน 60%, 80% หรือ 100% ผมเคยเขียนบิตอย่างกว้างขวางมากขึ้นเกี่ยวกับเรื่องนี้ที่นี่ ดังนั้นนี่คือคำถามของฉัน: มีเหตุผลอะไรบ้างที่แสดงผลลัพธ์ในการปรับขนาดบันทึกการทำงาน ฉันใช้มาตราส่วนแบบเส้นตรงเพื่อแสดงผลลัพธ์ของตัวเองเป็นประจำและใช้ค้อนทุบโดยผู้ตัดสินบอกว่าผลการวัด / ประสิทธิภาพแบบขนานของตัวเองไม่ได้ดูดีเท่าผลการบันทึก (log-log) ของผู้อื่น แต่สำหรับชีวิตของฉันฉัน ไม่เห็นว่าทำไมฉันจึงควรเปลี่ยนรูปแบบการพล็อต

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