GPGPU là gì? so sánh OpenCL của AMD với CUDA của Nvidia

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 biết này sẽ giải thích sơ bộ về các thuật ngữ đó và ứng dụng của nó trong phần mềm Blender

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 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 có sự cải thiện rõ rệt

Ứng dụng trong Blender

OpenCL hay CUDA được sử dụng nó còn phụ thuộc vào phần mềm được viết hỗ trợ nền tảng nào. Có những phần mềm chỉ hộ trợ 1 trong 2 trong khi đó có những phần mềm hỗ trợ cả 2 (Tham khảo các phần mềm hỗ trợ ở cuối bài viết).
Ban đầu Cycles trong Blender được viết để sử dụng CUDA cho việc render. Từ phiên bản 2.79, Cycles đã hỗ trợ cả OpenCL


Bảng so sánh render sử dụng OpenCL của Nvidia và AMD

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 để render thì hãy chọn Nvidia. Ngược lại nếu bạn render bằng LuxCoreRender hay Radeon ProRender 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
    No specifics stated

Adobe Photoshop CC

  • CUDA Support
    30 effects in Mercury Graphics Engine
  • OpenCL Support
    No specifics stated

Adobe Premiere Pro CC

  • CUDA Support
    Mercury Playback Engine for real-time video editing & accelerated rendering
  • OpenCL Support
    No specifics stated

Adobe SpeedGrade CC

  • CUDA Support
    Real-time grading and finishing

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

Avid Motion Graphics

  • CUDA Support
    Real-time rendering

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
    Support for 2 GPUs
  • OpenCL Support
    No specifics stated
    Only supports 1 GPU

RED Giant Effects Suite

  • CUDA Support
    Faster effects

RED Giant Magic Bullet Looks

  • CUDA Support
    Faster effects

SONY Vegas Pro

  • CUDA Support
    Faster video effects and encoding
  • OpenCL Support
    No specifics stated

The Foundry HIERO

  • CUDA Support
    Better interactivity

The Foundry NUKE & NUKEX

  • CUDA Support
    Faster effects

The Foundry Mari

  • CUDA Support
    Increased model complexity at interactive rates

Tham khảo: create.pro

https://docs.blender.org/manual/en/dev/render/cycles/gpu_rendering.html

6 Likes

Bài viết rất bổ ích. Giờ em mới hiểu chính xác cái GPU nó làm gì trong cái laptop của em :smile:

1 Like

GPU ngày càng quan trọng trong render, nó giúp quá trình render nhanh hơn và render bằng gpu vẫn tạo ra các sản phẩm chất lượng

1 Like