Làm thế nào để biên dịch hạt nhân OpenCL thành bitstream mà sau này tôi có thể tải trực tiếp mà không cần biên dịch lại? Nền tảng của tôi là máy AMD có cả GPU APU và GPU rời rạc của AMD. Máy đang chạy bộ SDK AMD APP mới nhất hỗ trợ OpenCL 1.2.Làm thế nào để biên dịch hạt nhân OpenCL thành bitstream?
Trả lời
1) biên dịch hạt nhân thành chương trình từ nguồn có lệnh gọi clCreateProgamWithSource API. Lỗi trình biên dịch được truy xuất bằng lệnh gọi hàm clGetProgramBuildInfo API.
2) sử dụng cuộc gọi API clGetProgramInfo để nhận CL_PROGRAM_BINARY_SIZES. Đây là các kích thước của các chương trình nhị phân. 2a) Phân bổ bộ nhớ cho các tệp nhị phân bằng các kích thước từ 2)
3) sử dụng lệnh gọi clGetProgramInfo API để nhận CL_PROGRAM_BINARIES. Điều này nhận được chương trình nhị phân.
4) Một nhị phân có thể được chuyển thành đối tượng chương trình OpenCL với lệnh gọi API clCreateProgamWithBinary.
Binaries một thiết bị cụ thể để nhị phân được biên dịch trên một thiết bị cụ thể sẽ không chạy trên một thiết bị khác. Đối với một cá thể quy trình đơn lẻ, khi bạn có môi trường (nền tảng, thiết bị, ngữ cảnh và hàng đợi), bạn chỉ có thể sử dụng lại đối tượng Kernel OpenCL và thực hiện lại lệnh đó bằng một cuộc gọi API clEnqueueNDRange khác.
Câu trả lời tuyệt vời và chi tiết! Cảm ơn bạn rất nhiều! – gpunerd