GPU NVIDIA Nhận Hỗ trợ SYCL sau khi Codeplay góp phần phát triển chuẩn DPC ++

Sau khi nhận được sự hỗ trợ từ các công ty hàng đầu như Intel, Xilinx, Renesas và Imagination Technologies, SYCL (phát âm là ‘liềm’), các nhà phát triển sử dụng GPU NVIDIA giờ đây cũng có thể thu được lợi ích. Codeplay, tổ chức luôn đóng góp tích cực cho Cộng đồng SYCL, hiện đã đạt đến đỉnh cao sự phát triển tiên tiến của DPC ++ (Data Parallel C ++), giúp tái chế và tái sử dụng mã trên một số nền tảng phần cứng. Kết quả là ComputeCpp, việc triển khai SYCL của chính Codeplay.

Phiên bản mới nhất của ComputeCpp cung cấp hỗ trợ thử nghiệm cho GPU NVIDIA sử dụng OpenCL và PTX của NVIDIA

Năm ngoái, Intel đã thực hiện một bước quyết định để thúc đẩy SYCL và thậm chí bắt đầu làm việc trên Tiêu chuẩn oneAPI. OneAPI bao gồm DPC ++ (triển khai SYCL với các tiện ích mở rộng) cho CPU, GPU và FPGA của Intel. Phong trào này nhanh chóng trở nên khá lớn và đạt được động lực sau khi hỗ trợ cho SYCL đến từ Xilinx, Renesas và Imagination Technologies. Nói một cách đơn giản, các nhà phát triển phần mềm hiện có thể nhắm mục tiêu nhiều loại thiết bị sử dụng SYCL.

ComputeCpp cung cấp hỗ trợ thử nghiệm cho GPU NVIDIA sử dụng OpenCL và NVIDIA’s PTX. Nhưng DPC ++ (triển khai SYCL của Intel) mang đến cơ hội thêm hỗ trợ đầy đủ cho GPU NVIDIA được tích hợp vào trình biên dịch LLVM mà không cần thông qua OpenCL. Codeplay thông báo rằng họ đang tìm nguồn mở trong giai đoạn thử nghiệm ban đầu của việc triển khai, cho phép các nhà phát triển SYCL nhắm mục tiêu các GPU NVIDIA. Cơ sở mã cho việc triển khai này vẫn ở trongmột ngã ba riêng biệt từ cả dự án trình biên dịch LLVM chính và nhánh DPC ++. Tổ chức nói thêm rằng họ dự định làm việc với Intel để có được hỗ trợ GPU NVIDIA được thêm vào trình biên dịch Intel / LLVM ngược dòng.

Làm thế nào các nhà phát triển có thể hưởng lợi từ hỗ trợ SYCL cho GPU NVIDIA?

Dự án này cho phép các nhà phát triển nhắm mục tiêu các GPU NVIDIA sử dụng mã SYCL mà không cần phải đi qua lớp OpenCL trong hệ thống. Nói cách khác, chỉ với GPU NVIDIA, các nhà phát triển có thể chạy DPC ++ trên hệ thống của họ để biên dịch các ứng dụng SYCL. Hơn nữa, bất kỳ Ứng dụng CUDA hiện có nào cũng có thể được chuyển dần sang SYCL bằng cách sử dụng hỗ trợ CUDA, sau đó chạy ứng dụng đó trên nền tảng không có CUDA. Điều này rõ ràng tiết kiệm rất nhiều thời gian và nỗ lực lặp lại.

Codeplay đã cung cấp hướng dẫn về tệp README của dự án giải thích cách sử dụng NVIDIA back-end cho DPC ++. Các nhà phát triển được yêu cầu sử dụng một số cờ khi biên dịch và một số mã để thiết lập bộ chọn thiết bị của họ để đảm bảo thời gian chạy biết thiết bị nào cần nhắm mục tiêu. Đặc biệt, phần “Xây dựng chuỗi công cụ SYCL với sự hỗ trợ cho NVIDIA CUDA”Và các tùy chọn trình biên dịch Clang cóhướng dẫn cụ thể.

Codeplay xác nhận họ đã chạy thành công dự án với Ubuntu 18.04 bằng CUDA 10.1 trên GPU Titan RTX (khả năng tính toán 7.5). Nhóm đảm bảo rằng nó cũng sẽ hoạt động trên các phiên bản Linux khác với bất kỳ GPU NVIDIA nào tương thích với SM 5.0 trở lên. Tuy nhiên, ứng dụng SYCL đã biên dịch sẽ chỉ có thể nhắm mục tiêu CUDA hoặc OpenCL, không phải cả hai cùng một lúc.

Nhóm cũng lưu ý rằng bản phát hành ban đầu của dự án chưa được tối ưu hóa, vì vậy hiệu suất có thể không tối ưu trong mọi trường hợp. Nói cách khác, các nhà phát triển sẽ cần phải triển khai giống nhau và tự xác định các cải tiến tốc độ, nếu có. Điều này là do việc tạo mã không áp dụng bất kỳ lượt tối ưu hóa cụ thể nào. Hơn nữa, việc triển khai CUDA của đặc tả SYCL trong Giao diện plugin không sử dụng bất kỳ tính năng CUDA nâng cao nào.

Codeplay đã chỉ ra rằng việc tăng cường khả năng tương thích và chức năng vẫn là ưu tiên hàng đầu của họ. Họ chỉ ra rằng trọng tâm hiện tại là triển khai càng nhiều chức năng càng tốt để các nhà phát triển có thể chạy một loạt các ứng dụng SYCL trên nền tảng GPU NVIDIA. Việc tối ưu hóa hiệu suất sẽ được thực hiện sau này với sự trợ giúp của các thành viên trong cộng đồng.

Facebook Twitter Google Plus Pinterest