SDK Intel® FPGA của trình biên dịch OpenCL™ cung cấp một bảo đảm rằng các tuyên bố trong hạt nhân NDRange được thực hiện bởi các luồng theo thứ tự mã định danh luồng của chúng. Để đảm bảo bảo được đáp ứng trong các chương trình có chứa luồng điều khiển phụ thuộc vào luồng, trình biên dịch chèn một rào cản đặt hàng lại tại điểm kết hợp của đường dẫn luồng điều khiển phụ thuộc vào luồng. Một lỗi trong cấu hình của các rào cản như vậy khiến cho quá trình tính toán bị đình trệ tại rào cản mà không có khả năng tiến triển về phía trước.
Các hoạt động của kênh cũng có thể gây ảnh hướng đến vấn đề này.
Dưới đây là một ví dụ về "cấu trúc luồng điều khiển phụ thuộc vào luồng":
Nhận ID luồng toàn cầu
id int = get_global_id(0);
Hãy chắc chắn rằng chúng tôi không đi hết giới hạn
nếu (id < n)
c[id] = a[id] b[id];
Ở đây, tuyên bố nếu tuyên bố là cấu trúc luồng điều khiển phụ thuộc vào luồng, nghĩa là những gì nó phụ thuộc vào luồng nào thực thi nó.
Ghi lại nhân NDRange để không chứa bất kỳ hoạt động kênh hoặc cấu tạo luồng điều khiển phụ thuộc vào luồng nào.
Sự cố này được lên lịch sẽ được khắc phục trong phiên bản tương lai của Intel® FPGA SDK cho phần mềm OpenCL.