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

ภาษาโปรแกรมเชิงวัตถุที่ทรงพลัง

12
C ++ vs Fortran สำหรับ HPC
ในโปรแกรมปริญญาเอกวิทยาศาสตร์การคำนวณของเราเราทำงานเกือบเฉพาะใน C ++ และ Fortran ดูเหมือนว่าอาจารย์บางคนชอบมากกว่าคนอื่น ฉันสงสัยว่าอันไหนดีกว่าหรือในอันใดอันหนึ่งดีกว่าในบางกรณี
56 hpc  fortran  c++  languages 

7
เป็นความคิดที่ดีหรือไม่ที่จะใช้ vector <vector <double>> เพื่อสร้างคลาสเมทริกซ์สำหรับรหัสการคำนวณทางวิทยาศาสตร์ที่มีประสิทธิภาพสูง?
มันเป็นความคิดที่ดีที่จะใช้vector&lt;vector&lt;double&gt;&gt;(ใช้ std) เพื่อสร้างคลาสเมทริกซ์สำหรับรหัสการคำนวณทางวิทยาศาสตร์ที่มีประสิทธิภาพสูงหรือไม่? ถ้าคำตอบคือไม่ ทำไม? ขอบคุณ
36 hpc  c++ 

9
เป็นวิธีที่ดีในการเรียกใช้การศึกษาพารามิเตอร์ใน C ++ คืออะไร
ปัญหา ขณะนี้ฉันกำลังทำงานกับการจำลองสถานการณ์ไฟไนต์เอลิเยร์สโต๊คและฉันต้องการตรวจสอบผลกระทบของพารามิเตอร์ที่หลากหลาย บางพารามิเตอร์ถูกระบุในไฟล์อินพุตหรือผ่านตัวเลือกบรรทัดคำสั่ง มีการระบุพารามิเตอร์อื่น ๆ เป็นแฟล็กใน Makefile เพื่อให้โค้ดของฉันต้องถูกคอมไพล์ใหม่ทุกครั้งที่ฉันเปลี่ยนตัวเลือกเหล่านั้น ฉันสนใจที่จะรับคำแนะนำเกี่ยวกับวิธีที่ดีในการสำรวจพื้นที่พารามิเตอร์อย่างเป็นระบบ มีไลบรารี / กรอบงาน C ++ / Python ที่มีประโยชน์ที่สามารถช่วยแก้ไขสิ่งนี้ได้ไหม? ตัวอย่างเช่นการค้นพบboost.Program_optionsเป็นความช่วยเหลือที่ยิ่งใหญ่เนื่องจากเป็นไปได้ที่จะโอเวอร์โหลดตัวเลือกไฟล์อินพุตด้วยอาร์กิวเมนต์บรรทัดคำสั่ง ฉันเคยเห็นบางคนใช้ไฟล์งานที่อธิบายแต่ละกรณีค่อนข้างมีประสิทธิภาพและเพื่อนร่วมงานแนะนำว่าการเขียนพารามิเตอร์ลงในไฟล์ vtu เนื่องจากบล็อกข้อคิดเห็นสามารถใช้งานได้เช่นกัน บางทีมันอาจไม่คุ้มค่ากับการลงทุนเวลานี้ มันเป็นเพียงสิ่งที่ทำให้ไขว้เขวและเสียเวลาและเป็นวิธีที่ดีที่สุดเพียงแค่กล้ามเนื้อผ่านกระบวนการทดสอบกำลังดุร้ายและเฉพาะกิจ ความคิดบางอย่าง ขณะนี้ฉันกำลังทำสิ่งต่าง ๆ ด้วยมือเป็นส่วนใหญ่และฉันพบปัญหาต่อไปนี้: การตั้งชื่อกรณีทดสอบ Re100_dt02_BDF1...ฉันพยายามเก็บผลในโฟลเดอร์ที่ชื่อมีพารามิเตอร์วิ่งคั่นด้วยขีดเช่น สิ่งเหล่านี้กลายเป็นยาวหรือยากต่อการอ่าน / เข้ารหัสหากพวกมันยากเกินไป นอกจากนี้พารามิเตอร์จำนวนจริงรวมถึงสิ่ง.ที่น่าอึดอัดใจ / น่าเกลียด บันทึกข้อมูลการวิ่ง บางครั้งฉันต้องการเห็นผลลัพธ์ที่เขียนไปยังเทอร์มินัลและบันทึกลงในไฟล์ข้อความ อินสแตนซ์คำตอบจาก StackOverflow นี้ค่อนข้างมีประโยชน์ แต่โซลูชันดูเหมือนจะน่ารำคาญเล็กน้อย พล็อตข้อมูลตามพารามิเตอร์ ใช้เวลาค่อนข้างนานในการรวบรวมข้อมูลที่เกี่ยวข้องจากไฟล์บันทึกต่าง ๆ เป็นไฟล์เดียวซึ่งฉันสามารถทำพล็อตได้ด้วยระบบที่ดีกว่าบางทีนี่อาจจะง่ายขึ้น ความคิดเห็นเกี่ยวกับการบันทึกข้อมูล หลังจากตรวจสอบผลลัพธ์ฉันเขียนข้อคิดเห็นในไฟล์ข้อความ แต่การเก็บข้อมูลนี้เป็นการซิงค์กับโฟลเดอร์ผลลัพธ์บางครั้งก็ยาก

5
ผู้ใช้ต้องการคุณลักษณะอะไรบ้างจากอินเทอร์เฟซ MPI C ++
เวอร์ชัน 3.0 ของมาตรฐาน MPI ลบอินเตอร์เฟส C ++ อย่างเป็นทางการ (ก่อนหน้านี้เลิกใช้แล้ว) ในขณะที่การใช้งานอาจยังคงสนับสนุนคุณสมบัติที่ใหม่ใน MPI-3 ไม่มีอินเตอร์เฟส C ++ ที่กำหนดในมาตรฐาน MPI ดูhttp://blogs.cisco.com/performance/the-mpi-c-bindings-what-happened-and-why/สำหรับข้อมูลเพิ่มเติม แรงจูงใจในการลบอินเทอร์เฟซ C ++ ออกจาก MPI คือมันไม่มีค่าใดที่มีนัยสำคัญเหนืออินเตอร์เฟส C มีความแตกต่างน้อยมากนอกเหนือจาก "s / _ / :: / g" และคุณลักษณะหลายอย่างที่ผู้ใช้ C ++ ไม่คุ้นเคยเคยใช้ (เช่นการกำหนดประเภทอัตโนมัติผ่านเทมเพลต) ในฐานะที่เป็นคนที่มีส่วนร่วมในฟอรัม MPI และทำงานกับโปรเจ็กต์ C ++ จำนวนมากที่ใช้อินเทอร์เฟซ C ++ ของตัวเองกับฟังก์ชั่น MPI C ฉันต้องการทราบว่าคุณลักษณะที่พึงประสงค์ของอินเตอร์เฟส C …
28 c++  mpi 

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

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

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

10
ไลบรารี C ++ tensor ที่รวดเร็วและน้ำหนักเบาสำหรับโค้ดมิติผู้ไม่เชื่อเรื่องพระเจ้า
ฉันกำลังมองหาไลบรารี C ++ tensor ที่สนับสนุนโค้ดมิติผู้ไม่เชื่อเรื่องพระเจ้า โดยเฉพาะฉันต้องดำเนินการตามแต่ละมิติ (สูงสุด 3) เช่นการคำนวณผลรวมถ่วงน้ำหนัก ขนาดคือพารามิเตอร์เทมเพลต (และทำให้ค่าคงที่เวลาคอมไพล์) ข้อ จำกัด อีกประการคือห้องสมุดควรมีน้ำหนักเบาดังนั้นจึงค่อนข้าง Eigen / Boost-style กว่า Trilinos / PETSc ข้อเสนอแนะใด ๆ หมายเหตุ: ฉันได้ดูที่ Eigen และคิดว่ามันเกือบจะพอดีกับโปรไฟล์อย่างแน่นอนถ้ามันไม่ได้ จำกัด อยู่เพียงแค่เทนเซอร์ 2D หากฉันเข้าใจผิดโดยโปรดแก้ไขให้ถูกต้อง
20 c++  libraries  tensor 

6
การวิเคราะห์ข้อผิดพลาดเชิงตัวเลขในฟังก์ชัน C ++
สมมติว่าฉันมีฟังก์ชั่นที่ใช้เป็นค่าหลายค่าจุดลอยตัว (เดี่ยวหรือสองครั้ง) ทำการคำนวณบางอย่างและสร้างค่าจุดลอยตัวเอาท์พุท (เช่นเดียวหรือสองครั้ง) ฉันทำงานกับ MSVC 2008 เป็นหลัก แต่ยังวางแผนที่จะทำงานกับ MinGW / GCC ฉันกำลังเขียนโปรแกรมใน C ++ อะไรคือวิธีการทั่วไปในการวัดโดยทางโปรแกรมว่ามีข้อผิดพลาดเท่าใดในผลลัพธ์ สมมติว่าฉันต้องใช้ไลบรารี่ที่มีความแม่นยำตามอำเภอใจ: อะไรคือไลบราที่ดีที่สุดถ้าฉันไม่สนใจความเร็ว?

5
การพัฒนาซอฟต์แวร์คำนวณทางวิทยาศาสตร์แบบขนาน
ฉันต้องการพัฒนาซอฟต์แวร์การคำนวณทางวิทยาศาสตร์แบบขนานตั้งแต่เริ่มต้น ฉันต้องการความคิดเกี่ยวกับภาษาที่จะเริ่มต้น โปรแกรมนี้เกี่ยวข้องกับการอ่าน / เขียนข้อมูลไปยังไฟล์ txt และทำการคำนวณอย่างหนักพร้อม ๆ กันโดยมี factorizations LU จำนวนมากและการใช้ตัวแก้ปัญหาเชิงเส้นแบบกระจัดกระจาย ทางเลือกที่ฉันคิดคือ Fortran 2003/2008 กับ OpenMP หรือ co-array, C ++ กับ openmp cilk + หรือ TBB, python ข้อเสนอแนะอื่น ๆ เอกสารยินดีต้อนรับ! ฉันรู้ดีมาก C, Fortran และ Java (ตามลำดับ) ฉันได้ทำสคริปต์บางอย่างในหลาม แต่เป็นสิ่งพื้นฐาน ฉันรู้ว่าฟอร์แทรนนั้นเร็วมาก แต่ยากที่จะรักษาและขนานกัน C ++ บอกว่าช้าถ้าคุณใช้ไลบรารี่ภายนอกและอื่น ๆ ฉันชอบไพ ธ อน แต่เป็นเรื่องจริงไหมที่จะเขียนซอฟต์แวร์ระดับอุตสาหกรรมเต็มรูปแบบ? ซอฟต์แวร์ต้องสามารถจัดการข้อมูลจำนวนมากและมีประสิทธิภาพด้วยการคำนวณทางวิทยาศาสตร์ …

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

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

2
Boost :: mpi หรือ C MPI สำหรับการใช้งานทางวิทยาศาสตร์ที่มีประสิทธิภาพสูง?
สิ่งที่ฉันไม่ชอบมากที่สุดเกี่ยวกับ MPI คือการจัดการกับประเภทข้อมูล (เช่น data maps / masks) เพราะมันไม่เหมาะกับ object เชิง C ++ boost::mpiอย่างไรก็ตามรองรับ MPI 1.1 จากเว็บไซต์ของพวกเขาเท่านั้น: boost :: mpi เป็นอินเทอร์เฟซที่ใช้งานง่ายของ C ++ ไปยังอินเตอร์เฟสการส่งข้อความมาตรฐาน… Boost.MPI สามารถสร้างประเภทข้อมูล MPI สำหรับประเภทที่ผู้ใช้กำหนดโดยใช้ไลบรารี Boost.Serialization มีใครมีประสบการณ์เกี่ยวกับboost::mpiการคำนวณทางวิทยาศาสตร์อย่างจริงจังบ้างไหม? คุณจะแนะนำหรือไม่ คุณเคยมีปัญหาใด ๆ (ปัญหาการปรับขนาด, ปัญหาคอมไพเลอร์, ข้อผิดพลาด, คุณสมบัติที่ไม่ได้ใช้งาน, ความต้องการคุณสมบัติ MPi 2.2 บางส่วน) หรือไม่? คุณสามารถแสดงความคิดเห็นเกี่ยวกับการใช้boost::mpiแทนการใช้ MPI C จาก C ++ ได้หรือไม่? คุณสามารถรวมทั้งสอง …
16 hpc  c++  mpi 

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

5
คำนวณ
ฟังก์ชั่นมีความแปลกประหลาดที่อยู่ใกล้กับx = 0 ความแปลกประหลาดนั้นสามารถยกได้แม้ว่า: สำหรับx = 1 , หนึ่งควรมีf ( x ) = 1 , เนื่องจาก e x = ∑ k = 0 x kf:x↦(ex−1)/xf:x↦(ex−1)/xf \colon x \mapsto (e^x-1)/xx=0x=0x = 0x=1x=1x = 1ฉ( x ) = 1f(x)=1f(x) = 1 และ (ex-1)/x=∑k=1x k - 1อีx= ∑k = 0xkk !ex=∑k=0xkk! e^x = …
13 c++  c 

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