SDS プラグマ
SDSoC での最適化
このセクションでは、システム最適化を支援するための SDSoC™ システム コンパイラ sdscc および sds++ のプラグマについて説明します。
SDSoC システム コンパイラは、ベース プラットフォームをターゲットとし、Vivado® 高位合成 (HLS) ツールを起動して合成可能な C/C++ 関数をプログラマブル ロジックにコンパイルします。SDSoC IDE または sdscc/sds++ コマンド ライン オプションを使用して、ソース プログラムからハードウェアで実行する関数を選択し、アクセラレータおよびシステム クロックを指定して、データ転送のプロパティを設定します。
SDSoC 環境では、通信と計算のバランスが取られるようにハードウェア関数およびハードウェア関数への呼び出しを構成し、システム コンパイラに指示を与えるプラグマをソース コードに挿入することにより、システム生成プロセスを制御します。SDSoC コンパイラでは、データ転送に最適なシステム ポートが自動的に選択されますが、プラグマを使用してこの選択を変更することもできます。また、ハードウェア関数引数に異なるデータ ムーバーを選択するプラグマを指定したり、ハードウェア関数から転送またはハードウェア関数に転送されるデータ要素数をプラグマを使用して制御したりできます。
SDSoC 環境専用のすべてのプラグマには最初に #pragma SDS が付いており、C/C++ ソース コードの関数宣言の直前に挿入するか、特定の関数呼び出しを最適化するために関数呼び出しサイトに挿入する必要があります。
#pragma SDS data access_pattern(in_a:SEQENTIAL, out_b:SEQUENTIAL)
void f1(int in_a[20], int out_b[20]);
SDS プラグマには、次のタイプがあります。
| タイプ | プラグマ |
|---|---|
| データ アクセス パターン | |
| データ転送サイズ | |
| メモリの属性 | |
| データ ムーバーのタイプ | |
| 外部メモリへの SDSoC プラットフォーム インターフェイス | |
| ハードウェア バッファーのワード数 | |
| 関数の非同期実行 | |
| リソース バインドの指定 | |
| ハードウェア/ソフトウェアのトレース |