CUDA vs OPENCL? AMD hay Nvidia sẽ tốt hơn trong làm việc?

09-08-2019 06:15

Nếu các bạn không biết GPGPU là gì hay OpenCL, CUDA là như thế nào thì điều đó cũng bình thường thôi. Bởi vì nó là những từ ngữ chuyên dụng được sử dụng trong phần cứng và phần mềm của card đồ họa. Tuy nhiên bài biết này sẽ giải thích sơ bộ về các thuật ngữ đó và ứng dụng của nó để các bạn có thể nắm rõ.

GPGPU là gì?

Chúng ta đã biết GPU (Graphics Processing Unit) là đơn vị xử lý đồ họa, hay hiểu đơn giản nó là cái card đồ họa bạn mua để cắm vào thùng máy tính. Thông thường GPU hỗ trợ cho CPU (central processing unit) để tính toán hình ảnh xuất lên màn hình (chơi game mượt hơn). Nhưng nó chỉ hỗ trợ một chiều, nghĩa là CPU xử lý tính toán rồi trả kết quả cho GPU xử lý hình ảnh xuất ra màn hình, nó không trả lại kết quả cho CPU. Để GPU trả lại kết quả cho CPU, cần có có sự hỗ trợ GPGPU (General Purpose Computing on Graphics Processing Units). Hay nói cách khác GPGPU là thành phần để GPU giao tiếp với CPU.

Nếu để chơi game thì không cần quan tâm GPGPU là gì, CPU tính toán trả kết quả cho GPU tính toán xuất hình ảnh ra màn hình. Nếu bạn có nhiều hơn 1 GPU thì cần có thiết bị gắn thêm để các GPU giao tiếp với nhau. thiết bị đó là SLI của Nvidia hay CrossFireX của AMD.

Nếu để render trên VRay, Octane, Redshift, Blender,… thì cần có GPGPU, CPU tính toán rồi trả kết quả cho GPU tính toán hình ảnh sau đó lại trả kết quả về CPU. Nếu bạn có nhiều hơn 1 GPU thì hệ thống vẫn làm việc mà không cần SLI hay CrossFireX vì lúc này các GPU làm việc độc lập với nhau

OpenCL và CUDA là gì?

Chúng ta đã biết GPGPU giúp cho GPU và CPU giao tiếp với nhau theo 2 chiều. OpenCL và CUDA là một software frameworks để GPGPU làm việc. Nghĩa là để can thiệp vào quá trình tính toán đó thì GPGPU phải thông quan OpenCL/CUDA.

OpenCL là GPGPU framework mã nguồn mở được sử dụng trong các card đồ họa của AMD. CUDA là GPGPU framework độc quyền của Nvidia. Card đồ họa của Nvidia hỗ trợ cả OpenCL và CUDA, trước đây Nvidia hỗ trợ OpenCL không tốt bằng AMD nhưng các thế hệ mới hay chi tiết hơn là RTX 20 Series đã có sự cải thiện rõ rệt

Điểm mạnh của việc tăng tốc CUDA là gì?

Sự khác biệt chính giữa CUDA và OpenCL là CUDA là một framework độc quyền được tạo bởi Nvidia và OpenCL là nguồn mở. Mỗi cách tiếp cận này đều mang lại những ưu và nhược điểm riêng mà chúng tôi sẽ nêu trong phần này.

Nếu ứng dụng bạn chọn hỗ trợ cả CUDA và OpenCL, hãy sử dụng CUDA vì nó sẽ tạo ra kết quả hiệu suất tốt hơn. Lý do chính cho điều này là Nvidia cung cấp sự hỗ trợ chất lượng hàng đầu cho các nhà phát triển ứng dụng chọn sử dụng tăng tốc CUDA, do đó việc tích hợp luôn tuyệt vời. Ví dụ: nếu chúng ta xem Adobe CC, hỗ trợ cả CUDA và OpenCL, CUDA sẽ tăng tốc nhiều tính năng hơn và cung cấp khả năng tăng tốc tốt hơn cho các tính năng mà cả hai framework có thể tăng tốc. Nếu chúng ta xem Premiere Pro CS6, không có CUDA thì chỉ có khả năng Preview dựa trên phần mềm là chạy thuần CPU. Để đọc thêm, trong một chủ đề diễn đàn về Creative Cow, một nhân viên Adobe đã nói rằng trong hầu hết các trường hợp, CUDA sẽ tốt hơn OpenCL.

Một ví dụ điển hình khác về sự khác biệt giữa hỗ trợ CUDA và OpenCL có thể được nhìn thấy trong REDCINE-X. Nếu bạn bật OpenCL, chỉ có thể sử dụng 1 GPU, tuy nhiên, khi CUDA được bật, 2 GPU có thể được sử dụng cho GPGPU. Hay mới đây nhất với phiên bản Nvidia Studio Driver chúng ta đã có thể sử dụng GPU của Nvidia để giải mã video độ phân giải 8K.

Rõ ràng, vì CUDA là một framework độc quyền, nó đòi hỏi sự hỗ trợ và thời gian của Nvidia để tích hợp nó vào các ứng dụng, điều này có nghĩa là chức năng này luôn tuyệt vời. Tuy nhiên, CUDA không dễ dàng cho các ứng dụng chấp nhận như OpenCL (vì nó là nguồn mở). Bất kể điều này, CUDA vẫn được hỗ trợ bởi rất nhiều ứng dụng và tiếp tục phát triển.

Như một quy tắc dễ hiểu, nếu ứng dụng của bạn hỗ trợ CUDA, hãy sử dụng Nvidia, ngay cả khi ứng dụng đó cũng hỗ trợ OpenCL.

Điểm mạnh của nền tảng OpenCL là gì?

OpenCL là một khung GPGPU có nguồn mở. Chúng tôi đã đề cập rằng nếu phần mềm của bạn hỗ trợ cả OpenCL và CUDA, thì hãy sử dụng CUDA, nhưng nếu OpenCL là lựa chọn duy nhất thì sao?

Nói một cách đơn giản, nếu OpenCL là sự lựa chọn duy nhất của bạn, ví dụ: Final Cut Pro X chỉ hỗ trợ OpenCL và chúng tôi thường khuyên người dùng nên sử dụng card đồ họa AMD OpenCL. Trên toàn bộ tích hợp OpenCL thường không chặt chẽ như CUDA, nhưng OpenCL vẫn sẽ tạo ra các hiệu suất tăng đáng kể khi được sử dụng và tốt hơn nhiều so với việc không sử dụng GPGPU.

Như chúng tôi đã nói trước đó, card đồ họa Nvidia cũng có thể sử dụng framework OpenCL, nhưng nó không hiệu quả như card đồ họa của AMD. Vì vậy, nếu các ứng dụng bạn sử dụng hoàn toàn dựa trên OpenCL và không có hỗ trợ CUDA, chẳng hạn như Final Cut Pro X, chúng tôi khuyên bạn nên trang bị cho hệ thống của mình một GPU AMD OpenCL.

Kết luận

  • Chơi game thì không cần CPU mạnh, nếu có nhiều hơn 1 card thì cần phải nối cầu SLI hoặc CrossFireX
  • Render thì không cần SLI hoặc CrossFireX nhưng CPU cũng phải mạnh
  • Máy đào bitcoin có render được không? Có render được nhưng sẽ bị tình trạng nghẽn cổ chai nếu CPU không đủ mạnh
  • Chọn AMD hay Nvidia? nó phụ thuộc vào phần mềm bạn đang sử dụng. Nếu bạn dùng phần mềm chỉ hỗ trợ OpenCL thì hãy chọn AMD. Nếu phần mềm hỗ trợ cả 2 thì chọn Nvidia. Nếu dùng Blender Cycles, Octane, Redshift, VRay để render thì hãy chọn Nvidia. Ngược lại nếu bạn render bằng LuxCoreRender 9 hay Radeon ProRender 17 thì chọn AMD

Sự tương thích của một số phần mềm với OpenCL/CUDA

Adobe After Effects CC

  • CUDA Support
    3D ray tracing
    Multi GPU support
  • OpenCL Support
    Có hỗ trợ nhưng AMD không công bố thông tin chi tiết

Adobe Photoshop CC

  • CUDA Support
    30 effects in Mercury Graphics Engine
  • OpenCL Support
    Có hỗ trợ nhưng AMD không công bố thông tin chi tiết

Adobe Premiere Pro CC

  • CUDA Support
    Mercury Playback Engine for real-time video editing & accelerated rendering
  • OpenCL Support
    Có hỗ trợ nhưng AMD không công bố thông tin chi tiết

Adobe SpeedGrade CC

  • CUDA Support
    Real-time grading and finishing
  • OpenCL không hỗ trợ

Autodesk Maya

  • CUDA Support
    Increased model complexity
    Larger scenes
  • OpenCL Support
    Physics simulations

Avid Media Composer

  • CUDA Support
    Faster video effects
    Unique stereo 3D capabilities
  • OpenCL không hỗ trợ

Avid Motion Graphics

  • CUDA Support
    Real-time rendering
  • OpenCL không hỗ trợ

Blackmagic DaVinci Resolve

  • CUDA Support
    Real-time colour correction
    Real-time de-noising
  • OpenCL Support
    Real-time colour correction

Final Cut Pro X

  • OpenCL Support
    Real-time FX editing – no need to render the timeline
    Faster overall playback & timeline performance
    Faster third-party effect rendering
    No transcoding of AVCHD or other complex codecs to editable ProRes

RED REDCINE-X

  • CUDA Support
    Accelerated debayering

Decoding video upto 8K
Hỗ trợ cho 2 GPUs

  • OpenCL Support
    Có hỗ trợ nhưng AMD không công bố thông tin chi tiết
    Chỉ hỗ trợ 1 GPU

RED Giant Effects Suite

  • CUDA Support
    Faster effects
  • OpenCL không hỗ trợ

RED Giant Magic Bullet Looks

  • CUDA Support
    Faster effects
  • OpenCL không hỗ trợ

SONY Vegas Pro

  • CUDA Support
    Faster video effects and encoding
  • OpenCL Support
    Có hỗ trợ nhưng AMD không công bố thông tin chi tiết

The Foundry HIERO

  • CUDA Support
    Better interactivity
  • OpenCL không hỗ trợ

The Foundry NUKE & NUKEX

  • CUDA Support
    Faster effects
  • OpenCL không hỗ trợ

The Foundry Mari

  • CUDA Support
    Increased model complexity at interactive rates
  • OpenCL không hỗ trợ
Nhận xét bài viết
097.111.3333

© Bản quyền thuộc về nguyencongpc.vn

Facebook Messenger