Trong optimization guide of Beignet, an open source implementation of OpenCL targeting Intel GPUsLàm thế nào để tận dụng tối đa SIMD trong OpenCL?
làm việc nhóm Kích thước nên lớn hơn 16 và là bội số của 16.
Như hai làn đường SIMD có thể trên Gen 8 hoặc 16. Để không lãng phí SIMD làn xe, chúng ta cần tuân theo quy tắc này.
Cũng đề cập trong Compute Architecture of Intel Processor Graphics Gen7.5:
Đối với sản phẩm Gen7.5 dựa, mỗi EU có bảy đề với tổng số 28 Kbytes file thanh ghi mục đích chung (GRF).
...
Về kiến trúc tính toán Gen7.5, hầu hết các mô hình lập trình SPMD dụng này sinh mã phong cách và thực hiện xử lý EU. Có hiệu lực, mỗi cá thể hạt nhân SPMD xuất hiện để thực thi serially và độc lập trong làn SIMD riêng của mình.
Trong thực tế, mỗi chuỗi thực hiện số lượng phiên bản hạt nhân SIMD-Chiều rộng> đồng thời. Như vậy cho một biên dịch SIMD-16 của một tính toán hạt nhân, nó có thể cho SIMD-16 x 7 đề = 112 trường hợp kernel được thực hiện đồng thời trên một EU duy nhất. Tương tự, đối với SIMD-32 x 7 luồng = 224 phiên bản hạt nhân thực hiện đồng thời trên một đơn EU.
Nếu tôi hiểu chính xác, sử dụng SIMD-16 x 7 threads = 112 kernel instances
làm ví dụ, để chạy 224 chủ đề trên một EU, kích thước nhóm công việc cần là 16. Sau đó trình biên dịch OpenCL sẽ gấp 16 phiên bản kernel thành 16 luồng SIMD thread, và làm điều này 7 lần trên 7 nhóm làm việc, và chạy chúng trên một EU duy nhất?
Câu hỏi 1: Tôi có đúng cho đến đây không?
Tuy nhiên OpenCL spec cũng cung cấp các loại dữ liệu vectơ. Vì vậy, nó khả thi để tận dụng tối đa các nguồn tài nguyên máy tính SIMD-16 trong một EU bằng cách lập trình SIMD thông thường (như trong NEON và SSE).
Câu hỏi 2: Nếu trường hợp này xảy ra, sử dụng loại dữ liệu vector-16 đã sử dụng rõ ràng tài nguyên SIMD-16, do đó loại bỏ giới hạn ít nhất 16 mục cho mỗi nhóm làm việc. Đây có phải là trường hợp không?
Câu hỏi 3: Nếu tất cả ở trên là đúng sự thật, sau đó làm thế nào để tiếp cận hai so sánh với nhau: 1) 112 bài gấp vào 7 SIMD-16 chủ đề bởi trình biên dịch OpenCL; 2) 7 chuỗi gốc được mã hóa để sử dụng rõ ràng loại dữ liệu vector-16 và các hoạt động SIMD-16?