Intel® FPGA SDK for OpenCL™: ベスト・プラクティス・ガイド

ID 683521
日付 12/08/2017
Public
ドキュメント目次

2.7.6. プライベート変数ストレージのエリア・レポート・メッセージ

エリアレポートは、 OpenCL™デザインに基づいたプライベート・メモリーの実装に関する情報を提供します。 Single Work-Itemカーネルの場合、 Intel® FPGA SDK for OpenCL™オフライン・コンパイラー変数のタイプに応じて、プライベート・メモリーを別々に実装します。オフライン・コンパイラーは、さまざまな構成(たとえば、プレーンレジスター、シフトレジスター、バレルシフタ)のレジスターにスカラーと小さな配列を実装します。オフライン・コンパイラーはブロックRAMに大きな配列を実装します。
表 4.  エリア・レポート・メッセージに関する追加情報
メッセージ 説明
オンチップブロックRAMを用いたプライベート・メモリーの実現
オンチップのブロックRAMに実装されたプライベート・メモリー。 ブロックRAM実装は、NDRangeカーネルのローカルメモリーと同様のシステムを作成します。
オンチップブロックROMを用いたプライベート・メモリーの実現
オンチップブロックROMを使用するたびに、オフライン・コンパイラーは同じROMの別のインスタンスを作成します。オフライン・コンパイラーがオンチップブロックROMに実装するプライベート変数の明示的な注釈はありません。
レジスターを用いたプライベート・メモリーの実装
次のサイズのレジスターを使用して実装されています。

- <X> registers of width <Y> and depth <Z> [(depth was increased by a factor of <N> due to a loop initiation interval of <M>.)]

- ...

オフライン・コンパイラーがプライベート変数をレジスターに実装することを報告します。オフライン・コンパイラーは、多くのレジスターにプライベート変数を実装することがあります。このメッセージは、特定の幅と深さを持つレジスターのリストを提供します。
シフトレジスターを用いたプライベート・メモリーの実装
<N>またはより少ないタップポイントを持つシフトレジスターとして実装されています。これは非常に効率的なストレージタイプです。

次のサイズのレジスターを使用して実装されています。

- <X> register(s) of width <Y> and depth <Z>

- ...

オフライン・コンパイラーがシフトレジスターにプライベート変数を実装することを報告します。このメッセージは、シフトレジスターの特定の幅と深さのリストを提供します。
オフライン・コンパイラーは、タップポイントに応じて、単一の配列を複数の小さなシフトレジスターに分割することがあります。
注: オフライン・コンパイラーはタップポイントの数を過大評価する可能性があります。
レジスター付きバレルシフタを用いたプライベート・メモリーの実装
動的インデックス作成によるレジスター付きバレルシフタとして実装されています。これは高オーバーヘッド・ストレージ・タイプです。可能であれば、コンパイル時の既知の索引付けに変更します。この変数にアクセスするためのエリアコストは、アクセスが発生する行に表示されます。

次のサイズのレジスターを使用して実装されています。

- <X> registers of width <Y> and depth <Z> [(depth was increased by a factor of <N> due to a loop initiation interval of <M>.)]

- ...

オフライン・コンパイラーは、ダイナミック・インデックスのためにレジスターを持つバレルシフターにプライベート変数を実装することを報告します。

レポートのこの行には、プライベート変数の全エリア使用量が指定されていません。レポートには、変数にアクセスする行に関する追加のエリア使用情報が表示されます。

注:
  • エリアレポートは、実装によっては、プライベート・メモリーを宣言または使用するコードラインにメモリー情報を注釈します。
  • オフライン・コンパイラーがオンチップブロックRAMにプライベート・メモリーを実装すると、エリアレポートは、関連するローカルメモリー固有のメッセージをプライベート・メモリーシステムに表示します。