Đừng ngạc nhiên nếu bạn không biết opencl là gì hoặc gpgpu là gì, vì đó là những thuật ngữ được sử dụng bởi cạc đồ họa cho phần cứng và phần mềm. Bài viết này sẽ cung cấp giải thích cơ bản về các thuật ngữ trên và ứng dụng của chúng.
1. Sự hiểu biết chính xác về gpgpu là gì?
Như chúng ta đã biết, gpu (graphics processing unit) là bộ xử lý đồ họa chuyên xử lý dữ liệu hình ảnh, video… Thông thường, gpu phối hợp với cpu (bộ xử lý trung tâm) để xử lý, tính toán dữ liệu hình ảnh và xuất ra màn hình . Tuy nhiên, sự hỗ trợ này chỉ là một chiều, nghĩa là chỉ có CPU tính toán và trả kết quả về GPU xử lý ảnh chứ không có chiều ngược lại.
gpgpu cần thiết để cpu và gpu giao tiếp với nhau
Vì vậy, nếu gpu muốn trả kết quả về cpu, nó cần có sự hỗ trợ của gpgpu (viết tắt của tính toán mục đích chung trên đơn vị xử lý đồ họa). Có thể hiểu rằng để gpu và cpu có thể giao tiếp với nhau thì chúng ta cần có sự tồn tại của gpgpu.
Nếu nó chỉ dành cho trò chơi, bạn không cần phải lo lắng về gpgpu. Nhưng nếu bạn có nhiều hơn 1 gpu, thì gpus cần thêm thiết bị để 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à bắt buộc nếu bạn muốn kết xuất trên máy xay. Sau đó cpu sẽ tính toán và trả kết quả về gpu, gpu xử lý dữ liệu hình ảnh và trả kết quả về cpu. Lúc này gpu sẽ hoạt động độc lập với nhau mà không cần sli hay crossfirex cho dù bạn có nhiều hơn 1 gpu.
2. opencl là gì? Cuda là gì?
gpgpu là cầu nối giữa gpu và cpu để giao tiếp với nhau. Để gpgpu hoạt động, chúng tôi cần một khung phần mềm có tên là opencl và cuda.
Mở là gì? (Open Computing Language) là một framework mã nguồn mở dành cho card đồ họa amd.
Một số điều về opencl:
- Giấy phép: giấy phép đặc tả opencl
- Ổn định: 3.0 / 27 tháng 4 năm 2020; 17 ngày trước
- Nhà phát triển: nhóm khronos
- OS: android (tùy thuộc vào nhà cung cấp), freebsd, linux, macos, microsoft windows
- Nền tảng: kiến trúc cánh tay, tế bào, x86-32, bộ vi xử lý ibm power, x86-64
- Ngôn ngữ lập trình: c++, c
- Bản phát hành ổn định: 3.2 / ngày 17 tháng 9 năm 2010
- Nhà phát triển: tập đoàn nvidia
- 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? (hoặc cuda core?): CUDA là công cụ điện toán trong GPU (Bộ xử lý đồ họa) của NVIDIA. Card đồ họa do nvidia sản xuất hỗ trợ cả opencl và cuda. Sự hỗ trợ của nvidia cho opencl không tốt bằng amd trước đây, nhưng thế hệ mới thì tốt hơn nhiều.
CUDA là một kiến trúc điện toán song song do nvidia phát triển. Tóm lại, cuda là công cụ tính toán trong nvidia gpu, nhưng các 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
Vài điều về cuda:
open cl và cuda là 2 framework phổ biến nhất trên thế giới
3.Ưu điểm và nhược điểm của open cl và cuda là gì?
Sự khác biệt chính giữa cuda và opencl là cuda là một khung độc quyền do nvidia sản xuất, trong khi opencl là mã nguồn mở. Mỗi framework đều có ưu và 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 cho cuda
Nếu ứng dụng bạn chọn hỗ trợ cả hai khung, hãy sử dụng cuda để có kết quả hoạt động tốt hơn. Lý do là nvidia có hỗ trợ đặc biệt cho các nhà cung cấp sử dụng khả năng tăng tốc cuda, vì vậy việc tích hợp luôn tốt.
Ví dụ, chúng tôi thấy rằng Adobe cc hỗ trợ cả cuda và opencl, và cuda sẽ nhanh hơn và có nhiều chức năng hơn. Bạn xem Premiere pro cs6 nếu không có cuda thì chỉ xem được phần mềm thuần cpu based. Một nhân viên Adobe đã nhận xét trên diễn đàn gia súc sáng tạo rằng cuda tốt hơn opencl trong hầu hết các trường hợp.
Chúng ta có thể dễ dàng thấy một ví dụ trong redcine-x. Nếu bật opencl thì chỉ dùng được 1 gpu. Nhưng khi kích hoạt cuda thì 2 gpu dùng được cho gpgpu.
Gần đây, gpu nvidia có thể giải mã video 8k bằng phiên bản trình điều khiển studio nvidia. Rõ ràng cuda luôn hoạt động vì nó là độc quyền của nvidia và nhà sản xuất đã dành rất nhiều thời gian để hỗ trợ và tích hợp nó vào các ứng dụng.
Nhược điểm của cuda là nó không dễ dàng được chấp nhận bởi các ứng dụng như opencl (vì nó là mã nguồn mở). Tuy nhiên, cuda được hỗ trợ bởi nhiều ứng dụng và vẫn đang phát triển. Từ đây, có thể rút ra nguyên tắc sau: nếu ứng dụng của bạn hỗ trợ cuda, hãy sử dụng nvidia, bất kể ứng dụng đó có hỗ trợ opencl hay không.
3.2 cho opencl
opencl là một khung gpgpu mã nguồn mở. Nếu ứng dụng hỗ trợ cả hai khung, chúng tôi khuyên bạn nên sử dụng cuda. Khi một ứng dụng chỉ hỗ trợ opencl, hãy bình tĩnh vì bạn không có lựa chọn nào khác.
Ví dụ: final cut pro x chỉ hỗ trợ open cl, card đồ họa amd opencl luôn được khuyến nghị. Mặc dù opencl không được tích hợp chặt chẽ như cuda, nhưng nó vẫn mang lại 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 sử dụng gpgpu. cạc đồ họa nvidia cũng có thể sử dụng opencl, nhưng lưu ý rằng nó sẽ không hiệu quả bằng cạc đồ họa amd.
Vì vậy, nếu ứng dụng của bạn chỉ hỗ trợ opencl mà không hỗ trợ cuda, như final cut pro x, thì bạn nên mua gpu amd opencl cho hệ thống của mình.
4. Kết luận
Nếu bạn chỉ chơi game thì không cần gpu mạnh. Nếu bạn có nhiều hơn 1 gpu, bạn phải kết 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ông cụ khai thác bitcoin có thể được hiển thị. Tuy nhiên, nếu bạn không muốn gặp phải tình trạng thắt cổ chai, bạn cần có một cpu mạnh mẽ.
Việc chọn amd hay nvidia phụ thuộc vào phần mềm bạn sử dụng. Nếu phần mềm của bạn chỉ hỗ trợ opencl thì nên chọn amd. Nếu phần mềm của bạn hỗ trợ cả hai, hãy chọn nvidia. Nếu kết xuất với chu kỳ máy xay, hãy chọn nvidia. Nếu bạn đang kết xuất bằng luxcorerender hoặc radeon prorender, bạn nên chọn amd.
Bạn cũng có thể xem thêm video so sánh cuda vs opencl tại đây cái nào hỗ trợ ứng dụng máy tính tốt nhất:
5. Khả năng tương thích của một số phần mềm với opencl/cuda
Lõi cuda là gì? Và phần mềm tương thích với opencl/cuda
#1 adobe photoshop cc
cuda hỗ trợ 30 hiệu ứng trong công cụ đồ họa thủy ngân
hỗ trợ opencl không được chỉ định
#2 adobe after effect cc
cuda hỗ trợ hỗ trợ đa gpu dò tia 3d
hỗ trợ opencl không được chỉ định
#3 Adobe Premiere pro cc
cuda hỗ trợ công cụ phát lại thủy ngân để chỉnh sửa video theo thời gian thực và kết xuất nhanh
hỗ trợ opencl không được chỉ định
#4 adobe speedgrade cc
cuda hỗ trợ chấm điểm theo thời gian thực
#5 Autodesk Maya
cuda hỗ trợ các tình huống có mô hình phức tạp hơn
opencl hỗ trợ mô phỏng vật lý
Đồ họa chuyển động điên cuồng #6
cuda hỗ trợ kết xuất theo thời gian thực
Giải pháp davinci của Blackmagic # 7
cuda hỗ trợ hiệu chỉnh màu thời gian thực/khử nhiễu thời gian thực
opencl hỗ trợ hiệu chỉnh màu theo thời gian thực
#8 lần cắt cuối cùng chuyên nghiệp
opencl hỗ trợ chỉnh sửa fx thời gian thực – không cần hiển thị dòng thời gian / phát lại tổng thể nhanh hơn & hiệu suất dòng thời gian / hiển thị hiệu ứng bên thứ 3 nhanh hơn / không cần chuyển mã avchd hoặc các codec phức tạp khác sang prores có thể chỉnh sửa.
#9 redcine-x
cuda hỗ trợ gỡ lỗi tăng tốc / hỗ trợ 2 gpus
hỗ trợ opencl không được chỉ định / chỉ hỗ trợ 1 gpu
#10 Bộ hiệu ứng sao khổng lồ đỏ
cuda hỗ trợ các hiệu ứng nhanh hơn
#11 Sự xuất hiện của viên đạn ma thuật màu đỏ khổng lồ
cuda hỗ trợ các hiệu ứng nhanh hơn
#12 Sony Vegas Pro
cuda hỗ trợ mã hóa và hiệu ứng video nhanh hơn
hỗ trợ opencl không được chỉ định
#13 anh hùng xưởng đúc
cuda hỗ trợ tương tác tốt hơn
#14 Nuke Foundry & Nukex
cuda hỗ trợ các hiệu ứng nhanh hơn
xưởng đúc số 15
cuda hỗ trợ tăng độ phức tạp của mô hình với tốc độ tương tác.
Dành cho những người dùng máy tính chưa biết nhiều về thuật ngữ máy tính, hi vọng bài viết này sẽ giúp bạn đọc hiểu sâu hơn về các bộ phận máy tính và giải đáp được phần nào thắc mắc. Ví dụ: opencl hoặc cuda core là gì.