インテル® FPGA SDK for OpenCL* を利用して OpenCL カーネル・プログラムを記述する際に、動的インデックスを必要とする配列を宣言する場合、レジスタとブロック RAM どちらで実装されますか?
OpenCL
カテゴリ:OpenCL*
ツール:-
デバイス:Arria® V
変数をレジスタで実装するか、ブロック RAM で構成するかは Altera Offline Compiler (AOC) がコンパイル時に決定します。
レジスタで実装する事でシングル・サイクルでデータ・アクセスが可能なため性能面で利点がありますが、通常 AOC は行列の要素に変数でアクセスするコードにおいてはその行列変数をブロック RAM で実装します。
これをレジスタで実装させるには、AOC がコンパイル時(回路生成時)にアクセスが確定的である必要があり、その場合に限り、AOC はその行列の変数をレジスタとして実装します。
参考情報
https://www.altera.com/en_US/pdfs/literature/hb/opencl-sdk/aocl_programming_guide.pdf
(Inferring a Register で検索してください。)