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