อ่าน 3 นาที
บรู๊คจีพียู
ในด้านการ คำนวณ ภาษาโปรแกรม Brook และ การใช้งาน BrookGPU ถือเป็นความพยายามในช่วงแรกและมีอิทธิพลในการเปิดใช้ งานการคำนวณทั่วไปบนหน่วยประมวลผลกราฟิก (GPGPU) [ 1 ] [ 2 ] Brook...
บรู๊คจีพียู
| บรู๊คจีพียู | |
|---|---|
| นักพัฒนา | มหาวิทยาลัยสแตนฟอร์ด |
| เวอร์ชันเสถียร | v0.5 เบต้า 1 / 2007 |
| ระบบปฏิบัติการ | ลินุกซ์ , วินโดวส์ |
| พิมพ์ | คอมไพเลอร์/รันไทม์ |
| ใบอนุญาต | ลิขสิทธิ์ BSD (บางส่วนอยู่ภายใต้ลิขสิทธิ์ GPL ) |
| เว็บไซต์ | http://graphics.stanford.edu/projects/brookgpu/ |
| ที่เก็บข้อมูล |
|
ในด้านการคำนวณภาษาโปรแกรมBrook และการใช้งานBrookGPUถือเป็นความพยายามในช่วงแรกและมีอิทธิพลในการเปิดใช้งานการคำนวณทั่วไปบนหน่วยประมวลผลกราฟิก (GPGPU) [ 1 ] [ 2 ] Brook ซึ่งพัฒนาโดย กลุ่มกราฟิก ของมหาวิทยาลัยสแตนฟอร์ด เป็นคอมไพเลอร์และระบบรันไทม์สำหรับ ภาษา โปรแกรมสตรีมที่ออกแบบมาเพื่อใช้ประโยชน์จากความขนานของGPU เช่น GPU จากATIหรือNvidia
BrookGPU คอมไพล์โปรแกรมที่เขียนโดยใช้ภาษาโปรแกรม Brook stream ซึ่งเป็นรูปแบบหนึ่งของANSI Cสามารถกำหนดเป้าหมายเป็นOpenGL v1.3+, DirectX v9+ หรือ Close to Metalของ AMD สำหรับส่วนประมวลผล และทำงานได้ทั้งบนMicrosoft WindowsและLinuxสำหรับการดีบัก BrookGPU ยังสามารถจำลองการ์ดกราฟิกเสมือนบน CPU ได้อีกด้วย
สถานะ
เวอร์ชันเบต้าหลักสุดท้าย (v0.4) ออกวางจำหน่ายในเดือนตุลาคม 2547 แต่การพัฒนาได้เริ่มต้นใหม่และหยุดลงอีกครั้งในเดือนพฤศจิกายน 2550 โดยมีการออกเวอร์ชันเบต้า 1 (v0.5)
คุณสมบัติใหม่ในเวอร์ชัน 0.5 ประกอบด้วย แบ็กเอนด์ OpenGLที่ได้รับการอัปเกรดและเร็วขึ้นมาก โดยใช้ framebuffer objects แทน PBuffers และปรับปรุงโค้ดให้สอดคล้องกับอินเทอร์เฟซ OpenGL มาตรฐาน แทนที่จะใช้ส่วนขยายเฉพาะของผู้ผลิต มีการเพิ่มการรองรับ GLSLซึ่งทำให้ฟังก์ชันการทำงานทั้งหมด (การแยกสาขาที่ซับซ้อนและลูป) ซึ่งก่อนหน้านี้รองรับเฉพาะ DirectX 9 เท่านั้น มาอยู่ใน OpenGL ด้วย โดยเฉพาะอย่างยิ่ง หมายความว่า Brook ตอนนี้มีความสามารถบนLinux ได้ดี เท่ากับWindowsแล้ว
การปรับปรุงอื่นๆ ในซีรีส์ v0.5 ได้แก่ การใช้งานหลายแบ็กเอนด์ ซึ่งช่วยให้เธรดต่างๆ สามารถเรียกใช้โปรแกรม Brook ที่แตกต่างกันได้พร้อมกัน (จึงเพิ่มประสิทธิภาพการใช้งาน GPU หลายตัวให้สูงสุด) และการ รองรับ SSEและOpenMPสำหรับแบ็กเอนด์ CPU (ซึ่งช่วยให้สามารถใช้งาน CPU รุ่นใหม่ๆ ได้เกือบเต็มประสิทธิภาพ)
การเปรียบเทียบประสิทธิภาพ
การเปรียบเทียบแบบเดียวกันระหว่าง CPU เดสก์ท็อปและ GPGPU นั้นเป็นเรื่องยากเนื่องจากความแตกต่างทางอัลกอริทึมและโครงสร้าง[ 3 ]
ตัวอย่างเช่นIntel Core 2 Duo ความเร็ว 2.66 GHz สามารถประมวลผลได้สูงสุด 25 GFLOPs (25 พันล้านการคำนวณจุดลอยตัวความแม่นยำเดี่ยวต่อวินาที) หากใช้ SSE และการเข้าถึงหน่วยความจำแบบสตรีมมิ่งอย่างเหมาะสมเพื่อให้พรีเฟตเชอร์ทำงานได้อย่างสมบูรณ์แบบ อย่างไรก็ตาม โดยทั่วไป (เนื่องจากข้อจำกัดด้านความยาวของโปรแกรมเชเดอร์) เคอร์เนล GPGPU ส่วนใหญ่มีแนวโน้มที่จะทำงานจำนวนเล็กน้อยกับข้อมูลจำนวนมากแบบขนาน ดังนั้นปัญหาใหญ่ของการเรียกใช้อัลกอริธึม GPGPU โดยตรงบน CPU เดสก์ท็อปคือแบนด์วิดท์หน่วยความจำที่ต่ำกว่ามาก เนื่องจากโดยทั่วไปแล้ว CPU จะใช้เวลาส่วนใหญ่รอRAMตัวอย่างเช่น RAM DDR2 PC2-6400 แบบ dual-channel สามารถส่งข้อมูลได้ประมาณ 11 Gbit/s ซึ่งประมาณ 1.5 GFLOPs สูงสุด เนื่องจากมีแบนด์วิดท์รวม 3 GFLOPs และต้องทั้งอ่านและเขียน ดังนั้นหากแบนด์วิดท์หน่วยความจำถูกจำกัด แบ็กเอนด์ CPU ของ Brook จะไม่เกิน 2 GFLOPs ในทางปฏิบัติ ประสิทธิภาพจะต่ำกว่านั้นมาก โดยเฉพาะอย่างยิ่งสำหรับข้อมูลประเภทอื่นที่ไม่ใช่ float4 ซึ่งเป็นประเภทข้อมูลเดียวที่สามารถเร่งความเร็วด้วย SSE ได้
บนATI HD 2900 XT (แกน 740 MHz หน่วยความจำ 1000 MHz) Brook สามารถทำงานได้สูงสุด 410 GFLOPs ผ่านแบ็กเอนด์ DirectX 9 [ 4 ]ปัจจุบัน OpenGL มีประสิทธิภาพน้อยกว่ามาก (เนื่องจากข้อจำกัดของไดรเวอร์และ คอมไพเลอร์ Cg ) ในฐานะแบ็กเอนด์ GPGPU บน GPU นั้น ดังนั้น Brook จึงสามารถจัดการได้เพียง 210 GFLOPs เมื่อใช้ OpenGL บน GPU นั้น ในทางทฤษฎี ดูเหมือนว่าจะเร็วกว่า CPU ประมาณยี่สิบเท่า แต่ดังที่ได้อธิบายไปแล้ว มันไม่ง่ายอย่างนั้น GPU ในปัจจุบันมีข้อจำกัดที่สำคัญในการเข้าถึงสาขาและการอ่าน/เขียน ดังนั้นคาดหวังประสิทธิภาพสูงสุดที่สมเหตุสมผลได้เพียงหนึ่งในสามของประสิทธิภาพสูงสุดในโค้ดจริง - ซึ่งยังคงทำให้การ์ด ATI อยู่ที่ประมาณ 125 GFLOPs ซึ่งเร็วกว่า Intel Core 2 Duo ประมาณห้าเท่า
อย่างไรก็ตาม นี่เป็นการมองข้ามส่วนสำคัญของการถ่ายโอนข้อมูลที่จะประมวลผลไปยังและจาก GPU ด้วย อินเทอร์เฟซ PCI Express 1.0 x8 หน่วยความจำของ ATI HD 2900 XT สามารถเขียนข้อมูลได้ที่ประมาณ 730 Mbit/s และอ่านข้อมูลที่ประมาณ 311 Mbit/s ซึ่งช้ากว่าหน่วยความจำพีซีทั่วไปอย่างมาก สำหรับชุดข้อมูลขนาดใหญ่ ความเร็วที่เพิ่มขึ้นจากการใช้ GPU เมื่อเทียบกับการใช้งาน CPU ที่ปรับแต่งมาอย่างดีนั้นอาจลดลงอย่างมาก แน่นอนว่า เมื่อ GPU เร็วขึ้นกว่า CPU อย่างรวดเร็ว และอินเทอร์เฟซ PCI Express ดีขึ้น การประมวลผลขนาดใหญ่โดยใช้ GPU ก็จะมีความเหมาะสมมากขึ้น
แอปพลิเคชันและเกมที่ใช้ BrookGPU
ดูเพิ่มเติม
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการของมหาวิทยาลัยสแตนฟอร์ด
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ บรู๊คจีพียู
ในด้านการ คำนวณ ภาษาโปรแกรม Brook และ การใช้งาน BrookGPU ถือเป็นความพยายามในช่วงแรกและมีอิทธิพลในการเปิดใช้ งานการคำนวณทั่วไปบนหน่วยประมวลผลกราฟิก (GPGPU) [ 1 ] [ 2 ] Brook...
สถานะ
เวอร์ชันเบต้าหลักสุดท้าย (v0.4) ออกวางจำหน่ายในเดือนตุลาคม 2547 แต่การพัฒนาได้เริ่มต้นใหม่และหยุดลงอีกครั้งในเดือนพฤศจิกายน 2550 โดยมีการออกเวอร์ชันเบต้า 1 (v0.5)
การเปรียบเทียบประสิทธิภาพ
การเปรียบเทียบแบบเดียวกันระหว่าง CPU เดสก์ท็อปและ GPGPU นั้นเป็นเรื่องยากเนื่องจากความแตกต่างทางอัลกอริทึมและโครงสร้าง [ 3 ]
ลิงก์ภายนอก
เว็บไซต์อย่างเป็นทางการ ของมหาวิทยาลัยสแตนฟอร์ด ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=BrookGPU&oldid=1332481047 "