6 điểm bởi GN⁺ 2024-02-13 | 2 bình luận | Chia sẻ qua WhatsApp

AMD âm thầm hỗ trợ một bản triển khai CUDA dựa trên ROCm và công bố mã nguồn mở

  • AMD đã nỗ lực trong nhiều năm để giúp các nhà phát triển chạy các codebase nhắm tới API CUDA của NVIDIA trên HIP/ROCm.
  • Dù có những nỗ lực này, nếu theo đuổi hiệu năng tối ưu thì đây vẫn chưa phải là một giải pháp tốt (đơn giản, tức thì và bảo đảm hiệu năng).
  • Trong 2 năm qua, AMD đã âm thầm hỗ trợ một dự án nhằm cung cấp khả năng tương thích nhị phân ở cấp thư viện, để nhiều ứng dụng NVIDIA CUDA có thể chạy trên ngăn xếp AMD ROCm mà không cần thay đổi mã nguồn.

ZLUDA: hỗ trợ CUDA cho đồ họa Intel

  • Vài năm trước, một dự án mang tên ZLUDA đã được khởi động để hỗ trợ CUDA trên đồ họa Intel, nhưng sau đó bị dừng vì lý do cá nhân.
  • Nhà phát triển ZLUDA, Andrzej Janik, đã nhận hợp đồng từ AMD vào năm 2022 để áp dụng ZLUDA cho GPU AMD bằng HIP/ROCm.
  • Trong 2 năm qua, Janik đã triển khai ZLUDA trên GPU Radeon, cho phép nhiều phần mềm CUDA chạy trên HIP/ROCm mà không cần sửa đổi.

Công bố mã nguồn mở của ZLUDA

  • AMD đã ngừng tài trợ cho dự án này trong năm nay và quyết định không phát hành nó như một sản phẩm phần mềm.
  • Tuy nhiên, khi hợp đồng kết thúc có một điều khoản cho phép Janik công bố công việc này dưới dạng mã nguồn mở.
  • Janik đã cung cấp quyền truy cập để thử nghiệm và benchmark bản triển khai ZLUDA mới này.

Giới hạn của bản triển khai ZLUDA và mã nguồn mở

  • Bản triển khai ZLUDA không an toàn 100%, chẳng hạn hỗ trợ NVIDIA OptiX chưa hoàn chỉnh và hiện chưa xử lý được phần mềm không sử dụng mã hợp ngữ PTX.
  • Trong đa số trường hợp, bản triển khai này có năng lực đáng kinh ngạc đối với nỗ lực của chỉ một nhà phát triển.
  • Mã nguồn mở được cấp phép kép theo Apache 2.0 hoặc MIT.
  • Ngôn ngữ lập trình Rust đã được sử dụng cho bản triển khai Radeon này.

Ý kiến của GN⁺

  • Bài viết này giới thiệu một dự án mà AMD đã âm thầm hỗ trợ để cung cấp khả năng tương thích CUDA, và đây có thể là một đóng góp lớn cho cộng đồng mã nguồn mở.
  • ZLUDA là một bước tiến quan trọng giúp các nhà phát triển chạy ứng dụng CUDA trên nền tảng AMD mà không cần thay đổi mã nguồn.
  • Những nỗ lực như vậy mang đến cho người dùng GPU AMD cơ hội tiếp cận một hệ sinh thái phần mềm rộng lớn hơn, và điểm thú vị là việc tận dụng một ngôn ngữ lập trình hiện đại như Rust.

2 bình luận

 
bbulbum 2024-02-13

NVIDIA biến đi!

 
GN⁺ 2024-02-13
Ý kiến trên Hacker News
  • ZLUDA được công khai do AMD ngừng tài trợ

    • Sau 2 năm phát triển, AMD quyết định rằng việc chạy ứng dụng CUDA trên GPU AMD không có tính khả thi về mặt kinh doanh.
    • Theo điều khoản hợp đồng, nếu AMD đánh giá việc phát triển tiếp là không phù hợp thì ZLUDA có thể được công khai.
  • Đề cập đến CUDA Dark API

    • CUDA Dark API gồm các hàm không được tài liệu hóa, và không rõ chính xác có bao nhiêu hàm như vậy.
    • Các ứng dụng thông thường chỉ dùng một hoặc hai hàm phổ biến nhất.
    • Vì không biết tên hay kiểu đối số của các hàm này, việc triển khai tốn rất nhiều thời gian.
    • ZLUDA tiến hành reverse engineering và triển khai theo từng trường hợp sau khi quan sát thấy ứng dụng sử dụng chúng.
  • Ý kiến ủng hộ AMD phá vỡ thế độc quyền của CUDA

    • Lớp dịch có ưu điểm là có thể ngay lập tức giúp phần cứng trở nên khả dụng hơn và thúc đẩy việc chấp nhận.
    • Tuy nhiên, cũng có rủi ro là các nhà phát triển sẽ không hỗ trợ ROCm mà chỉ dùng lớp dịch.
    • Proton+DXVK đã tạo ảnh hưởng tích cực cho gaming trên Linux, nhưng để khai thác hiệu năng GPU compute thì vẫn cần tinh chỉnh theo kiến trúc cụ thể.
    • AMD cần phải làm gì đó để có sức cạnh tranh trên thị trường.
  • Chia sẻ trải nghiệm về việc cố chạy Stable Diffusion trên GPU AMD và những khó khăn gặp phải

    • Việc cài ROCm và nhận diện GPU không có vấn đề, nhưng vì thế giới ML tập trung vào Nvidia nên việc cài PyTorch và các phần mềm tương tự rất khó khăn.
    • Cuối cùng cũng tải được model, nhưng phần mềm còn chưa tạo ra nổi một ảnh nào thì đã làm crash phiên đồ họa.
    • Trải nghiệm này khiến người đó lại muốn mua GPU Nvidia.
  • Vài năm sau khi Blender bỏ OpenCL và dùng backend CUDA, họ đã thêm backend Radeon HIP, nhưng có vẻ dùng ZLUDA + backend CUDA lại hơi nhanh hơn backend Radeon HIP.

  • Việc AMD ngừng tài trợ cho dự án này có vẻ là một quyết định khó hiểu.

    • CUDA-on-ROCm có thể phá thế độc quyền của NVIDIA và đóng vai trò kiềm chế các thay đổi mà NVIDIA áp lên CUDA.
    • Nếu không phải số 1 trên thị trường, thì để cạnh tranh bằng giá trị thực, cần theo chuẩn de facto và đồng thời tạo ra, tuân theo các chuẩn thực sự mở.
  • Câu hỏi liên quan đến tin Nvidia đã lách kiểm tra driver mang giấy phép GPL của kernel

    • Có tin rằng ở kernel 6.6, nếu Nvidia không sửa thì driver sẽ bị chặn, nhưng không thấy phản hồi nào từ Nvidia.
    • Hiện người viết đang dùng kernel 6.7.4 và có thông tin gây nhầm lẫn về việc Nvidia đã sửa vấn đề hay việc chặn đã bị hoãn.
  • Một bài trên Phoronix giới thiệu hướng dẫn dành cho những ai muốn tự biên dịch trực tiếp stack ROCm/HIP của AMD.

  • ROCm được giải thích rõ hơn trên GitHub thay vì trong tài liệu chính thức, điều này nhấn mạnh tầm quan trọng của branding như một trong những lý do AMD mất sức cạnh tranh trên thị trường.

  • Có ý kiến cho rằng AMD nên phân bổ thêm nhiều đội ngũ hơn cho dự án này.