คำถามติดแท็ก programming-paradigms

14
การเขียนแบบทดสอบหน่วยสำหรับรหัสการวิจัยทางวิทยาศาสตร์ถือว่าคุ้มค่าหรือไม่
ฉันเชื่อมั่นอย่างยิ่งถึงคุณค่าของการใช้การทดสอบที่ตรวจสอบโปรแกรมที่สมบูรณ์ (เช่นการทดสอบการบรรจบกัน) รวมถึงชุดการทดสอบการถดถอยแบบอัตโนมัติ หลังจากอ่านหนังสือการเขียนโปรแกรมฉันได้รับความรู้สึกที่ดุด่าว่าฉัน "ควร" เขียนการทดสอบหน่วย (เช่นการทดสอบที่ตรวจสอบความถูกต้องของฟังก์ชั่นเดียวและไม่ต้องใช้รหัสทั้งหมดในการแก้ปัญหา) . อย่างไรก็ตามการทดสอบหน่วยดูเหมือนจะไม่เหมาะสมกับรหัสทางวิทยาศาสตร์เสมอไปและท้ายที่สุดก็รู้สึกประดิษฐ์หรือเสียเวลา เราควรเขียนการทดสอบหน่วยสำหรับรหัสการวิจัยหรือไม่

9
การเขียนโปรแกรมเชิงหน้าที่และการคำนวณทางวิทยาศาสตร์
ฉันขอโทษถ้านี่เป็นคำถามที่คลุมเครือ แต่นี่จะไป: ในช่วงไม่กี่ปีที่ผ่านมาการเขียนโปรแกรมเชิงฟังก์ชันได้รับความสนใจอย่างมากในชุมชนวิศวกรรมซอฟต์แวร์ หลายคนเริ่มใช้ภาษาเช่น Scala และ Haskell และอ้างว่าประสบความสำเร็จมากกว่าภาษาโปรแกรมและกระบวนทัศน์อื่น ๆ คำถามของฉันคือ: ในฐานะผู้เชี่ยวชาญการคำนวณประสิทธิภาพสูง / วิทยาศาสตร์การคำนวณเราควรสนใจการเขียนโปรแกรมเชิงฟังก์ชันหรือไม่? เราควรมีส่วนร่วมในการปฏิวัติมินินี้หรือไม่? ข้อดีและข้อเสียของการตั้งโปรแกรมการทำงานในโดเมน SciComp คืออะไร

7
ฉันควรลงทุนในกระบวนทัศน์การเขียนโปรแกรมใดหากฉันต้องการให้โค้ดของฉันทำงานบนเครื่อง petascale ในอนาคต
มันสวยชัดเจนจากการสำรวจความคิดเห็นของ top500 ที่อุตสาหกรรมมีแนวโน้มต่อเพิ่มขึ้นชี้แจงในแกนประมวลผล ซูเปอร์คอมพิวเตอร์ที่ใหญ่ที่สุดทั้งหมดใช้ MPI สำหรับการสื่อสารระหว่างโหนดแม้ว่าจะไม่มีแนวโน้มที่ชัดเจนสำหรับการขนานบนโหนดด้วยวิธีที่ง่ายที่สุด (แต่ไม่จำเป็นต้องมีประสิทธิภาพมากที่สุด) ในการทำแผนที่กระบวนการ MPI เดียวกับแต่ละแกนโดยอัตโนมัติ การขนานจากคอมไพเลอร์, OpenMP, pthreads, CUDA, Cilk และ OpenCL ฉันเป็นหนึ่งในกลุ่มนักวิทยาศาสตร์ที่ดูแลและพัฒนารหัสที่มีศักยภาพที่จะใช้กับซุปเปอร์คอมพิวเตอร์ที่ใหญ่ที่สุดในโลก สมมติว่านักพัฒนามีเวลา จำกัด ฉันจะพิสูจน์ตัวเองในอนาคตเพื่อให้ฉันสามารถใช้ประโยชน์จากประสิทธิภาพของเครื่องจักรที่ทรงพลังที่สุดในโลกได้อย่างไร ฉันควรทำสมมติฐานเกี่ยวกับสถาปัตยกรรมที่เชื่อมต่อระหว่างกระบวนการอย่างไร กระบวนทัศน์อะไรที่จะต้องทนทุกข์ทรมานเมื่อเราเข้าสู่ยุคที่มีหลายคน พาร์ทิชันภาษาสากลที่อยู่ในพื้นที่ว่างจะพร้อมใช้งาน "ในการผลิต" บนเครื่อง petascale หรือไม่?

2
ห้องสมุดคณิตศาสตร์สำหรับ OpenCL?
ฉันกำลังมองหาข้อมูลจากใครก็ตามที่พยายามใช้ OpenCL ในรหัสทางวิทยาศาสตร์ มีใครลองเวียนนาCLบ้างไหม? ถ้าเป็นเช่นนั้นจะเปรียบเทียบกับcusp ได้อย่างไร OCLToolsเกี่ยวกับอะไร มันขึ้นอยู่กับสัญญาหรือไม่? ถ้าเป็นเช่นนั้นจะเป็นไปได้ไหมที่จะเริ่มเขียนเมล็ดทางคณิตศาสตร์ใน OpenCL?

6
อนาคตของ OpenCL
กระบวนทัศน์การเขียนโปรแกรม OpenCL สัญญาว่าจะปลอดค่าลิขสิทธิ์เปิดมาตรฐานสำหรับการคำนวณที่แตกต่างกัน เราควรลงทุนเวลาในการพัฒนาซอฟต์แวร์โดยใช้ OpenCL หรือไม่ ข้อเสียข้อดี?

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

3
กลยุทธ์การเขียนโปรแกรมใดที่ฉันสามารถแก้ไขพารามิเตอร์อัลกอริทึมได้อย่างง่ายดาย
การพัฒนาอัลกอริธึมทางวิทยาศาสตร์เป็นกระบวนการที่ต้องทำซ้ำบ่อย ๆ ซึ่งเกี่ยวข้องกับการเปลี่ยนแปลงพารามิเตอร์จำนวนมากที่ฉันต้องการจะเปลี่ยนแปลงไม่ว่าจะเป็นส่วนหนึ่งของการออกแบบการทดลองของฉันหรือเป็นส่วนหนึ่งของประสิทธิภาพอัลกอริธึม tweaking ฉันสามารถใช้กลยุทธ์ใดในการจัดโครงสร้างพารามิเตอร์เหล่านี้เพื่อให้ฉันสามารถเปลี่ยนแปลงได้อย่างง่ายดายระหว่างการทำซ้ำและเพื่อให้สามารถเพิ่มพารามิเตอร์ใหม่ได้อย่างง่ายดาย

2
เหตุใดนักวิทยาศาสตร์การคำนวณจึงจำเป็นต้องใช้ std :: complex เวอร์ชันของตนเอง?
ไลบรารี C ++ ที่เป็นที่รู้จักมากขึ้นในด้านวิทยาศาสตร์การคำนวณเช่นEigen , Trilinosและdeal.IIใช้วัตถุไลบรารีส่วนหัวเทมเพลต C ++ มาตรฐานstd::complex<>เพื่อแทนจำนวนจุดลอยตัวที่ซับซ้อน ในคำตอบของ Jack Poulson สำหรับคำถามเกี่ยวกับ Constructor เริ่มต้นเขาชี้ให้เห็นว่าเขามีการนำไปใช้std::complexในElementalของตนเองด้วยเหตุผลหลายประการ อะไรคือเหตุผลเหล่านั้น อะไรคือข้อดีและข้อเสียของวิธีนี้?

5
C ++ หรือ Python สำหรับการพัฒนาไลบรารี CFD
คุณจะพูดว่าอะไรคือข้อดี / ข้อเสียของสองวิธีในการเขียนโค้ดไลบรารีทั่วไป (finite volume, fem, dg) สำหรับกลศาสตร์ต่อเนื่องของการคำนวณ นี่คือสิ่งที่ฉันเห็นตอนนี้ดังนั้นโปรดให้ประสบการณ์ของคุณเองและอย่าทำให้ฉันเป็นประกาย :): 1) C ++: การเขียนโปรแกรมทั่วไป, ฟังก์ชั่นเสมือนจริง, การบรรทุกเกินพิกัด, ความเร็ว ... : เครื่องมือ genreic + OOP ทั้งหมดที่มีอยู่เพื่อสร้างสิ่งที่คุณต้องการ ห้องสมุดระดับต่ำส่วนใหญ่มีอยู่ (ไม่มีการพัฒนาด้านวิทยาศาสตร์และวิศวกรรมที่กว้างขวางเช่นห้องสมุดสำหรับ Python) 2) Python + wrappers สำหรับการคำนวณแบบขนาน (pyOpenCL และอื่น ๆ ) จำนวนมากรองรับ libs หลากหลายชนิด โค้ดที่คุณคิด: การติดตั้งใช้งานเสร็จเร็วมาก เวลาดำเนินการช้าลง หากคุณต้องการเขียนโค้ดเฟรมเวิร์กที่รองรับวิธีการต่าง ๆ ทำงานกับรูปทรงเรขาคณิตและปัญหาที่ซับซ้อนคุณจะเลือกอะไรและทำไม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.