May 16, 2020 Ngoc Quynh

OpenCL và CUDA: Ứng dụng nào hỗ trợ tốt hơn?

Hôm nay, iRender sẽ cung cấp cho bạn một cái nhìn tổng quan ngắn gọn về GPGPU là gì và xem cách AMD, Nvidia, OpenCL & CUDA phối hợp với nhau như nào. Cuối cùng, chúng tôi sẽ giải thích ứng dụng nào hoạt động tốt nhất với thương hiệu card đồ họa nào, cung cấp danh sách tổng quan ngắn gọn về hỗ trợ CUDA / OpenCL trong nhiều ứng dụng chuyên nghiệp.

Giới thiệu về GPGPU

Nếu bạn chưa từng nghe nói về GPGPU hoặc tăng tốc GPU, đừng lo lắng, hầu hết mọi người đều vậy, chúng tôi có thể giải thích cho bạn! Tuy nhiên, OpenCLCUDA là những thuật ngữ đang ngày càng trở nên phổ biến trong lĩnh vực điện toán chuyên nghiệp. OpenCL và CUDA là các software frameworks cho phép GPGPU tăng tốc xử lý trong các ứng dụng được hỗ trợ tương ứng. Tức là, để can thiệp vào quá trình tính toán đó thì GPGPU phải thông qua CUDA hay OpenCL. 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.

Vậy chính xác thì GPGPU là gì?

Chúng ta đã biết, GPU (graphics processing unit) là đơn vị xử lý đồ họa, thường chỉ xử lý đồ họa máy tính, để hỗ trợ thực hiện các tác vụ thường được xử lý bởi CPU (central processing unit – đơn vị xử lý trung tâm).

Trong điện toán truyền thống, dữ liệu có thể được truyền từ CPU sang GPU, GPU sau đó kết xuất dữ liệu, tính toán hình ảnh xuất lên màn hình (ví dụ chơi game mượt hơn) nhưng GPU tự nó không thể truyền lại thông tin đã xử lý cho CPU. Để GPU trả lại kết quả cho CPU, cần có sự hỗ trợ của GPGPU (General Purpose Computing on Graphics Processing Units). Có thể nói: GPGPU chính là thành phần để GPU giao tiếp với CPU. GPGPU cho phép thông tin được truyền qua lại cả hai hướng, từ CPU sang GPU và ngược lại, từ GPU sang CPU. Việc xử lý hai chiều như vậy có thể cải thiện hiệu quả trong rất nhiều nhiệm vụ liên quan đến hình ảnh và video. Nếu ứng dụng bạn sử dụng hỗ trợ OpenCL hoặc CUDA, thông thường bạn sẽ thấy hiệu suất tăng rất lớn khi sử dụng phần cứng hỗ trợ GPGPU framework có liên quan.

Nếu để chơi game thì không cần quan tâm tới GPGPU, CPU tính toán rồi truyền 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, chính là SLI của Nvidia hay CrossFireX của AMD.

Trong trường hợp render trên VRay, Octane, Redshift, Blender,… thì cần có GPGPU, CPU tính toán rồi truyền 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

Vậy bây giờ bạn đã biết GPGPU là gì, nhưng làm thế nào để sử dụng OpenCL và CUDA được hợp lý nhất ? OpenCL hiện là GPGPU framework mã nguồn mở hàng đầu. CUDA, mặt khác, là GPGPU framework độc quyền hàng đầu.

Vị trí của Nvidia & AMD trong GPGPU?

May mắn thay, AMD & Nvidia đã khiến cuộc tranh luận trở nên rõ ràng hơn một chút so với ban đầu. Để khỏi phải tranh đấu, AMD hỗ trợ OpenCLNvidia hỗ trợ CUDA framework độc quyền của riêng họ. Vậy, bạn có thể yêu cầu ứng dụng chính hỗ trợ framework nào? Vấn đề này thì lại phức tạp hơn một chút. Các ứng dụng khác nhau hỗ trợ các GPGPU frameworks khác nhau, trên thực tế, một số hỗ trợ cả OpenCL và CUDA và một số thì không.

Đương nhiên, câu hỏi tiếp theo của bạn sẽ là “ứng dụng mà tôi lựa chọn có hỗ trợ CUDA hoặc OpenCL không?” Hoặc “vậy, nếu ứng dụng của tôi hỗ trợ cả hai, tôi nên dùng cái nào?” Đừng lo lắng, chúng tôi sẽ giúp bạn.

Cần lưu ý rằng các card Nvidia thực sự hỗ trợ OpenCL cũng như CUDA, chúng chỉ không tạo ra hiệu quả tương đương với các GPU AMD khi nói đến tính toán OpenCL.

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

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

Sự đồng thuận chung là 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ụ: như 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 frameworks có thể cung cấp năng lượng. Còn đối với 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 diễn đàn chủ đề 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.

Rõ ràng, vì CUDA là một framework độc quyền, nó đòi hỏi sự hỗ trợ của Nvidia, và thời gian để 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 luôn tuyệt vời. Tuy nhiên, CUDA không dễ dàng chấp nhận các ứng dụng như OpenCL (bởi vì OpenCL 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 mà danh sách các ứng dụng này vẫn còn đang 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 dùng card 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ì?

Bây giờ chúng tôi sẽ nói về OpenCL – framework GPGPU 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 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à lựa chọn duy nhất của bạn, hãy chọn 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 dùng card AMD OpenCL cho hệ thống của họ nếu họ sử dụng ứng dụng chỉnh sửa video phổ biến. Trên toàn bộ tích hợp OpenCL thường không chặt chẽ được như CUDA, nhưng OpenCL vẫn sẽ tạo ra hiệu suất tăng đáng kể khi sử dụng và tốt hơn nhiều so với việc không sử dụng GPGPU.

Như đã nói trước đó, các card Nvidia cũng sử dụng framework OpenCL, nhưng chúng không phát triển hiệu quả như các card AMD (tuy nhiên, chúng đang bắt kịp rất nhanh). 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.

Một số ứng dụng của tôi dựa trên CUDA và một số chỉ cần hỗ trợ OpenCL. Tôi nên làm gì?

Nếu các ứng dụng bạn đang dùng hỗ trợ cho cả CUDA và OpenCL, chúng tôi khuyên bạn nên sử dụng card Nvidia. Với thiết lập Nvidia, bạn sẽ tận dụng tối đa các ứng dụng hỗ trợ CUDA của mình trong khi vẫn có khả năng OpenCL tốt trong các ứng dụng không phải CUDA.

Ví dụ, GPU Nvidia GTX 980 đạt 2600 điểm trong LuxMark Sala (Điểm chuẩn OpenCL), cao hơn AMD R9 280X (đạt 2400 điểm). Nếu bạn sử dụng Adobe CC hoặc các ứng dụng được hỗ trợ CUDA khác, cũng như phần mềm độc quyền OpenCL như Final Cut Pro X, Nvidia GTX 780 và 980, đều là những giải pháp vững chắc.

Ứng dụng nào hỗ trợ GPGPU Framework nào?

Chúng tôi sẽ liệt kê ngắn gọn một số ứng dụng có hỗ trợ GPGPU, chúng hoạt động với framework nào. Xin lưu ý rằng danh sách này không hẳn là toàn diện, nó chỉ chứa các ứng dụng chính và thông tin có thể truy cập dễ dàng. Nvidia cung cấp danh sách các ứng dụng tăng tốc CUDA của riêng mình. Đối với OpenCL có thể khó hơn một chút để tìm ra ứng dụng nào hỗ trợ framework nào, Google thường là phương pháp tốt nhất.

·         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 cho real-time video editing & tăng tốc 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ợ

Kết luận

Khá rõ ràng rằng GPGPU là một hướng đi đúng cho tất cả người dùng chuyên nghiệp. Khi được hỗ trợ, nó mang lại lợi ích hiệu suất rất lớn cho các ứng dụng, đặc biệt là khi chúng xử lý hình ảnh và video.

Hiện tại CUDA và OpenCL là các GPGPU framework hàng đầu. CUDA là một Nvidia framework độc quyền, nó không được hỗ trợ trong nhiều ứng dụng như OpenCL (tuy nhiên hỗ trợ vẫn còn khá rộng), nhưng được tích hợp hỗ trợ Nvidia chất lượng hàng đầu đảm bảo hiệu năng tuyệt vời. OpenCL là mã nguồn mở và được hỗ trợ trong nhiều ứng dụng hơn CUDA. Tuy nhiên, hỗ trợ thường không rõ ràng và hiện tại nó không cung cấp các mức tăng hiệu suất tương tự mà CUDA có.

Theo quan điểm của chúng tôi, GPU Nvidia (đặc biệt là các GPU sau này) thường là lựa chọn tốt nhất cho người dùng, được tích hợp hỗ trợ CUDA cũng như hiệu năng OpenCL mạnh mẽ khi CUDA không được hỗ trợ. Tình huống duy nhất mà chúng tôi muốn giới thiệu GPU AMD cho các chuyên gia là khi họ độc quyền sử dụng các ứng dụng hỗ trợ OpenCL và không có tùy chọn CUDA.

Tóm lại: 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 có 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.

Còn, nếu bạn vẫn còn phân vân chưa biết nên chọn lựa như nào. Vậy thì hay đừng ngần ngại đăng ký tài khoản tại đây để sử dụng dịch vụ của iRender, nhanh chóng, đơn giản và hiệu quả!

Nguồn: Lược dịch bởi iRender
, , , , , , , , , , , , , , , , , , , ,
Contact

INTEGRATIONS

Autodesk Maya
Autodesk 3DS Max
Blender
Cinema 4D
Houdini
Maxwell
Nvidia Iray
Lumion
KeyShot
UE4
Twinmotion
Redshift
Octane
And many more…

iRENDER TEAM

MONDAY – SUNDAY
9:00 AM – 8:00 PM
Hotline: 0916 806 116
Zalo: 0916 806 116
Skype: iRender Support
Email: [email protected]
CÔNG TY CỔ PHẦN CÔNG NGHỆ IRENDER VIỆT NAM
MST: 0108787752
Office: 5/82 Dịch Vọng Hậu, Cầu Giấy, Hà Nội.

Contact
0916806116