適用于 OpenCL™ 編譯器的 Intel® FPGA SDK 可保證 NDRange 核心中的對帳單會依執行緒識別碼的方式執行。為了確保在包含執行緒依賴控制流程的程式中達成保證,編譯器線上程依賴控制流路徑的連接點上插入了重新訂購的障礙。這類障礙的設定出現錯誤,使得運算無法在障礙處失效,也不可能有進展。
通路作業也可能造成此停滯。
下方為「執行緒依賴控制流程建構」的範例:
取得全球執行緒 ID
int id = get_global_id (0);
確保我們不會越界
如果 (id < n)
c[id] = [id] b[id];
在此處,如果報表是取決於執行緒的控制流結構,即它執行的取決於哪個執行緒。
重新寫入 NDRange 核心,以不包含任何通道作業或視線程而依賴的控制流構造。
此問題排定在 OpenCL 軟體的 Intel® FPGA SDK 的未來版本中修復。