NVIDIA vs AMD: ประสิทธิภาพ GPGPU


105

ฉันต้องการรับฟังความคิดเห็นจากผู้ที่มีประสบการณ์ในการเขียนโค้ดสำหรับทั้งคู่ ตัวฉันเองมีประสบการณ์กับ NVIDIA เท่านั้น

ดูเหมือนว่า NVIDIA CUDA จะได้รับความนิยมมากกว่าคู่แข่ง (เพียงแค่นับแท็กคำถามในฟอรัมนี้ 'cuda' มีประสิทธิภาพดีกว่า 'opencl' 3: 1 และ 'nvidia' มีประสิทธิภาพสูงกว่า 'ati' 15: 1 และไม่มีแท็กสำหรับ 'ati-stream' เลย)

ในทางกลับกันตาม Wikipedia การ์ด ATI / AMD ควรมีศักยภาพมากกว่านี้มากโดยเฉพาะต่อดอลลาร์ การ์ด NVIDIA ที่เร็วที่สุดในตลาด ณ วันนี้ GeForce 580 ($ 500) ได้รับการจัดอันดับที่ 1.6 single-precision TFlops AMD Radeon 6970 สามารถซื้อได้ในราคา $ 370 และได้รับการจัดอันดับที่ 2.7 TFlops 580 มีหน่วยประมวลผล 512 ที่ 772 MHz 6970 มีหน่วยประมวลผล 1536 หน่วยที่ 880 MHz

ความได้เปรียบจากกระดาษของ AMD ที่เหนือกว่า NVIDIA นั้นเป็นจริงเพียงใดและมีแนวโน้มที่จะรับรู้ในงาน GPGPU ส่วนใหญ่หรือไม่? เกิดอะไรขึ้นกับงานจำนวนเต็ม?


1
คำถามที่น่าสนใจ แต่ไม่แน่ใจว่าเกี่ยวข้องกับการเขียนโปรแกรมจริงหรือ
Paul R

25
โดยพื้นฐานแล้วเป็นคำถามเกี่ยวกับภาษาโปรแกรมสองภาษาและแง่มุมเชิงปฏิบัติของการนำไปใช้งาน ฉันจะตอบว่าใช่
Eugene Smith

2
ฉันสงสัยว่าคำตอบที่เกี่ยวข้องสำหรับคำถามนี้กลายมาเป็น C ++ AMP ได้อย่างไร
Dmitri Nesteruk

2
มีอยู่ช่วงหนึ่งฉันกำลังพิจารณาว่าเหตุใดการขุด Bitcoin จึงช้ามากบนฮาร์ดแวร์ NVIDIA เมื่อเทียบกับ AMD เธรดผลลัพธ์ "AMD Radeon 3x เร็วขึ้นในการขุด bitcoin (ประสิทธิภาพการแฮช SHA-256)" มีข้อมูลที่คุณอาจพบว่าน่าสนใจอีกครั้ง คำถามของคุณ. forums.nvidia.com/…
Roger Dahl

1
สำหรับฉันแล้วคำถามนี้อาจส่งผลให้เกิดการรวบรวมชิ้นส่วนความคิดเห็นขึ้นอยู่กับว่าผู้ตอบแบบสอบถามคุ้นเคยกับพื้นที่แอปพลิเคชันใดฮาร์ดแวร์และซอฟต์แวร์ที่ใช้เป็นต้น หรือคำตอบที่ครอบคลุมจะกว้างเกินไปที่จะพอดีกับรูปแบบ SO ปิดการลงคะแนน
njuffa

คำตอบ:


79

พูดเชิงเปรียบเทียบ ati มีเอนจิ้นที่ดีเมื่อเทียบกับ nvidia แต่ nvidia มีรถที่ดีกว่า: D

ส่วนใหญ่เป็นเพราะ nvidia ได้ลงทุนทรัพยากรจำนวนมาก (เป็นเงินและคน) เพื่อพัฒนาไลบรารีที่สำคัญที่จำเป็นสำหรับการคำนวณทางวิทยาศาสตร์ (BLAS, FFT) จากนั้นก็มีงานที่ดีอีกครั้งในการส่งเสริม นี่อาจเป็นเหตุผลที่ CUDA ครอบงำแท็กตรงนี้เมื่อเทียบกับ ati (หรือ OpenCL)

สำหรับข้อได้เปรียบที่เกิดขึ้นในงาน GPGPU โดยทั่วไปนั้นจะขึ้นอยู่กับปัญหาอื่น ๆ (ขึ้นอยู่กับแอปพลิเคชัน) เช่นแบนด์วิดท์การถ่ายโอนหน่วยความจำคอมไพเลอร์ที่ดีและอาจเป็นแม้แต่ไดรเวอร์ nvidia มีคอมไพเลอร์ที่เป็นผู้ใหญ่มากขึ้นไดรเวอร์ที่เสถียรกว่าบน linux (linux เนื่องจากการใช้งานแพร่หลายในการคำนวณทางวิทยาศาสตร์) เอียงสมดุลเพื่อรองรับ CUDA (อย่างน้อยก็ในตอนนี้)


แก้ไข 12 ม.ค. 2556

เป็นเวลาสองปีแล้วที่ฉันสร้างโพสต์นี้และดูเหมือนว่าจะมีผู้เข้าชมในบางครั้ง ดังนั้นฉันจึงตัดสินใจที่จะชี้แจงบางสิ่ง

  • AMD ได้พัฒนาเกมของพวกเขา ตอนนี้มีทั้งห้องสมุด BLAS และ FFT นอกจากนี้ไลบรารีของบุคคลที่สามจำนวนมากกำลังครอบตัดด้วย OpenCL
  • Intel ได้เปิดตัว Xeon Phi เข้าสู่การสนับสนุนทั้ง OpenMP และ OpenCL นอกจากนี้ยังมีความสามารถในการใช้รหัส x86 ที่มีอยู่ ตามที่ระบุไว้ในความคิดเห็น จำกัด x86 โดยไม่มี SSE ในตอนนี้
  • NVIDIA และ CUDA ยังคงมีความได้เปรียบในช่วงของไลบรารีที่มีอยู่ อย่างไรก็ตามพวกเขาอาจไม่ได้ให้ความสำคัญกับ OpenCL มากเท่าที่เคยทำมาก่อน

กล่าวโดยย่อว่า OpenCL ได้ปิดช่องว่างในช่วงสองปีที่ผ่านมา มีผู้เล่นใหม่ในสนาม แต่ CUDA ยังคงนำหน้าอยู่เล็กน้อย


4
Xeon Phi มีความสามารถจำกัดในการเรียกใช้โค้ด x86 เท่านั้น ไม่มี MMX / SSE / SSE *
osgx

@osgx ขอบคุณ ฉันควรจะพูดถึงเรื่องนั้น
Pavan Yalamanchili

1
@osgx แต่มันทำงานได้ดีใน DP FP
Csaba Toth

4
Xeon Phi มีการลงทะเบียนและคำแนะนำที่กว้าง 512 บิตซึ่งเท่ากับ 4x ของสิ่งที่ SSE รองรับ
zr.

59

ฉันไม่มีความรู้สึกใด ๆ เกี่ยวกับ CUDA กับ OpenCL สันนิษฐานว่า OpenCL เป็นอนาคตระยะยาวเพียงแค่การเป็นมาตรฐานเปิด

แต่การ์ด NVIDIA เทียบกับ ATI ในปัจจุบันสำหรับ GPGPU (ไม่ใช่ประสิทธิภาพด้านกราฟิก แต่เป็น GPGPU) ที่ฉันมีความเห็นที่ชัดเจนเกี่ยวกับ และเพื่อนำไปสู่สิ่งนั้นฉันจะชี้ให้เห็นว่าในรายชื่อกลุ่มใหญ่ 500 อันดับแรกในปัจจุบัน NVIDIA นำระบบ AMD 4 ไปสู่ ​​1 และบนgpgpu.orgผลการค้นหา (เอกสารลิงก์ไปยังแหล่งข้อมูลออนไลน์ ฯลฯ ) สำหรับ NVIDIA มากกว่าผลลัพธ์สำหรับ AMD 6: 1

ส่วนใหญ่ของความแตกต่างนี้คือจำนวนข้อมูลออนไลน์ที่มีอยู่ ตรวจสอบ NVIDIA CUDA โซนเมื่อเทียบกับเอเอ็มดีGPGPU ผู้พัฒนากลาง จำนวนสิ่งที่มีสำหรับนักพัฒนาที่เริ่มต้นขึ้นไม่ได้ใกล้เคียงกับการเปรียบเทียบ บนเว็บไซต์ NVIDIAs คุณจะพบเอกสารมากมาย - และรหัสที่มีส่วนร่วม - จากผู้ที่อาจกำลังแก้ไขปัญหาเช่นเดียวกับคุณ คุณจะพบคลาสออนไลน์มากมายจาก NVIDIA และที่อื่น ๆ และเอกสารที่มีประโยชน์มากมายเช่นคู่มือแนวทางปฏิบัติที่ดีที่สุดของนักพัฒนาเป็นต้นความพร้อมใช้งานของเครื่องมือ devel ฟรีไม่ว่าจะเป็น profiler, cuda-gdb และอื่น ๆ - เอียงไปทาง NVIDIA อย่างท่วมท้น

(บรรณาธิการ: ข้อมูลในย่อหน้านี้ไม่ถูกต้องอีกต่อไป) และความแตกต่างบางประการก็คือฮาร์ดแวร์ด้วย การ์ด AMD มีสเปคที่ดีกว่าในแง่ของการปัดสูงสุด แต่เพื่อให้ได้ส่วนที่สำคัญคุณไม่เพียง แต่ต้องแบ่งปัญหาของคุณไปยังตัวประมวลผลสตรีมที่เป็นอิสระอย่างสมบูรณ์จำนวนมากแต่ละรายการงานยังต้องได้รับการทำเวกเตอร์ด้วย เนื่องจากโค้ด GPGPUing นั้นยากพอความซับซ้อนทางสถาปัตยกรรมที่เพิ่มขึ้นก็เพียงพอที่จะสร้างหรือทำลายบางโครงการ

และผลจากทั้งหมดนี้ก็คือชุมชนผู้ใช้ NVIDIA เติบโตขึ้นอย่างต่อเนื่อง ในสามหรือสี่กลุ่มที่ฉันรู้ว่ากำลังคิดจะสร้างคลัสเตอร์ GPU ไม่มีกลุ่มใดเลยที่พิจารณาการ์ด AMD อย่างจริงจัง และนั่นจะหมายถึงกลุ่มอื่น ๆ ที่เขียนเอกสารโค้ดร่วมและอื่น ๆ ทางฝั่ง NVIDIA

ฉันไม่ใช่หน้าม้า NVIDIA ฉันหวังว่ามันจะไม่ใช่แบบนี้และมีแพลตฟอร์ม GPGPU ที่น่าสนใจพอ ๆ กันสองแพลตฟอร์ม (หรือมากกว่านั้น!) การแข่งขันเป็นสิ่งที่ดี บางที AMD อาจจะก้าวขึ้นสู่เกมในไม่ช้า - และผลิตภัณฑ์ฟิวชั่นที่กำลังจะมาถึงก็ดูน่าสนใจมาก แต่ในการให้คำแนะนำกับใครบางคนว่าควรซื้อการ์ดใบไหนในวันนี้และจะใช้เวลาไปที่ไหนในตอนนี้ฉันไม่สามารถบอกได้ว่าสภาพแวดล้อมการพัฒนาทั้งสองอย่างดีพอ ๆ กัน

แก้ไขเพื่อเพิ่ม : ฉันเดาว่าข้างต้นเป็นรูปไข่เล็กน้อยในแง่ของการตอบคำถามเดิมขอฉันทำให้ชัดเจนขึ้นอีกนิด ประสิทธิภาพที่คุณจะได้รับจากฮาร์ดแวร์ชิ้นหนึ่งคือในโลกแห่งอุดมคติที่มีเวลาไม่ จำกัด ขึ้นอยู่กับฮาร์ดแวร์พื้นฐานและความสามารถของภาษาโปรแกรมเท่านั้น แต่ในความเป็นจริงจำนวนของประสิทธิภาพที่คุณจะได้รับในระยะเวลาที่แน่นอนที่ลงทุนนั้นขึ้นอยู่กับเครื่องมือ devel ฐานรหัสชุมชนที่มีอยู่ (เช่นไลบรารีที่เปิดเผยต่อสาธารณะเป็นต้น) การพิจารณาเหล่านี้ล้วนชี้ไปที่ NVIDIA อย่างมาก

(บรรณาธิการ: ข้อมูลในย่อหน้านี้ไม่ถูกต้องอีกต่อไป) ในแง่ของฮาร์ดแวร์ข้อกำหนดสำหรับการสร้างเวกเตอร์ภายในหน่วย SIMD ในการ์ด AMD ยังทำให้การทำงานของกระดาษทำได้ยากกว่าฮาร์ดแวร์ NVIDIA


2
ฉันกำลังเรียนรู้ OpenCL โดยใช้ ATI Stream ขอขอบคุณที่ทราบเกี่ยวกับ vectorizing :) ในขณะที่ฉันตระหนักดีว่าประโยชน์ของ NVIDIA นั้นมีขนาดใหญ่พอสมควร แต่ฉันสนับสนุน AMD / ATI และตัว บริษัท เองและฉันก็มีเวลาที่จะสร้างไลบรารี: DI คิดว่าประสิทธิภาพของ OpenCL จะ เพิ่มขึ้นอย่างแน่นอนในอีกไม่กี่ปีข้างหน้าและฉันต้องการให้รหัสของฉันพร้อมสำหรับสิ่งนั้นเช่นกัน
Garet Claborn

มันน่าสนใจที่จะเห็นว่าคุณคิดอย่างไรกับ GCN และ OpenCL 1.2 ของ AMD ตอนนี้ (2013) ที่ซิมด์เป็นอดีตไปแล้ว ความแตกต่างสุทธิใด ๆ ?
danno

3
@ โจนาธาน 3 ปีแล้วที่คุณเขียนโพสต์ดีๆนี้ ฉันสงสัยว่าในมุมมองของคุณแพลตฟอร์ม AMD ชุมชนและระบบนิเวศได้ปิดช่องว่างหรือไม่
Basilikode

ไม่มากสำหรับการ์ดวิดีโอหรือ GPGPU แต่สำหรับโปรเซสเซอร์เองฉันเป็นแฟนตัวยงของ Intel มากกว่า AMD มาโดยตลอดและเมื่อเร็ว ๆ นี้ AMD กำลังจะเปิดตัวโปรเซสเซอร์ ZEN ใหม่ซึ่งการทดสอบเครื่องหมายเบิร์นของพวกเขาแสดงให้เห็นว่าเป็นค่าเริ่มต้น เทียบได้กับโปรเซสเซอร์ i7 อันดับต้น ๆ ของ Intel เทคโนโลยีใหม่ของพวกเขาควรจะปรับปรุงให้ทำงานได้มากขึ้นเนื่องจากจดจำรูปแบบคำสั่ง ดังนั้นฉันคิดว่าเวลาและความพยายามส่วนใหญ่ใช้ไปกับโปรเซสเซอร์ใหม่นี้เมื่อเทียบกับเทคโนโลยี GPU ของพวกเขา เมื่อโปรเซสเซอร์ Zen ของพวกเขาเปิดตัวฉันมั่นใจว่า Intel จะมีสิ่งที่ดีกว่า
Francis Cugler

17

ความแตกต่างที่สำคัญระหว่างสถาปัตยกรรมของ AMD และ NVIDIA คือ AMD ได้รับการปรับให้เหมาะสมสำหรับปัญหาที่สามารถกำหนดพฤติกรรมของอัลกอริทึมได้ในเวลาคอมไพล์ในขณะที่ NVIDIA ได้รับการปรับให้เหมาะสมสำหรับปัญหาที่สามารถกำหนดพฤติกรรมของอัลกอริทึมได้เฉพาะในเวลาทำงานเท่านั้น

AMD มีสถาปัตยกรรมที่ค่อนข้างเรียบง่ายที่ช่วยให้พวกเขาใช้ทรานซิสเตอร์ได้มากขึ้นกับ ALU ตราบใดที่ปัญหาสามารถกำหนดได้อย่างสมบูรณ์ในเวลาคอมไพล์และแมปกับสถาปัตยกรรมได้สำเร็จด้วยวิธีที่ค่อนข้างคงที่หรือเชิงเส้นมีโอกาสดีที่ AMD จะสามารถรันอัลกอริทึมได้เร็วกว่า NVIDIA

ในทางกลับกันคอมไพเลอร์ของ NVIDIA ทำการวิเคราะห์น้อยลงในเวลาคอมไพล์ NVIDIA มีสถาปัตยกรรมขั้นสูงที่พวกเขาใช้ทรานซิสเตอร์มากขึ้นในตรรกะที่สามารถจัดการกับพฤติกรรมแบบไดนามิกของอัลกอริทึมที่เกิดขึ้นในเวลาทำงานเท่านั้น

ฉันเชื่อว่าความจริงที่ว่าซูเปอร์คอมพิวเตอร์ส่วนใหญ่ที่ใช้ GPU ร่วมกับ NVIDIA นั้นเป็นประเภทของปัญหาที่นักวิทยาศาสตร์สนใจในการคำนวณบนแผนที่โดยทั่วไปจะดีกว่าสถาปัตยกรรมของ NVIDIA มากกว่าของ AMD


2
ด้วย GCN (Graphics Core Next) AMD ได้ย้ายออกจาก SIMD และ VLIW ไปยังสถาปัตยกรรมที่คล้ายกับ NVIDIA มากขึ้น (SIMT และการตั้งเวลาการเรียนการสอนที่ยืดหยุ่นกว่า)
Aleksandr Dubinsky

1
@AleksandrDubinsky: และด้วยฮาร์ดแวร์ของ Compute Capability 3.0 NVIDIA ได้เข้าใกล้ AMD มากขึ้นโดยการลบการตั้งเวลาแบบไดนามิก ฉันคิดว่าสถาปัตยกรรมของพวกเขาจะมาบรรจบกันตรงกลาง
Roger Dahl

1
ฉันเคยได้ยินเรื่องนี้มาก่อน แต่ไม่พบข้อมูลที่เป็นรูปธรรม ฉันจะหารายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่ไหน?
Yakov Galka

7

ฉันได้ทำการเข้ารหัสซ้ำใน OpenCL แล้ว และผลลัพธ์ของการรันใน NVIDIA และ ATI นั้นค่อนข้างเหมือนกัน ใกล้ความเร็วเท่ากันในการ์ดมูลค่าเดียวกัน ($)

ในทั้งสองกรณีความเร็วอยู่ที่ ~ 10x-30x เมื่อเทียบกับ CPU

ฉันไม่ได้ทดสอบ CUDA แต่ฉันสงสัยว่ามันสามารถแก้ปัญหาการดึงข้อมูลหน่วยความจำแบบสุ่มของฉันได้อย่างน่าอัศจรรย์ ปัจจุบัน CUDA และ OpenCL มีความเหมือนกันมากหรือน้อยและฉันเห็นอนาคตของ OpenCL มากกว่า CUDA สาเหตุหลักคือ Intel เปิดตัวไดรเวอร์ด้วย OpenCL สำหรับโปรเซสเซอร์ของตน นี่จะเป็นความก้าวหน้าครั้งใหญ่ในอนาคต (การรัน OpenCL 16, 32 หรือ 64 เธรดใน CPU นั้นเร็วมากและง่ายต่อการพอร์ตไปยัง GPU)


7

หลังจากใช้เวลากับ OpenCL สำหรับการ์ด GCN หลังจาก CUDA สำหรับ Fermi และ Kepler ไม่กี่ปีฉันยังคงชอบ CUDA เป็นภาษาโปรแกรมและจะเลือกฮาร์ดแวร์ AMD กับ CUDA ถ้าฉันมีตัวเลือก

ความแตกต่างหลักของ NVIDIA และ AMD (OpenCL):

สำหรับ AMD:

  • แม้จะใช้ Maxwell แต่ NVidia ก็ยังมีเวลาในการตอบสนองของคำสั่งที่ยาวขึ้นและอัลกอริทึมที่ซับซ้อนมีแนวโน้มที่จะเร็วขึ้น 10 เท่าบน AMD (สมมติว่า Tflops ในทางทฤษฎีเดียวกัน) หลังจากปรับแต่งได้ง่ายสำหรับทั้งสองอย่าง ช่องว่างมากถึง 60% สำหรับ Kepler VS GCN มันยากกว่าที่จะเพิ่มประสิทธิภาพเมล็ดที่ซับซ้อนสำหรับ NVidia ในแง่นี้

  • การ์ดราคาถูก.

  • OpenCL เป็นมาตรฐานแบบเปิดสำหรับผู้ให้บริการรายอื่น

สำหรับ Nvidia:

  • มีกลุ่มฮาร์ดแวร์ของ Tesla ที่เหมาะสำหรับการโหลดเซิร์ฟเวอร์สูงที่เชื่อถือได้

  • New Maxwell เป็นวิธีที่ประหยัดพลังงานมากขึ้น

  • คอมไพเลอร์และเครื่องมือเป็นวิธีที่ก้าวหน้ากว่า AMD ยังไม่สามารถใช้maxregcoutพารามิเตอร์ได้ดังนั้นคุณจึงสามารถควบคุมการเข้าพักบนฮาร์ดแวร์ต่างๆได้อย่างง่ายดายและคอมไพเลอร์ของพวกเขามีแนวคิดแบบสุ่มจำนวนมากว่าโค้ดใดที่เหมาะสมที่สุดซึ่งเปลี่ยนแปลงไปในทุกเวอร์ชันดังนั้นคุณอาจต้องกลับมาดูโค้ดเก่าทุกๆครึ่งหนึ่ง หนึ่งปีเพราะจู่ๆมันก็ช้าลง 40%

ณ จุดนี้หาก GPGPU เป็นเป้าหมายของคุณ CUDA เป็นทางเลือกเดียวเนื่องจาก opencL กับ AMD ยังไม่พร้อมสำหรับเซิร์ฟเวอร์ฟาร์มและยากกว่ามากในการเขียนโค้ดที่มีประสิทธิภาพสำหรับ AMD เนื่องจากคอมไพเลอร์มักจะ "อยู่ในเบต้า" .


ขอบคุณสำหรับคำตอบสด คุณช่วยชี้แจงได้ไหมว่า "น่าจะเร็วกว่า 10" อยู่ในหน่วยใด เปอร์เซ็นต์?
Aleksandr Dubinsky

ความคิดเห็นส่วนตัว: ครั้งหนึ่ง ATI Cards มีความหมายที่ดีกว่า Nvidia แต่ขาดการรองรับการอัปเดตไดรเวอร์และเมื่อเวลาผ่านไป AMD ก็ซื้อ ATI ไปโดยสิ้นเชิงโดยที่ Nvidia ยังคงเป็น บริษัท เดียวกัน นอกจากนี้ Nvidia ยังรองรับการอัปเดตไดรเวอร์ที่ดีกว่า สิ่งนี้อยู่ในส่วนท้ายของผู้ใช้สำหรับการใช้งานแอพพลิเคชั่น อย่าเข้าใจฉันผิดเทคโนโลยีทั้งสองนั้นยอดเยี่ยมในแบบของตัวเองและทั้งสองมีการ์ดราคาถูกระดับล่างและการ์ดระดับไฮเอนด์ที่มีราคาแพงกว่า เมื่อเวลาผ่านไปฉันเปลี่ยนจาก ATI เป็น Nvidia สำหรับการพัฒนา Nvidia มีชุดคุณลักษณะที่ดีกว่ามากและ API หรือไลบรารีที่ตั้งโปรแกรมได้
Francis Cugler

6

ฉันยังใหม่กับ GPGPU แต่มีประสบการณ์ในการคำนวณทางวิทยาศาสตร์ (ปริญญาเอกสาขาฟิสิกส์) ฉันกำลังรวบรวมทีมวิจัยและต้องการใช้ GPGPU สำหรับการคำนวณของฉัน ฉันต้องเลือกระหว่างแพลตฟอร์มที่มี ฉันตัดสินใจเลือก Nvidia ด้วยเหตุผลสองประการ: แม้ว่า ATI อาจเร็วกว่าบนกระดาษ แต่ Nvidia มีแพลตฟอร์มที่เป็นผู้ใหญ่มากขึ้นและมีเอกสารประกอบมากขึ้นดังนั้นจึงเป็นไปได้ที่จะเข้าใกล้ประสิทธิภาพสูงสุดบนแพลตฟอร์มนี้

Nvidia ยังมีโปรแกรมสนับสนุนการวิจัยทางวิชาการซึ่งสามารถสมัครขอรับการสนับสนุนได้ฉันเพิ่งได้รับการ์ด TESLA 2075 ซึ่งฉันมีความสุขมาก ฉันไม่รู้ว่า ATI หรือ Intel สนับสนุนการวิจัยด้วยวิธีนี้หรือไม่

สิ่งที่ฉันได้ยินเกี่ยวกับ OpenCL ก็คือมันพยายามที่จะเป็นทุกอย่างในคราวเดียวเป็นความจริงที่รหัส OpenCL ของคุณจะพกพาได้มากขึ้น แต่ก็มีแนวโน้มที่จะไม่ใช้ประโยชน์จากความสามารถทั้งหมดของทั้งสองแพลตฟอร์ม ฉันอยากเรียนรู้เพิ่มเติมและเขียนโปรแกรมที่ใช้ทรัพยากรได้ดีกว่า ด้วย TESLA K10 ที่เพิ่งเปิดตัวในปีนี้ Nvidia อยู่ในช่วง 4.5 TeraFlops ดังนั้นจึงไม่ชัดเจนว่า Nvidia อยู่เบื้องหลัง ... อย่างไรก็ตาม Intel MICs สามารถพิสูจน์ได้ว่าเป็นคู่แข่งที่แท้จริงโดยเฉพาะอย่างยิ่งหากพวกเขาประสบความสำเร็จในการย้ายหน่วย GPGPU ไปที่ เมนบอร์ด แต่ตอนนี้ฉันเลือก Nvidia


ลองดูคำตอบของ @ AndrewCooke สำหรับความเห็นเกี่ยวกับการสนับสนุน (ขาด) ของ NVidia
Aleksandr Dubinsky

5

ประสบการณ์ของฉันในการประเมินประสิทธิภาพจุดลอยตัวของ OpenCL มักจะชอบการ์ด NVIDIA ฉันได้ทำงานร่วมกับการวัดค่าทศนิยมสองสามจุดบนการ์ด NVIDIA ตั้งแต่ 8600M GT ไปจนถึง GTX 460 การ์ด NVIDIA บรรลุประมาณครึ่งหนึ่งของจุดสูงสุดของ single-precisino ตามทฤษฎีอย่างต่อเนื่องในเกณฑ์มาตรฐานเหล่านี้
การ์ด ATI ที่ฉันใช้งานไม่ค่อยได้ผลดีกว่าหนึ่งในสามของจุดสูงสุดที่มีความแม่นยำเดียว โปรดทราบว่าประสบการณ์ของฉันกับ ATI นั้นบิดเบี้ยว ฉันสามารถใช้งานได้กับการ์ดซีรีส์ 5000 หนึ่งใบเท่านั้น ประสบการณ์ของฉันส่วนใหญ่ใช้กับการ์ดซีรีส์ HD 4000 ซึ่งไม่ได้รับการสนับสนุนอย่างดี การรองรับการ์ด HD 5000 series นั้นดีกว่ามาก


1

ฉันอยากจะเพิ่มในการอภิปราย สำหรับเราในธุรกิจซอฟต์แวร์เราสามารถประนีประนอมประสิทธิภาพการทำงานที่แม่นยำเพียงครั้งเดียวเพื่อเพิ่มผลผลิตได้ แต่ถึงแม้ฉันจะไม่ต้องประนีประนอมเนื่องจากตามที่ได้ระบุไว้แล้วคุณไม่สามารถบรรลุประสิทธิภาพบนฮาร์ดแวร์ของ ATI โดยใช้ OpenCL ได้มากเท่าที่คุณจะทำได้ ถ้าคุณเขียนใน CUDA บนฮาร์ดแวร์ของ NVIDIA

และใช่ด้วยการประกาศ x86 คอมไพเลอร์สำหรับ CUDA ของ PGI จะไม่มีเหตุผลที่ดีที่จะใช้เวลาและทรัพยากรในการเขียนใน OpenCL มากขึ้น :)

PS: ข้อโต้แย้งของฉันอาจมีอคติเนื่องจากเราทำงาน GPGPU เกือบทั้งหมดบน CUDA เรามีไลบรารีการประมวลผลภาพ / คอมพิวเตอร์วิชั่น CUVI (CUDA for Vision and Imaging) ซึ่งช่วยเร่งการทำงานของ IP / CV หลักบางอย่างบน CUDA


0

Cuda ได้รับความนิยมมากกว่า OpenCL ณ วันนี้เนื่องจากเปิดตัว 3 หรือ 4 ปีก่อน OpenCL นับตั้งแต่เปิดตัว OpenCL Nvidia ไม่ได้มีส่วนช่วยในเรื่องภาษามากนักเนื่องจากพวกเขาให้ความสำคัญกับ CUDA มาก พวกเขายังไม่ได้เปิดตัวเวอร์ชัน openCL 1.2 สำหรับไดรเวอร์ใด ๆ

สำหรับการใช้คอมพิวเตอร์ที่แตกต่างกันเช่นเดียวกับอุปกรณ์มือถือตามที่เกี่ยวข้อง OpenCl จะได้รับความนิยมมากขึ้นในอนาคตอันใกล้นี้ ในขณะนี้ผู้สนับสนุน OpenCL รายใหญ่ที่สุดคือ AMD ซึ่งสามารถมองเห็นได้บนเว็บไซต์ของพวกเขา


-2

จากประสบการณ์ของฉัน:

  • หากคุณต้องการประสิทธิภาพที่ดีที่สุดคุณต้องดูว่าใครอยู่ในการทำซ้ำฮาร์ดแวร์ล่าสุดและใช้สแต็ก (รวมถึงรุ่นล่าสุด / เบต้า)

  • หากคุณต้องการประสิทธิภาพที่ดีที่สุดสำหรับเงินคุณจะมุ่งเป้าไปที่การ์ดเกมเมอร์มากกว่าการ์ด "มืออาชีพ" และความยืดหยุ่นในการกำหนดเป้าหมายแพลตฟอร์มที่แตกต่างกันนั้นสนับสนุน opencl

  • หากคุณกำลังเริ่มต้นโดยเฉพาะอย่างยิ่ง cuda มีแนวโน้มที่จะสวยงามมากขึ้นและมีเครื่องมือและไลบรารีมากขึ้น

ในที่สุดการใช้งานส่วนตัวของฉันหลังจาก "การสนับสนุน" ที่น่าตกใจจาก nvidia (เราได้รับเทสลาที่ตายแล้วและมันไม่ได้เปลี่ยนเป็นเวลาหลายเดือนในขณะที่ลูกค้ากำลังรอ): ความยืดหยุ่นในการกระโดดเรือด้วย opencl นั้นคุ้มค่ากับความเสี่ยงของประสิทธิภาพที่ลดลงเล็กน้อย เมื่อ nvidia อยู่ข้างหน้าในรอบการเปิดตัว


ประสบการณ์ที่คล้ายกันกับ "การสนับสนุน" จาก nvidia: เกิดข้อผิดพลาดlibcuda.so(เฉพาะกับ OpenCL, CUDA ทำงานได้) และไม่มีการตอบสนองใด ๆ จากพวกเขา แต่อย่างใด
eudoxos

1
ด้วยตัวแทนจำหน่ายของเราเราไม่มีปัญหาในการเปลี่ยนเทสลาที่ตายแล้วโดยปกติเราจะได้รับฮาร์ดแวร์ใหม่ก่อนที่จะส่งชิ้นส่วนที่ผิดพลาดดังนั้นฉันเดาว่าไม่ใช่ปัญหาของ NVidia แต่เป็นตัวแทนจำหน่ายของคุณ
Gaetano Mendola

ฉันคิดว่าเทสลาน่าเชื่อถือสุด ๆ สิ่งที่เหลวไหลทางการตลาด
Aleksandr Dubinsky

OpenCL ไม่ใช่แบบพกพาที่มีประสิทธิภาพดังนั้นจึงเป็นไปไม่ได้ที่จะกระโดดลงเรือทุกครั้งที่ บริษัท หนึ่งออกเรือธงใหม่ (โดยไม่ต้องดูแลสาขารหัสที่ปรับให้เหมาะสมสองสาขา) นอกจากนี้การสนับสนุน OpenCL ของ NVIDIA ยังมีหลายเวอร์ชันที่อยู่เบื้องหลังและฉันสงสัยว่าได้รับการดูแลไม่ดี
Aleksandr Dubinsky
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.