記事 ID: 000073879 コンテンツタイプ: トラブルシューティング 最終改訂日: 2021/08/27

推定リソースが低いにもかかわらず、OpenCL カーネルのコンパイルでハードウェアの生成に失敗するのはなぜですか?

環境

    インテル® Quartus® Prime 開発ソフトウェア・プロ・エディション
    インテル® Quartus® Prime 開発ソフトウェア・スタンダード・エディション
    インテル® FPGA SDK for OpenCL™ プロ・エディション
BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細

OpenCL™ カーネルでハードウェアの生成に失敗した場合、推定リソースが少ないにもかかわらず、このエラーはグローバルメモリーにアクセスするループの過剰なアンアリングが原因である可能性があります。

グローバル・メモリーにアクセスするループは、BSP のメモリー・インターフェイスよりも読み取りまたは書き込みがグローバルメモリーの方が広い場合に、アンキャスを使用しないでください。 これにより、競合、配線輻輳が発生し、コンパイルエラーが発生する可能性があります。

解決方法

外部メモリー・インターフェイスの幅は、OpenCL™ BSP の board_spec.xml ファイルにあります。 以下は、Arria 10 GX 開発キット BSP のboard_spec.xml の例です。(a10_ref)

」width=「512」maxburst=「16」 アドレス=「0x00000000」サイズ=「0x80000000」レイテンシー=「240」/>

< / global_mem>


ご覧のように、この BSP の外部メモリー・インターフェイスの幅は 512 ビットです。(width="512")したがって、ループがグローバルな 32 ビット整数にアクセスする場合、ループは 16 以上アンアリングしないでください。(512 / 32 = 16)

元のループ数が 16 のマルチカウントでない場合:

1. 新しいループ数を 16 のマルチプルに切り上げる。

2. ループ内のオンチップメモリーを、新しいループ数に対応できるほど大きくします。

3. 条件を使用して、新しいループカウントが元のループカウントを超えた場合の読み取りまたは書き込みを防止します

関連製品

本記事の適用対象: 1 製品

インテル® プログラマブル・デバイス

1

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。