インテルのみ表示可能 — GUID: mwh1391807511852
Ixiasoft
7.2.2. グローバルメモリーの手動分割
メモリーを手動で分割して、各バッファーが異なるメモリーバンクを占めるようにすることができます。
グローバルメモリーのデフォルトのバースト・インターリーブ構成では、メモリーアクセスが別のメモリーバンクよりも1つの外部メモリーバンクを優先しないようにすることで、負荷の不均衡を防ぎます。ただし、データを手動で分割することで、バッファーグループ全体のメモリー帯域幅を制御することができます。
Intel® FPGA SDK for OpenCL™オフライン・コンパイラーは、異なるメモリータイプ間でバースト・インターリーブすることはできません。特定のメモリータイプの各バンクを非インターリーブバンクとして設定するには、OpenCL™カーネルを -no-interleaving=<global_memory_type> フラグでコンパイルします。
カーネルが同じサイズの2つのバッファーをメモリーにアクセスする場合、負荷間の動的スケジューリングに関係なく、両方のメモリーバンクに同時にデータを分散できます。この最適化手順は、見かけ上のメモリー帯域幅を増加させる可能性があります。
カーネルが異種グローバル・メモリー・タイプにアクセスする場合、aocコマンドには、手動でパーティション化する各メモリー・タイプの -no-interleaving=<global_memory_type> オプションを組み込みます。
-no-interleaving=<global_memory_type> オプションの使用方法の詳細については、 インテル® FPGA SDK for OpenCL™ プログラミング・ガイドのグローバルメモリー(-no-interleaving=<global_memory_type>)のバーストインターリーブのディセーブルのセクションを参照してください。