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

คำถามเกี่ยวกับไลบรารีและซอฟต์แวร์แบบสแตนด์อโลนที่ออกแบบหรือเหมาะสมสำหรับการคำนวณทางวิทยาศาสตร์หรือตัวเลข

6
อะไรคือวิธีที่ดีที่สุดในการทำวิจัยที่ทำซ้ำได้หากคุณต้องการห้องสมุดที่เป็นกรรมสิทธิ์
การทำซ้ำการวิจัยในการคำนวณมีจุดมุ่งหมายที่จะทำให้รหัสที่จำเป็นในการสร้างผลลัพธ์ในกระดาษคำนวณที่มีให้กับนักวิจัยคนอื่น ๆ เพื่อให้พวกเขาสามารถเรียกใช้รหัสนี้เพื่อทำซ้ำผลลัพธ์ในกระดาษนั้น ฉันต้องการให้การวิจัยทั้งหมดของฉันทำซ้ำได้ แต่ฉันพบอุปสรรคเล็กน้อย: มีเอกสารสองฉบับที่ฉันใช้งานโดยใช้แพ็คเกจสร้างความแตกต่างโดยอัตโนมัติ (เรียกว่า DAEPACK ) ในห้องสมุดที่เป็นกรรมสิทธิ์ ( CHEMKIN- II ; ข้อกำหนดสิทธิการใช้งานไม่ชัดเจน) มันจะใช้เวลานานเกินไปในการแทนที่ส่วนประกอบซอฟต์แวร์เหล่านี้ด้วยเวอร์ชันโอเพ่นซอร์ส การแทนที่โอเพนซอร์สสำหรับ CHEMKIN-II เรียกว่าCanteraแต่ Cantera อยู่ใน C ++ ในขณะที่ CHEMKIN-II อยู่ใน Fortran 77 มันต้องใช้ความพยายามอย่างมากในการปรับเปลี่ยนรหัส Cantera ให้เพียงพอเพื่อให้สามารถประมวลผลได้โดยอัตโนมัติ เครื่องมือสร้างความแตกต่างสำหรับ C ++ เนื่องจากฉันต้องการแพ็คเกจที่เป็นกรรมสิทธิ์เหล่านี้วิธีที่ดีที่สุดในการทำวิจัยของฉันให้ทำซ้ำได้มากที่สุดคือสมมติว่านักวิจัยอาจไม่สามารถเข้าถึง CHEMKIN-II ได้ เนื่องจาก DAEPACK เป็นนักแปลที่มาจากแหล่งที่มาฉันไม่จำเป็นต้องแจกจ่าย DAEPACK ฉันอาจรวมเอาท์พุทของมันซึ่งจะเป็นไฟล์ต้นฉบับของ Fortran ที่คำนวณอนุพันธ์ โดยทั่วไปหากคุณต้องการซอฟต์แวร์ที่เป็นกรรมสิทธิ์ในการทำงานของคุณและซอฟต์แวร์ที่เป็นกรรมสิทธิ์นั้นไม่สามารถใช้ได้อย่างกว้างขวาง (เช่นไม่ใช่ MATLAB, Mathematica และอื่น ๆ …

6
ฉันจะเขียนโค้ดผู้ไม่เชื่อเรื่องพระเจ้าได้อย่างไร
ฉันมักจะพบว่าตัวเองกำลังเขียนโค้ดที่คล้ายกันมากสำหรับรุ่นหนึ่งสองและสามมิติของการดำเนินการ / อัลกอริทึมที่กำหนด การบำรุงรักษาเวอร์ชันเหล่านี้ทั้งหมดอาจกลายเป็นเรื่องน่าเบื่อ การสร้างโค้ดอย่างง่ายนั้นใช้งานได้ดี แต่ดูเหมือนว่าจะต้องมีวิธีที่ดีกว่า มีวิธีที่ค่อนข้างง่ายในการเขียนการดำเนินการเพียงครั้งเดียวและมีการพูดคุยกับมิติที่สูงขึ้นหรือต่ำลงหรือไม่? ตัวอย่างที่ชัดเจนประการหนึ่งคือสมมติว่าฉันต้องการคำนวณการไล่ระดับสีของสนามความเร็วในอวกาศ ในสามมิติลูป Fortran จะมีลักษณะดังนี้: do k = 1, n do j = 1, n do i = 1, n phi(i,j,k) = ddx(i)*u(i,j,k) + ddx(j)*v(i,j,k) + ddx(k)*w(i,j,k) end do end do end do โดยที่ddxarray นั้นถูกกำหนดอย่างเหมาะสม (เราสามารถทำได้ด้วยการคูณเมทริกซ์) โค้ดสำหรับโฟลว์สองมิตินั้นเกือบจะเหมือนกันทุกประการยกเว้น: มิติที่สามถูกดร็อปจากลูปดัชนีและจำนวนของคอมโพเนนต์ มีวิธีที่ดีกว่าในการแสดงสิ่งนี้หรือไม่? อีกตัวอย่างคือ: สมมติว่าฉันมีความเร็วของของไหลที่กำหนดจุด - ฉลาดในตารางสามมิติ เพื่อสอดแทรกความเร็วไปยังตำแหน่งตามอำเภอใจ …

5
CFD โอเพ่นซอร์สคุณภาพดีใช้งานง่ายแก้ปัญหาได้หรือไม่?
วิทยานิพนธ์ของฉันคือการพัฒนาวิธีการเชิงตัวเลขสำหรับการลดรูปแบบในการเผาไหม้ ฉันใช้วิธีการของฉันอย่างหมดจดในส่วนทางเคมีของการจำลองการเผาไหม้และฉันมีกรณีศึกษามากมายสำหรับการจำลอง 0-D (ไม่มีการไหล) สิ่งที่ฉันต้องการคือการเรียกใช้แบบจำลองที่มีการไหลในพวกเขาโดยเฉพาะอย่างยิ่งแบบจำลอง 2 มิติหรือ 3 มิติ การจำลองเหล่านี้จะต้องเป็นแบบขนานเนื่องจากความต้องการการคำนวณสูง ฉันต้องการสิ่งที่สามารถเชื่อมต่อกับนักแก้ปัญหาทางเคมีเช่น Chemkin หรือ Cantera ซึ่งฉันมีซอร์สโค้ด (Chemkin อยู่ใน Fortran 77 และ Cantera อยู่ใน C ++) ในกรณีที่เหมาะสมที่สุดฉันสามารถระบุรูปแบบการไหลโดยใช้ความรู้พื้นฐานเกี่ยวกับกลศาสตร์ของไหลที่ฉันมีจากโปรแกรมการเรียนจบของฉันและแพ็คเกจ CFD บางอย่างเพิ่มเคมีและเรียกใช้ ถ้าฉันต้องการฉันสามารถตั้งค่าสมการที่ควบคุมการเคลื่อนที่ของไหลและเคมีสำหรับกรณีศึกษาอย่างง่ายจากการตั้งค่าการทดลองที่ใช้โดยผู้ทำงานร่วมกันในอดีต แต่ฉันชอบไม่หมุนรหัส CFD ของตัวเองเว้นแต่ว่า แพคเกจหรือแพคเกจที่ทำให้มันง่ายมากที่จะทำ ฉันยินดีที่จะใช้เวลา 2-3 สัปดาห์กับมัน ฉันไม่ทราบว่าข้อกำหนดนี้เป็นไปตามกฎของ PETSc หรือ Trilinos หรือไม่ ถ้าฉันต้องใช้เวลานานกว่านี้ฉันก็ควรจะยกเลิกมันไปจนกระทั่งภายหลังเพราะฉันมีผู้ทำงานร่วมกันจัดหารหัส CFD สำหรับกรณีศึกษาด้วยเช่นกัน ใครบ้างมีประสบการณ์ใช้แพ็คเกจ CFD หรือเขียนรหัส CFD และถ้าเป็นเช่นนั้นคุณสามารถแนะนำหนึ่งหรือไม่ สิ่งหนึ่งที่ฉันรู้ว่าฉันต้องการใช้คือการแยก Strang …

5
สถานะของ Mac OS ใน Scientific Computing และ HPC
กลับไปสู่รุ่งอรุณของ OS X ดูเหมือนว่าจะมี hubbub เป็นจำนวนมากอย่างน้อยก็ในโลก Mac (ตอนนี้ฉันไม่ได้อยู่ใกล้การคำนวณทางวิทยาศาสตร์) เกี่ยวกับ Mac OS เป็นแพลตฟอร์มสำหรับการคำนวณทางวิทยาศาสตร์และแอปพลิเคชัน HPC XGrid ออกมาจากกล่องเวอร์จิเนียเทคมีกลุ่มคอมพิวเตอร์ที่ใช้ Mac ที่หรูหราสแตนฟอร์ดกำลังทำสิ่งดีๆ ฯลฯ อย่างไรก็ตามเมื่อเร็ว ๆ นี้สิ่งต่าง ๆ เงียบสงบ ไซต์ Macresearch.org นั้นเป็นเมืองผีที่เต็มไปด้วยซอมบี้สแปมเมอร์ XServe นั้นตายไปแล้วและวรรณกรรมการตลาดที่น่ากลัวมากมาย แต่ XGrid ยังคงอยู่ที่นั่นระบบปฏิบัติการ * nix ทั้งหมดอยู่ที่นั่นและแพลตฟอร์มดูเหมือนว่าจะมีการสนับสนุนที่ดีระหว่าง Python, R และภาษาใหม่บางภาษา ดังนั้นจากคนที่รู้เรื่องนี้มากกว่าที่ฉันทำ ... อัตราค่าโดยสาร OS X เป็นอย่างไร พวกเขาใช้คอมพิวเตอร์ฝั่งไคลเอ็นต์สำหรับการคำนวณทางวิทยาศาสตร์หรือไม่? ใช้มันเป็นเซิร์ฟเวอร์ / คลัสเตอร์ / ฯลฯ ผ่าน …
17 software  hpc 

2
อะไรคือแนวปฏิบัติที่ดีที่สุดสำหรับอัลกอริทึมและการประยุกต์ใช้การจำลองหลายฟิสิกส์
การจำลองแบบมัลติ - ฟิสิกส์เกี่ยวข้องกับการมีเพศสัมพันธ์หลาย "ฟิสิกส์" มักจะมีพื้นที่และ / หรือเวลาที่แตกต่างกัน นอกจากนี้รหัสฟิสิกส์เดียวมักจะถูกเขียนโดยทีมที่แตกต่างกัน เทคนิคการแต่งงานกันที่ใช้กันมากที่สุดคือการแยกตัวดำเนินการอันดับหนึ่ง แต่สิ่งนี้มีความแม่นยำและคุณสมบัติความเสถียรต่ำ ฉันจะกำหนดอัลกอริธึมที่จะมีประสิทธิภาพสำหรับปัญหาที่น่าสนใจได้อย่างไรและฉันจะจัดโครงสร้างซอฟต์แวร์ของฉันเพื่อให้อัลกอริทึมเหล่านี้ใช้งานได้อย่างไร

4
อะไรจะเป็นวิธีที่ดีที่สุดในการเขียนโค้ดสำหรับกระดาษเพื่อให้ผู้อ่านสามารถจับคู่ผลลัพธ์กับโค้ดที่สร้างได้อย่างชัดเจน?
ฉันกำลังเขียนกระดาษที่ทำซ้ำได้และกระดาษนั้นมีผลการคำนวณที่สร้างโดยสคริปต์ Python (สคริปต์ MATLAB ที่คล้ายกันสร้างผลลัพธ์ที่เหมือนกันเกือบทั้งหมด) ฉันรู้สึกว่ากระดาษจะง่ายต่อการเข้าใจสำหรับผู้อ่านหากพวกเขาสามารถจับคู่การคำนวณในกระดาษกับการคำนวณในรหัส งานนำเสนอแบบแผนเชิงนามธรรมและตัวอย่างในกระดาษควรทำให้พิธีการนี้เป็นรูปธรรมมากขึ้นสำหรับผู้อ่าน (หลายคนจะเป็นวิศวกร) รหัสอาจเป็นบันทึกที่มีรายละเอียดมากที่สุดเกี่ยวกับวิธีการคำนวณและการทำให้ชัดเจนสามารถช่วยเราได้ในระหว่างกระบวนการตรวจสอบ ไม่มีใครมีข้อเสนอแนะเกี่ยวกับวิธีการทำให้การติดต่อระหว่างรหัสและผลลัพธ์การคำนวณ (ตัวเลข, สมการ) ชัดเจนมากขึ้น? ตัวอย่างเช่นฉันคิดว่าเมื่อมันมาถึงบรรทัดของโค้ดที่ใช้ขั้นตอนต่าง ๆ ในกระดาษฉันสามารถอ้างอิงหมายเลขสมการ (มันน่าอัศจรรย์ถ้าฉันสามารถอ้างอิงข้ามระหว่างรหัสและ LaTeX แต่การติดฉลากด้วยมือนั้นดี) และฉันสามารถเขียนฟังก์ชั่นที่สอดคล้องกับตัวอย่างและตัวเลขต่าง ๆ เช่น def example_1(): # Insert code corresponding to first example pass def figure_1(): # Insert code that generates Figure 1 pass หากรหัสมีขนาดใหญ่และฉันไม่ได้พยายามอธิบายว่าวิธีการทางคณิตศาสตร์ที่แตกต่างกันจำนวนมากที่ใช้ในงานวิศวกรรมนั้นเหมือนกันจริง ๆ ฉันอาจจะไม่รำคาญมากนักกับการทำให้รหัสชัดเจน แต่ให้ลักษณะนามธรรมของ กระดาษและฐานรหัสขนาดเล็กดูเหมือนว่าอาจมีค่าในแบบฝึกหัดนี้

4
ซอฟต์แวร์ที่เร็วที่สุดคืออะไร (โอเพ่นซอร์ส) เพื่อแก้ปัญหาการเขียนโปรแกรมจำนวนเต็มแบบผสม
ฉันมีปัญหาการเขียนโปรแกรมจำนวนเต็มแบบผสม และฉันกำลังใช้ GLPK เป็นตัวแก้ปัญหาของฉัน แต่ฉันพบว่า GLPK นั้นดีสำหรับปัญหาการเขียนโปรแกรมเชิงเส้น แต่สำหรับการเขียนโปรแกรมแบบผสมจำนวนเต็มนั้นต้องใช้เวลานานกว่าดังนั้นจึงไม่ตรงตามความต้องการของเรา ฉันกำลังมองหาซอฟต์แวร์อื่นอยู่ มีเครื่องมือโอเพนซอร์สที่ดีอื่น ๆ ในการแก้ปัญหาการเขียนโปรแกรมจำนวนเต็มแบบผสมด้วยความเร็วที่รวดเร็วหรือไม่? ขอบคุณ!

5
ซอฟต์แวร์ทางวิทยาศาสตร์ควรได้รับการปรับให้เหมาะสมเท่าใด
สำหรับแอปพลิเคชันที่ต้องการทรัพยากรการคำนวณที่สำคัญประสิทธิภาพสูงอาจเป็นปัจจัยที่สำคัญเมื่อพูดถึงการให้ผลลัพธ์ทางวิทยาศาสตร์หรือการบรรลุ "การเจาะผ่าน" ในเวลาที่เหมาะสม นักพัฒนาซอฟต์แวร์ควรลงทุนเวลาและความพยายามในการปรับแต่งแอปพลิเคชั่นให้เหมาะสมเท่าไร? เกณฑ์หลักที่ใช้มีอะไรบ้าง?
13 software  hpc 

5
เกี่ยวกับการค้นหาโครงการโอเพนซอร์สเพื่อสนับสนุน
คำถามนี้ถูกถามถึงพันล้านครั้งใน Stackoverflow อย่างไรก็ตามโฟกัสได้รับการเข้ารหัสที่ไม่ใช่ตัวเลขเสมอ ฉันกำลังมองหาโครงการที่มีส่วนร่วมในขอบเขตของการคำนวณเชิงตัวเลขและการคำนวณที่มีประสิทธิภาพสูง ฉันต้องการโครงการขนาดเล็ก แต่ไม่จำเป็น อะไรจะเป็นวิธีที่ดีที่สุดในการมีส่วนร่วมในโครงการโอเพ่นซอร์สที่เกี่ยวข้องกับ SciComp เราจะเริ่มมองหาโครงการที่ไหน? อะไรจะเป็นวิธีที่ดีที่สุดในการเข้าร่วมโครงการดังกล่าว คำขอคุณสมบัติ / ข้อบกพร่อง / เอกสารหรืออื่น ๆ ? ดูที่ ATLAS หรือNixคุณจะเปลี่ยนจาก N00B เป็น active ได้อย่างไร?
13 software 

1
ควรรายงานข้อผิดพลาดในห้องสมุดวิทยาศาสตร์อย่างไร
มีปรัชญามากมายในสาขาวิศวกรรมซอฟต์แวร์ที่แตกต่างกันเกี่ยวกับวิธีที่ห้องสมุดควรจัดการกับข้อผิดพลาดหรือเงื่อนไขพิเศษอื่น ๆ บางอย่างที่ฉันเคยเห็น: ส่งคืนรหัสข้อผิดพลาดพร้อมผลลัพธ์ที่ส่งคืนโดยอาร์กิวเมนต์ตัวชี้ นี่คือสิ่งที่ PETSc ทำ ส่งคืนข้อผิดพลาดโดยค่า Sentinel ตัวอย่างเช่น malloc ส่งคืน NULL หากไม่สามารถจัดสรรหน่วยความจำได้sqrtจะส่งคืน NaN หากคุณส่งผ่านจำนวนลบเป็นต้นวิธีการนี้ใช้ในฟังก์ชัน libc จำนวนมาก โยนข้อยกเว้น ใช้ในข้อตกลง II, Trilinos ฯลฯ ส่งคืนชนิดของตัวแปร ตัวอย่างเช่นฟังก์ชัน c ++ ที่ผลตอบแทนวัตถุของการพิมพ์Resultถ้ามันจะทำงานได้อย่างถูกต้องและใช้ประเภทเพื่ออธิบายวิธีการที่จะล้มเหลวก็จะกลับมาErrorstd::variant<Error, Result> ใช้ยืนยันและผิดพลาด ใช้ใน p4est และบางส่วนของการเขียนด้วยลายมือ ปัญหาของแต่ละวิธี: การตรวจสอบข้อผิดพลาดทุกครั้งจะแนะนำรหัสพิเศษจำนวนมาก ค่าที่จะเก็บผลลัพธ์จะต้องประกาศก่อนเสมอแนะนำตัวแปรชั่วคราวจำนวนมากที่อาจใช้เพียงครั้งเดียว วิธีการนี้จะอธิบายถึงข้อผิดพลาดที่เกิดขึ้น แต่อาจเป็นเรื่องยากที่จะตัดสินว่าทำไมหรือสำหรับ call call stack ที่ใด กรณีข้อผิดพลาดง่ายต่อการเพิกเฉย ยิ่งไปกว่านั้นฟังก์ชั่นจำนวนมากไม่สามารถมีค่า Sentinel ที่มีความหมายได้หากช่วงของประเภทเอาต์พุตทั้งหมดเป็นผลลัพธ์ที่เป็นไปได้ ปัญหาเดียวกันจำนวนมากเช่น # 1 ทำได้เฉพาะใน …
11 software 

2
อันตรายจากการคำนวณทางคณิตศาสตร์ที่ซับซ้อนในการคำนวณทางวิทยาศาสตร์
ผลิตภัณฑ์ภายในที่ซับซ้อนได้สองคำนิยามที่แตกต่างกันตัดสินใจโดยการประชุม: ˉ U Tวีหรือยูทีˉวี ใน BLAS ฉันพบกิจวัตร cdotu, zdotu และ cdotc, zdotc สองรูทีนก่อนหน้านี้คำนวณu t v (ผลิตภัณฑ์ด้านในปลอม!) และรูทีนสุดท้ายสองรายการเชื่อมต่อเวกเตอร์แรกในผลิตภัณฑ์ภายใน นอกจากนี้โดยความหมายอย่างใดอย่างหนึ่ง (ผันUหรือV ) ⟨ U , V ⟩ = ¯ ⟨ วี, ยู⟩⟨ u , v ⟩⟨ยู,โวลต์⟩\langle u,v\rangleยู¯Tโวลต์ยู¯Tโวลต์\bar{u}^TvยูTโวลต์¯ยูTโวลต์¯u^T\bar{v}ยูTโวลต์ยูTโวลต์u^Tvยูยูuโวลต์โวลต์v⟨ u , v ⟩ = ⟨ v , u ⟩¯¯¯¯¯¯¯¯¯¯¯⟨ยู,โวลต์⟩=⟨โวลต์,ยู⟩¯\langle u,v\rangle=\overline{\langle v,u\rangle}ด้วยการผัน! ยิ่งไปกว่านั้นตามที่ระบุไว้ในความคิดเห็นการเลือกค่าหลักสำหรับฟังก์ชันที่ซับซ้อนหลายค่าสามารถขึ้นอยู่กับการประชุม คำถามของฉันคือ: ภาวะแทรกซ้อนนี้ทำให้เกิดอันตรายที่แท้จริงสำหรับการใช้เลขคณิตที่ซับซ้อนในการคำนวณทางวิทยาศาสตร์หรือไม่? …

1
มีใครใช้วิธีการประมาณค่าซอฟต์แวร์ในการวิจัยทางวิทยาศาสตร์คอมพิวเตอร์หรือไม่?
ที่ทำงานฉันทำหน้าที่เป็นที่ปรึกษาอิสระ สำหรับการจัดการและลูกค้าฉันต้องประเมินระยะเวลาที่ต้องใช้ในการพัฒนาซอฟต์แวร์ซึ่งเป็นส่วนหนึ่งของการวิจัยทางวิทยาศาสตร์การคำนวณของฉัน อย่างไรก็ตามการประมาณเวลาของฉันมักจะปิด ฉันรู้ว่ามีวิธีการประเมินเวลาที่ใช้ในการพัฒนาซอฟต์แวร์ วิธีการเหล่านี้จะให้การประมาณการที่แม่นยำสำหรับงานวิจัยหรือไม่ พวกเขามีประโยชน์ในการตั้งค่าการวิจัยหรือไม่? หากไม่เป็นเช่นนั้นมีวิธีที่ดีกว่า "เก็บบันทึกและแก้ไขประมาณการตาม" หรือไม่
11 software 

5
การเพิ่มอายุการเก็บถาวรของรหัส
มีรายการของแนวปฏิบัติที่ดีที่สุดที่เผยแพร่เพื่อให้แน่ใจว่าอายุการใช้งานของโค้ดยาวนานขึ้นพร้อมกับผลลัพธ์ทางวิทยาศาสตร์ที่ทำซ้ำได้หรือไม่? (เช่นโอเพ่นซอร์สแนวทางปฏิบัติด้านเอกสารการเลือกการพึ่งพาการเลือกภาษาเครื่องเสมือน ฯลฯ ) รู้จากการศึกษาใด ๆ (หรือขาดตัวอย่าง / เกร็ดเล็กเกร็ดน้อย) ที่พยายามประเมินครึ่งชีวิตของรหัสทางวิทยาศาสตร์ทั่วไปหรือซอฟต์แวร์อื่น ๆ (ถ้านั่นเป็นคำถามที่สมเหตุสมผล)

1
สำหรับซอฟต์แวร์ที่ส่งไปยัง ACM TOMS ข้อตกลงสิทธิ์การใช้งานซอฟต์แวร์ ACM จะทำงานกับใบอนุญาตอื่น ๆ อย่างไร
วารสารสมาคมเพื่อการคำนวณธุรกรรมเครื่องจักรเกี่ยวกับซอฟต์แวร์ทางคณิตศาสตร์ (ACM TOMS)ตีพิมพ์บทความจำนวนมากเกี่ยวกับอัลกอริทึมเชิงตัวเลขที่มีการใช้งานซอฟต์แวร์ ตามนโยบายด้านบรรณาธิการการส่งรายงานขั้นตอนวิธีรวมถึงซอร์สโค้ดสำหรับการใช้งานอัลกอริทึมที่อธิบายไว้ในบทความดังกล่าว รหัสแหล่งที่มานี้เป็นเรื่องที่ซอฟท์แว ACM ลิขสิทธิ์และข้อตกลงใบอนุญาต เนื่องจากฉันสนใจที่จะปล่อยการใช้งานซอฟต์แวร์ของงานของฉันเองฉันจึงกังวลเกี่ยวกับผลกระทบทางกฎหมายของใบอนุญาตนี้ ใบอนุญาตซอฟต์แวร์นี้ทำงานอย่างไรกับใบอนุญาตโอเพ่นซอร์สทั่วไป (เช่นใบอนุญาต GPLv3, BSD, MIT / X11 และ Apache)

2
ไลบรารีแบบขนานหน่วยความจำที่แบ่งใช้ตามภารกิจใน Scientific Computing
ในช่วงไม่กี่ปีที่ผ่านมาห้องสมุด / โครงการซอฟต์แวร์หลายแห่งปรากฏว่ามีรูปแบบหรือรูปแบบอื่น ๆ ของการใช้งานร่วมกันของหน่วยความจำที่ใช้ข้อมูลร่วมกันแบบขนาน แนวคิดหลักคือแทนที่จะเขียนโค้ดแบบเธรดอย่างชัดเจนโปรแกรมเมอร์ใช้อัลกอริธึมของพวกเขาเป็นงานที่ต้องพึ่งพาระหว่างกันซึ่งจะถูกกำหนดเวลาแบบไดนามิกโดยมิดเดิลแวร์จุดประสงค์ทั่วไปบนเครื่องหน่วยความจำที่ใช้ร่วมกัน ตัวอย่างของห้องสมุดดังกล่าวคือ: QUARK : เริ่มแรกออกแบบมาสำหรับไลบรารีพีชคณิตเชิงเส้นแบบขนานของMAGMAดูเหมือนว่าจะถูกใช้สำหรับวิธีการ Multipole แบบขนานแบบขนานเช่นกัน Cilkเดิมโครงการ MIT-based สนับสนุนในขณะนี้โดย Intel นำมาใช้เป็นภาษา / นามสกุลคอมไพเลอร์ที่ C ใช้ในCilkchessซอฟต์แวร์คอมพิวเตอร์หมากรุกและทดลองใน FFTW SMP superscalar : พัฒนาที่ Barcelona Supercomputing Center ซึ่งคล้ายกับ Cilk ในหลาย ๆ ด้านตาม#pragmaส่วนขยาย StarPU : "codelets" ซึ่งคล้ายกับห้องสมุดซึ่งสามารถรวบรวมและกำหนดเวลาสำหรับสถาปัตยกรรมที่แตกต่างกันหลายแห่งรวมถึง GPU งาน OpenMP: ตั้งแต่เวอร์ชัน 3.0, OpenMP แนะนำ "งาน" ที่สามารถกำหนดเวลาแบบอะซิงโครนัส (ดูส่วนที่ 2.7 ของข้อกำหนด) …

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