このセクションでは、Vitis コア開発キットおよび Vitis HLS ツール合成でのシステム最適化のために、ソース コードに追加可能な OpenCL™ 属性について説明します。
Vitis コア開発キットでは、コードをデータの動きとカーネル パフォーマンスで最適化する OpenCL 属性が提供されています。データの動きの最適化は、インターフェイス帯域幅および DDR 帯域幅の最大限に活用することにより、システム レベルのデータ スループットを最大にすることを目的として実行されます。カーネル計算最適化は、カーネル インターフェイスにデータが到達したらすぐにすべてのデータを消費できるプロセッシング ロジックを作成することを目的として実行されます。これは通常、関数のインライン展開とパイプライン処理、ループ展開、配列分割、データフローなどの手法を使用してデータパスを一致させるようにプロセッシング コードを展開することによって達成されます。
次の表では、OpenCL 属性がタイプ別にリストされています。
タイプ | 属性 |
---|---|
カーネル最適化 | |
関数のインライン展開 | |
タスク レベルのパイプライン処理 | |
パイプライン処理 | |
ループ最適化 | |
配列最適化 |
注記: 配列変数では、使用できる配列最適化属性は 1 つのみです。
|
ヒント:
Vitis コンパイラでは、
gcc
でサポートされる次のような多くの標準属性もサポートされます。- ALWAYS_INLINE
- NOINLINE
- UNROLL
- NOUNROLL