文章 ID: 000073897 內容類型: 疑難排解 最近查看日期: 2019 年 01 月 23 日

如果迴圈計數超過分配的通道數,為什麼在 OpenCL™ 內核編譯期間會發生堆疊轉儲?

環境

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

    如果在 OpenCL™ 編譯期間,如果迴圈包含對索引通道的寫入,並且迴圈計數超過分配的通道數,則可能會發生堆疊轉儲。請參閱下面的示例代碼。

    通道無符號字元my_channel[16] __attribute__((深度(1024)));
    字元資料[32];

    ...
    for (unsigned char i = 0; i < 32; i ) {
    write_channel_intel(my_channel[i], data[i]);

    }

    解決方法

    確保環路計數永遠不會超過分配的通道數。

    #define num_channels 32

    通道無符號字元my_channel[num_channels] __attribute__((深度(1024)));
    字元資料[num_channels];

    ...
    for (unsigned char i = 0; i < num_channels; i ) {
    write_channel_intel(my_channel[i], data[i]);

    }

    此問題已從 Intel® FPGA SDK for OpenCL™ 編譯器版本 19.1 開始修復。

    相關產品

    本文章適用於 1 產品

    Intel® 可程式裝置

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