文章 ID: 000073934 內容類型: 疑難排解 最近查看日期: 2019 年 10 月 02 日

為什麼 OpenCL™ 編譯器的 Intel® FPGA SDK 會掛斷且永不終止包含執行緒依賴控制流程或通道操作的 NDRange 核心?

環境

  • Intel® Quartus® Prime Pro Edition 軟體
  • 適用於 OpenCL™ 的 Intel® FPGA SDK
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    描述

    適用于 OpenCL™ 編譯器的 Intel® FPGA SDK 可保證 NDRange 核心中的對帳單會依執行緒識別碼的方式執行。為了確保在包含執行緒依賴控制流程的程式中達成保證,編譯器線上程依賴控制流路徑的連接點上插入了重新訂購的障礙。這類障礙的設定出現錯誤,使得運算無法在障礙處失效,也不可能有進展。

    通路作業也可能造成此停滯。

    下方為「執行緒依賴控制流程建構」的範例:

       
    取得全球執行緒 ID

    int id = get_global_id (0);

    確保我們不會越界

    如果 (id < n)

    c[id] = [id] b[id];

     

    在此處,如果報表是取決於執行緒的控制流結構,即它執行的取決於哪個執行緒。

    解決方法

    重新寫入 NDRange 核心,以不包含任何通道作業或視線程而依賴的控制流構造。

     

    此問題排定在 OpenCL 軟體的 Intel® FPGA SDK 的未來版本中修復。

    相關產品

    本文章適用於 1 產品

    Intel® 可程式裝置

    這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。