OpenCL 属性

OpenCL での最適化

このセクションでは、SDAccel™ コンパイラ xoccSDSoC™ システム コンパイラ sdsccsds++、および Vivado® HLS 合成でのシステム最適化のためにソース コードに追加可能な OpenCL™ 属性について説明します。

SDx™ では、コードをデータの動きとカーネル パフォーマンスで最適化する OpenCL 属性が提供されています。データの動きの最適化は、インターフェイス帯域幅および DDR 帯域幅の最大限に活用することにより、システム レベルのデータ スループットを最大にすることを目的として実行されます。カーネル計算最適化は、カーネル インターフェイスにデータが到達したらすぐにすべてのデータを消費できるプロセッシング ロジックを作成することを目的としています。これは通常、関数のインライン展開とパイプライン処理、ループ展開、配列分割、データフローなどの手法を使用してデータパスを一致させるようにプロセッシング コードを展開することによって達成されます。

OpenCL 属性には、次のタイプがあります。
表 1. OpenCL 属性 (タイプ別)
type 属性
カーネル サイズ
関数のインライン展開
タスク レベルのパイプライン処理
パイプライン処理
ループ展開
配列最適化
注記: 配列変数では、使用できる配列最適化属性は 1 つのみです。
ヒント: SDAccel および SDSoC コンパイラでは、always_inlinenoinlineunrollnounroll など、gcc でサポートされる多くの標準属性もサポートされます。