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

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õ.

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

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

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.

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.

Xem thêm: AMD vs Nvidia: Hãng nào tạo GPU tốt nhất?

Adobe After Effects CC

Adobe Photoshop CC

Adobe Premiere Pro CC

Adobe SpeedGrade CC

Autodesk Maya

Avid Media Composer

Avid Motion Graphics

Blackmagic DaVinci Resolve

Final Cut Pro X

RED REDCINE-X

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

RED Giant Effects Suite

RED Giant Magic Bullet Looks

SONY Vegas Pro

The Foundry HIERO

The Foundry NUKE & NUKEX

The Foundry Mari

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

0902.675.393