Lên đầu

Gọi miễn phí
Chat ngay

Kết quả phù hợp với từ khóa

0

So sánh OpenCL và CUDA. Cái nào hỗ trợ ứng dụng tốt nhất?

21-12-2020, 5:05 pm

Sẽ không có gì ngạc nhiên nếu như bạn không biết OpenCL là gì hay GPGPU là như thế nào, bởi đó là những từ ngữ chuyên dụng dùng trong phần cứng và phần mềm của card đồ họa (Graphic card). Bài viết này sẽ giải thích cơ bản các thuật ngữ nêu trên và ứng dụng của nó.

1. Hiểu đúng về GPGPU là gì?

Như các bạn đã biết, GPU (Graphic Processing Unit) là bộ vi xử lý đồ họa, chuyên về các dữ liệu hình ảnh, video...Thông thường, GPU bổ trợ cho CPU (Central Processing Unit) để xử lý, tính toán các dữ liệu hình ảnh và xuất trên màn hình. Tuy nhiên, việc hỗ trợ này chỉ diễn ra một chiều, nghĩa là chỉ có CPU tính toán và trả kết quả cho GPU xử lý hình ảnh chứ không có chiều ngược lại.

opencl là gì

GPGPU là cần thiết để CPU và GPU giao tiếp với nhau

Do đó để GPU trả lại kết quả cho CPU, ta cần đến sự hỗ trợ của GPGPU (viết tắt của General Purpose Computing on Graphic Processing Unit). Có thể hiểu rằng để GPU và CPU giao tiếp được với nhau ta cần đến sự xuất hiện của GPGPU.

Nếu đơn thuần để chơi game thì bạn không cần quan tâm đến GPGPU. Nhưng nếu bạn có nhiều hơn 1 GPU thì cần có thêm thiết bị gắn vào để các GPU giao tiếp với nhau. Thiết bị đó có thể là SLI do NVIDIA sản xuất hoặc CrossFireX do AMD sản xuất.

GPGPU là cần thiết nếu bạn muốn render trên Blender. Khi đó, CPU sẽ tính toán rồi trả kết quả cho GPU, GPU xử lý dữ liệu hình ảnh sau đó lại trả kết quả về CPU. Lúc này các GPU sẽ làm việc độc lập với nhau mà không cần đến SLI hay CrossFireX dù bạn có nhiều hơn 1 GPU.

2. OpenCL là gì? CUDA là gì?

GPGPU là cầu nối để GPU và CPU giao tiếp với nhau. Để GPGPU làm việc ta cần đến một software frameworks gọi là OpenCL và CUDA.

OpenCL là gì? (Open Computing Language) Là framework mã nguồn mở được sử dụng trong các graphic card của AMD.

Một vài thông tin về Open CL:

  • Giấy phép: OpenCL specification license
  • Bản phát hành ổn định: 3.0 / 27 tháng 4, 2020; 17 ngày trước
  • Nhà phát triển: Khronos Group
  • Hệ điều hành: Android (vendor dependent), FreeBSD, Linux, macOS, Microsoft Windows
  • Nền tảng: Cấu trúc ARM, Cell, x86-32, IBM POWER microprocessors, X86-64
  • Các ngôn ngữ lập trình: C++, C

CUDA là gì?(Hay CUDA core là gì?): CUDA là động cơ tính toán trong các GPU (Graphics Processing Unit - Đơn vị xử lý đồ họa) của NVIDIA. Graphic card do Nvidia sản xuất hỗ trợ cả OpenCL và CUDA. Trước đây Nvidia hỗ trợ OpenCL không bằng AMD nhưng các sản phẩm thế hệ mới thì vượt trội hơn hẳn.

CUDA là một kiến trúc tính toán song song do NVIDIA phát triển. Nói một cách ngắn gọn, CUDA là động cơ tính toán trong các GPU của NVIDIA, nhưng lập trình viên có thể sử dụng nó thông qua các ngôn ngữ lập trình phổ biến

Một vài thông tin về CUDA:

  • Phiên bản ổn định: 3.2 / 17 tháng 9 năm 2010
  • Phát triển bởi: Tập đoàn NVIDIA
  • Thể loại: GPGPU
  • Hệ điều hành: Windows 7, Windows Vista, Windows XP, Windows Server 2008, Windows Server 2003, Linux, Mac OS X

 

cuda là gì

Open CL và CUDA là 2 framework phổ biến nhất trên thế giới

3. Ưu nhược điểm của Open CL và CUDA là gì?

Điểm khác biệt chính giữa CUDA và OpenCL là CUDA là framework độc quyền do Nvidia sản xuất còn OpenCL là nguồn mở. Mỗi framework đều có những ưu nhược điểm riêng mà bạn nên cân nhắc kĩ trước khi lựa chọn.

3.1 Đối với CUDA

Nếu ứng dụng bạn chọn hỗ trợ cả 2 framework thì hãy sử dụng CUDA để có kết quả hiệu suất tốt hơn. Lý do là Nvidia hỗ trợ đặc biệt cho các nhà cung cấp sử dụng tăng tốc CUDA nên việc tích hợp luôn tốt.

Ví dụ: khi chúng ta xem Adobe CC hỗ trợ cả CUDA và OpenCL, CUDA sẽ có tốc độ nhanh hơn với nhiều tính năng hơn. Nếu xem Premiere Pro CS6, sẽ chỉ có khả năng Preview dựa trên phần mềm chạy thuần CPU nếu không có CUDA. Một nhân viên Adobe đã bình luận trên diễn đàn Creative Cow rằng trong hầu hết mọi trường hợp, CUDA đều tốt hơn OpenCL.

Chúng ta có thể dễ dàng thấy một ví dụ trong REDCINE-X. Nếu bật OpenCL thì chỉ có thể sử dụng 1 GPU. Nhưng khi CUDA được bật thì 2 GPU có thể sử dụng cho GPGPU.

Gân đây nhất, GPU của NVIDIA đã có thế giải mã video độ phân giải 8K với phiên bản Nvidia Studio Driver. Rõ ràng các chức năng của CUDA luôn mượt mà bởi nó được Nvidia sản xuất độc quyền và nhà sản xuất đã mất rất nhiều thời gian để hỗ trợ cũng như tích hợp nó vào các ứng dụng.

Nhược điểm của CUDA là không được các ứng dụng dễ dàng chấp nhận như OpenCL (vì nó là nguồn mở). Bỏ qua điều này thì CUDA vẫn được rất nhiều ứng dụng hỗ trợ và vẫn đang tiếp tục phát triển. Từ đây bạn hãy rút ra nguyên tắc như sau: Nếu ứng dụng của bạn có hỗ trợ CUDA thì hãy sử dụng Nvidia, không cần biết ứng dụng có hỗ trợ OpenCL hay không.

3.2 Đối với OpenCL

OpenCL là khung GPGPU có nguồn mở. Như chúng tôi khuyên bạn hãy dùng CUDA nếu ứng dụng hỗ trợ cả 2 framework. Còn khi ứng dụng đó chỉ hỗ trợ OpenCL thì cũng hãy vui vẻ làm quen với nó bởi bạn không còn sự lựa chọn nào khác.

Ví dụ: Final Cut Pro X chỉ hỗ trợ Open CL và card đồ họa AMD OpenCL là sản phẩm luôn được khuyên dùng. Tuy OpenCL không tích hợp chặt chẽ như CUDA, nhưng vẫn tạo ra hiệu suất đáng kể khi làm việc và tốt hơn nhiều so với việc không dùng GPGPU. Card đồ họa của Nvidia cũng có thể sử dụng OpenCL, tuy nhiên các bạn lưu ý rằng nó sẽ không đạt hiệu quả cao như card đồ họa AMD.

Bởi lý do đó nên nếu ứng dụng của bạn chỉ hỗ trợ OpenCL và không có CUDA, ví dụ như Final Cut Pro X, bạn nên sắm một GPU AMD OpenCL cho hệ thống của mình.

4. Kết luận

Nếu chỉ chơi game thì không cần GPU mạnh. Nếu có nhiều hơn 1 GPU thì phải nối SLI và CrossFireX

Nếu chỉ Render thì không cần SLI hay CrossFireX, nhưng CPU phải mạnh.

Có thể render máy đào bitcoin. Tuy nhiên cần có CPU mạnh nếu không muốn gặp tình trạng tắc nghẽn.

Việc chọn AMD hay Nvidia còn phụ thuộc vào phần mềm bạn đang sử dụng. Nếu phần mềm của bạn chỉ hỗ trợ OpenCL thì nên chọn AMD. Hãy chọn Nvidia khi phần mềm của bạn hỗ trợ cả 2. Nếu render bằng Blender Cycles thì chọn Nvidia. Còn nếu bạn render bằng LuxCoreRender hay Radeon Prorender thì nên chọn AMD.

Bạn cũng có thể xem thêm video so sách CUDA vs Opencl, cái nào hỗ trợ tốt nhất cho ứng dụng máy tính tại đây:

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

gpgpu

CUDA core là gì? Và các phần mềm tích tương thích với OpenCL/CUDA 

#1 Adobe Photoshop CC

CUDA Support 30 Effects in Mercury Graphics Engine

OpenCL Support no specifics stated

#2  Adobe After Effects CC

CUDA Support 3D ray tracing Multi GPU Support

OpenCL Support no specifics stated

#3 Adobe Premiere Pro CC

CUDA Support Mercury Playback Engine for real-time video editing & accelerated rendering

OpenCL Support no specifics stated

#4 Adobe Speedgrade CC

CUDA Support Real-time grading and finishing

#5 Autodesk Maya

CUDA Support Increased model complexity Larger scenes

OpenCL Support Physics simulations

#6 Avid Motion Graphics

CUDA Support Real-time rendering

#7 Blackmagic DaVinci Resolve

CUDA Support Real-time colour correction/ Real-time de-noising

OpenCL Support Real-time colour correction

#8 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.

#9 RED REDCINE-X

CUDA Support Accelerated debayering / Support for 2 GPUs

OpenCL Support no specifics stated/ Only supports 1 GPU

#10 RED Giant Effects Suite

CUDA Support Faster effects

#11 RED Giant Magic Bullet Looks

CUDA Support Faster effects

#12 SONY Vegas Pro

CUDA Support Faster video effects and encoding

OpenCL Support no specifics stated

#13 The Foundry HIERO

CUDA Support Better interactivity

#14 The Foundry NUKE & NUKEX

CUDA Support Faster effects

#15 The Foundry Mari

CUDA Support Increased model complexity at interactive rates.

Đối với những người dùng máy tính nhưng chưa hiểu rõ các thuật ngữ máy tính, hy vọng bài viết đã giúp bạn đọc có thêm các kiến thức chuyên sâu hơn về bộ phận máy tính và giải đáp được phần nào những thắc mắc như OpenCL là gì hay CUDA core là gì.




Hãy chia sẻ bài viết này:

WEBSITE ĐƯỢC SỞ HỮU VÀ QUẢN LÝ BỞI NGUYỄN VÕ DUY ANH
Giấy phép đăng ký kinh doanh số 0315129021 do sở Kế Hoạch và Đầu Tư Thành phố Hồ Chí Minh cấp ngày 25/6/2018

Sản phẩm đã được thêm vào giỏ hàng

Xem sản phẩm khác Tiếp tục mua hàng