PoCL 1.6, một triển khai độc lập của tiêu chuẩn OpenCL

Phiên bản mới của dự án PoCL 1.6 (Ngôn ngữ tính toán di động OpenCL) vừa được phát hành . Những điểm nổi bật của phiên bản 1.6 bao gồm khả năng tương thích với Clang/LLVM 11.0, cũng như những cải tiến về hiệu năng và chức năng CUDA, khả năng tương thích tốt hơn với PowerPC và khả năng gỡ lỗi OpenCL được nâng cao.

Đối với những người chưa quen với PoCL, đây là một triển khai mã nguồn mở, có tính di động cao (được cấp phép theo giấy phép MIT) của tiêu chuẩn OpenCL (phiên bản 1.2 với một số tính năng tương thích với phiên bản 2.0). Bên cạnh việc là một triển khai OpenCL mã nguồn mở, có tính di động cao và hỗ trợ nhiều thiết bị (thực sự không đồng nhất) , mục tiêu chính của dự án này là cải thiện khả năng tương tác giữa các thiết bị tương thích OpenCL khác nhau bằng cách tích hợp chúng vào một nền tảng duy nhất, được điều phối tập trung.

Ngoài ra, một trong những mục tiêu dài hạn chính là cải thiện khả năng di động hiệu suất của các chương trình OpenCL trên các loại thiết bị sử dụng kỹ thuật biên dịch và thời gian chạy.

Trình biên dịch nhân OpenCL dựa trên LLVM và Clang được sử dụng làm giao diện cho OpenCL C. Để cung cấp đầy đủ hiệu suất và tính di động, trình biên dịch nhân OpenCL có thể tạo ra các hàm kết hợp có thể sử dụng các tài nguyên phần cứng khác nhau để thực thi mã song song, chẳng hạn như VLIW, superscalar, SIMD, SIMT, đa lõi và đa luồng. Có hỗ trợ cho trình điều khiển ICD (Trình điều khiển máy khách có thể cài đặt). Có các phụ trợ để cung cấp công việc thông qua CPU, ASIP (TCE / TTA), GPU dựa trên kiến ​​trúc HSA và GPU NVIDIA (CUDA).

Các tính năng mới chính của PoCL 1.6

Phiên bản mới này của PoCL 1.6 nêu bật khả năng biên dịch việc triển khai này với trình điều khiển thiết bị được kích hoạt tại thời điểm biên dịch, cũng như tính khả dụng của thiết bị sẽ được xác minh khi khởi động (trước đây, các hệ thống mà PoCL được xây dựng và chạy chúng đáng lẽ phải có cùng một bộ điều khiển hỗ trợ). Đã triển khai khả năng sử dụng trình quản lý gói conda để phân phối các gói nhị phân PoCL với hỗ trợ CUDA cho các hệ thống Linux-x86_64 và Linux-ppc64le.

Một thay đổi khác nổi bật là hỗ trợ LLVM 11 cùng với các khả năng mở rộng để gỡ lỗi mã OpenCL khi sử dụng bộ điều khiển CPU.

Ngoài ra, điều đáng chú ý là việc tối ưu hóa hiệu suất của phần phụ trợ CUDA đã được thực hiện, cho phép tăng tốc đáng kể các hoạt động liên quan đến việc sử dụng bộ nhớ cục bộ (FFT, GEMM).

Các điểm chuẩn sử dụng điểm chuẩn SHOC (hiện được kiểm tra liên tục cho thấy rằng những tối ưu hóa này mang lại hiệu suất tốt hơn nhiều, đặc biệt đối với các điểm chuẩn liên quan đến bộ nhớ cục bộ như FFT và GEMM, so với một loạt tham chiếu trước đây. PoCL hiện thường đạt được hiệu suất cạnh tranh với OpenCL độc quyền của Nvidia người lái xe). Chúng tôi hoan nghênh những đóng góp để xác định và loại bỏ nguyên nhân gốc rễ của các lĩnh vực vấn đề còn lại. Chúng tôi cũng hoan nghênh những đóng góp để cải thiện phạm vi tính năng cho các tiêu chuẩn OpenCL 1.2 / 3.0.

  • Hiệu suất PoCL trong nhiều thử nghiệm hiện gần bằng trình điều khiển OpenCL độc quyền của NVIDIA.
  • Đã thêm tham số biên dịch HARDENING_ENABLE để kích hoạt các tùy chọn trình biên dịch nhằm tạo libpocl.so an toàn hơn với chi phí làm giảm hiệu suất.
  • Đã trả lại hỗ trợ cho hệ thống PowerPC 8/9, trong đó mức triển khai OpenCL khi sử dụng thiết bị pthread và CUDA tương ứng với mức CUDA trên hệ thống x86_64.
  • Đã thay đổi ABI cho hạt nhân CUDA sử dụng __ khối cục bộ. Sau khi nâng cấp, người dùng cần xóa bộ nhớ đệm pocl.
  • Hỗ trợ cho tùy chọn xây dựng SINGLE_LLVM_LIB đã bị loại bỏ, thay vào đó sử dụng STATIC_LLVM và llvm-config để xác định thư viện nào sẽ liên kết.

Cuối cùng, nếu bạn muốn biết thêm chi tiết về phiên bản mới này, bạn có thể xem thông báo gốc.

Những ai quan tâm đến việc tìm hiểu thêm về cách triển khai này có thể tham khảo trang web chính thức , nơi họ có thể tìm thấy tài liệu và các tệp có thể tải xuống.

Mã dự án được phân phối theo giấy phép MIT và công việc được hỗ trợ trên các nền tảng X86_64, MIPS32, ARM v7, AMD HSA APU và các bộ xử lý TTA chuyên dụng khác nhau với kiến ​​trúc VLIW.


Thêm vào danh sách nguồn ưu tiên trên Google.