インテルのみ表示可能 — GUID: fnc1476214465223
Ixiasoft
2.4.1. ソース別エリア分析
ソースレポートによるエリア分析では、ソースコードの各行がエリアの使用にどのように影響するかを近似して示しています。 このビューでは、エリア情報が階層的に表示されます。
4つのループを含むOpenCLカーネルの例:
1 // ND-Range kernel with unrolled loops 2 __attribute ((reqd_work_group_size(1024,1,1))) 3 kernel void t (global int * out, int N) { 4 int i = get_global_id(0); 5 int j = 1; 6 for (int k = 0; k < 4; k++) { 7 #pragma unroll 8 for (int n = 0; n < 4; n++) { 9 j += out[k+n]; 10 } 11 } 12 out[i] = j; 13 14 int m = 0; 15 #pragma unroll 1 16 for (int k = 0; k < N; k++) { 17 m += out[k/3]; 18 } 19 #pragma unroll 20 for (int k = 0; k < 6; k++) { 21 m += out[k]; 22 } 23 #pragma unroll 2 24 for (int k = 0; k < 6; k++) { 25 m += out[k]; 26 } 27 out[2] = m; 28 }
以下のエリアレポートには、カーネルシステム、ボード・インターフェイス、およびグローバル・インターコネクトのエリア使用量がリストされています。これらの要素はシステムレベルのIPで、デザインがターゲットとするカスタム・プラットフォームまたはリファレンス・プラットフォームに依存します。カーネルtはカーネルシステムの階層内にあり、ソースコードが始まる場所です。このレポートは、カーネルtの下でソースコード内で宣言されたすべての変数を指定し、残りのエリア情報を行番号でソートします。
図 24. 例示的なエリアレポートのソースビュー

この例では、コードラインj + = out [k + n]のコードライン(9行目)では、 Intel® FPGA SDK for OpenCL™オフライン・コンパイラー追加を実行してグローバルメモリーからデータをロードするのに必要なエリアに基づいて推定エリア使用量を計算します。コードラインout [i] = j (12行目)の場合、オフライン・コンパイラーはポインター値を計算するために必要なエリアに基づいて推定エリア使用量を計算し、グローバルメモリーに格納し直します。