インテルのみ表示可能 — GUID: eiy1538388140224
Ixiasoft
4.1.1. HLS AFUコンテナー
HLS AFUコンテナーは、HLSコンパイラーによって生成されたコンポーネントといくつかのサポートコンポーネントを含むPlatform Designerシステムです。
コンポーネント | 変更内容 |
---|---|
mm_bridge_0 (Pipeline bridge) |
HLSコンポーネントのスレーブ・インターフェイスとAFU IDスレーブが同じスレーブ・インターフェイスを共有できるようにします。 |
afu_id_avmm_slave_0 Avalon-MM Slave |
UUIDを含むAFUのDFHを格納します。 DFHをホストに公開します( アクセラレーター・ファンクショナル・ユニット(AFU)開発者ガイドを参照 ) |
floatingPointVectorReduce_float | HLSコンポーネント。このコンポーネントは浮動小数点数のベクトルを消費し、すべての要素を一緒に追加することでそれを削減します。 |
read_bridge (Pipeline bridge) |
HLSコンポーネントの読み出し専用Avalon-MMマスター・インターフェイスをパイプライン処理します。 |
write_response_bridge_irq_0 (Write response bridge) |
HLS Avalon-MMマスター・インターフェイスは、ホストメモリーからの書き込み確認をサポートしていません。このカスタム・コンポーネントは、デザインがすべての未処理のホスト・メモリー・ライトを確認するまで、HLSコンポーネントの割り込み信号を防ぎます。このコンポーネントは、すべての結果をホストメモリーに書き込むまで、デザインがホストに割り込まないことを保証します。このコンポーネントを使用しない場合、デザインがホストメモリーへのすべてのライトをコミットする前に、HLS done割り込みがホスト・アプリケーションに到達する可能性があります。 |
図 14. HLS AFUコンテナーのブロック図
HLSコンポーネントは、単純なベクトル削減を実行します。また、入力ベクトルをホストメモリーにコピーし、各ベクトル値を1.0fずつ増やします。
図 15. 簡略化されたHLSコンポーネント このコードには、削減を実行する基本的なソースコードが含まれています。サイクルごとに単一の32ビット浮動小数点値を読み出し、合計を累積します。
1. component 2. float floatingPointVectorReduce_basic(float *masterRead, 3. float *masterWrite, 4. int size) 5. { 6. float sum = 0.0f; 7. for (int idx = 0; idx < size; idx++) 8. { 9. float readVal = masterRead[idx]; 10. sum += readVal; 11. 12. masterWrite[idx] = readVal + 1.0f; 13. } 14. 15. return sum; 16. }
これは有効なHLSソースコードですが、AFUデザインには不十分です。インテルのアクセラレーション・スタックには、AFUがホストメモリーにアクセスする方法とホストシステムがホストメモリーを認識する方法を規定する特定の要件があります。幸いなことに、HLSは柔軟性が高いため、これらの制約を満たすようにコンポーネントを再構成できます。要件は次のとおりです。
- コントロールとパラメーターは、HLSがデフォルトで使用するコンジット・インターフェイスではなく、Avalon-MM I/Oスレーブ・インターフェイスを介して公開する必要があります。
- AFUには、システムメモリーにアクセスするための2つのAvalon-MMマスター・インターフェイスがあります。 1つのAvalon-MMマスターを読み出し専用として構成します。もう1つは書き込み専用です。
- 両方のAvalon-MMマスター・インターフェイスは512ビット幅でなければなりません。
- 両方のAvalon-MMマスター・インターフェイスは48ビットアドレスを使用する必要があります。