インテルのみ表示可能 — GUID: ewa1452808486620
Ixiasoft
1. インテル® FPGA SDK for OpenCL™ の概要
2. インテル® FPGA SDK for OpenCL™オフライン・コンパイラーのカーネル・コンパイル・フロー
3. ソフトウェア、コンパイラー、カスタム・プラットフォームに関する一般的な情報の取得
4. FPGAボードの管理
5. OpenCLカーネルの構築
6. ホスト・アプリケーションの設計
7. OpenCL カーネルのコンパイル
8. OpenCLカーネルのエミュレーションとデバッグ
9. カーネルのreport.htmlファイルのレビュー
10. OpenCLカーネルのプロファイリング
11. インテル® Code Builder for OpenCL™ を使用するOpenCL™アプリケーションの開発
12. インテル® FPGA SDK for OpenCL™ のアドバンスト機能
A. OpenCL機能のサポート状況
B. インテル® FPGA SDK for OpenCL™ プロ・エディション・プログラミング・ガイドの改訂履歴
3.1. ソフトウェア・バージョンの表示 (version)
3.2. コンパイラー・バージョンの表示 (-version)
3.3. インテル FPGA SDK for OpenCL ユーティリティー・コマンド・オプション・リストの表示 (help)
3.4. インテル FPGA SDK for OpenCL オフライン・コンパイラー・コマンド・オプション・リストの表示 (引数なし、-help、-h)
3.5. 利用可能なFPGAボードとカスタム・プラットフォームのリスト表示 (-list-boardsおよび-list-board-packages)
3.6. OpenCLバイナリーのコンパイル環境の表示 (env)
5.1. カーネルの命名ガイドライン
5.2. データの処理効率を最適化するためのプログラミング手法
5.3. ローカル・メモリー・サイズへのポインターの最適化に向けたプログラミング手法
5.4. インテル® FPGA SDK for OpenCL™ チャネル拡張の実装
5.5. OpenCLパイプの実装
5.6. 任意精度での整数の実装
5.7. 条件付きコンパイルにおける定義済みプリプロセッサー・マクロの使用
5.8. __constantアドレス空間修飾子の宣言
5.9. 構造体データ型をOpenCLカーネルに引数として含める
5.10. レジスターの推論
5.11. 倍精度浮動小数点演算の有効化
5.12. 単一ワークアイテム・カーネルに向けた単一サイクル浮動小数点アキュムレーター
5.13. 整数のプロモーション規則
6.6.2.1. ホスト・アプリケーションとKhronos ICD Loader Libraryのリンク
6.6.2.2. ホスト・アプリケーションをコンパイルするためのフラグの表示 (compile-config)
6.6.2.3. OpenCLホスト・ランタイム・ライブラリーおよびMMDライブラリーへのパスの表示 (ldflags)
6.6.2.4. OpenCLホスト・ランタイム・ライブラリーおよびMMDライブラリーのリスト表示 (ldlibs)
6.6.2.5. OpenCLホスト・ランタイム・ライブラリーおよびMMDライブラリーに関する情報の表示 (link-config または linkflags)
7.1. ハードウェアのコンフィグレーション・ファイルを作成するためのカーネルのコンパイル
7.2. ハードウェアを構築せずに行うカーネルのコンパイル (-c)
7.3. ハードウェアを構築せずに行うカーネルまたはオブジェクト・ファイルのコンパイルおよびリンク (-rtl)
7.4. ヘッダーファイル位置の指定 (-I=<directory>)
7.5. インテル® FPGA SDK for OpenCL™オフライン・コンパイラーの出力ファイル名の指定 (-o <filename>)
7.6. 特定のFPGAボードとカスタム・プラットフォームに対するカーネルのコンパイル (-board=<board_name>) および (-board-package=<board_package_path>)
7.7. カーネルコンパイル時のハードウェア生成フィッティング・エラーの解決 (-high-effort)
7.8. カーネルのFmaxターゲットのスケジュール指定 (-fmax=<fmax target in MHz>)
7.9. カーネル・パラメーターを指定するためのプリプロセッサー・マクロの定義 (-D<macro_name>)
7.10. コンパイル進捗レポートの生成 (-v)
7.11. リソース推定使用率要約の画面表示 (-report)
7.12. インテル® FPGA SDK for OpenCL™オフライン・コンパイラーの警告メッセージの抑制 (-W)
7.13. インテル® FPGA SDK for OpenCL™オフライン・コンパイラーの警告メッセージのエラーメッセージへの変換 (-Werror)
7.14. コンパイラー・レポートのデバッグデータの削除および.aocxファイルのソースコードの削除 (-g0)
7.15. グローバルメモリーのバーストインターリーブの無効化 (-no-interleaving=<global_memory_type>)
7.16. グローバルメモリーのリング型相互接続の強制 (-global-ring)
7.17. グローバルメモリーへの書き込みスループット向上に向けたストアリングの複製 (-duplicate-ring)
7.18. コンスタント・メモリー・キャッシュ・サイズのコンフィグレーション (-const-cache-bytes=<N>)
7.19. 浮動小数点演算処理順序の緩和 (-fp-relaxed)
7.20. 浮動小数点演算における丸め処理の削減 (-fpc)
7.21. OpenCLコンパイルの高速化 (-fast-compile)
7.22. カーネルのインクリメンタル・コンパイル (-incremental)
7.23. メモリーの誤り訂正符号をともなうカーネルのコンパイル (-ecc)
7.24. ハードウェアのカーネル呼び出しキューの無効化 (-no-hardware-kernel-invocation-queue)
7.25. ハンドシェイク・プロトコルの変更 (-hyper-optimized-handshaking)
8.1. 高速エミュレーターの設定
8.2. エミュレーションに向けたチャネル・カーネル・コードの変更
8.3. エミュレーションに向けたカーネルのコンパイル (-march=emulator -fast-emulator)
8.4. OpenCLカーネルのエミュレーション
8.5. LinuxにおけるOpenCLカーネルのデバッグ
8.6. インテル® FPGA SDK for OpenCL™ Emulatorの制限
8.7. ハードウェアとエミュレーターの結果の不一致
8.8. 高速エミュレーターの環境変数
8.9. 高速エミュレーターでサポートされている拡張機能
8.10. 高速エミュレーターの既知の問題
8.11. レガシー・エミュレーターの使用
12.1.1. RTLモジュールとOpenCLパイプラインの理解
12.1.2. OpenCLライブラリーに向けたOpenCLヘルパー関数ファイルのパッケージ化
12.1.3. OpenCLライブラリーに向けたRTLコンポーネントのパッケージ化
12.1.4. RTLモジュールの検証
12.1.5. 複数のオブジェクト・ファイルのライブラリー・ファイルへのパッケージ化
12.1.6. OpenCLカーネルコンパイル時のOpenCLライブラリーの指定
12.1.7. シミュレーションによるOpenCLライブラリーのデバッグ (プレビュー)
12.1.8. シンプルな関数で動作するOpenCLライブラリーの使用 (例1)
12.1.9. 外部メモリーと動作するOpenCLライブラリーの使用 (例2)
12.1.10. OpenCLライブラリーのコマンドライン・オプション
12.1.1.1. インテルFPGA SDK for OpenCLパイプラインのアプローチの概要
12.1.1.2. RTLモジュールのインテル FPGA SDK for OpenCLパイプラインへの統合
12.1.1.3. ストールのないRTL
12.1.1.4. RTLモジュール・インターフェイス
12.1.1.5. Avalon Streaming (Avalon-ST) インターフェイス
12.1.1.6. RTLリセットおよびクロック信号
12.1.1.7. RTLモジュールのXML構文
12.1.1.8. RTLモジュールと外部メモリーの通信
12.1.1.9. RTLモジュールに入るスレッドの順序
12.1.1.10. RTLモジュールのOpenCL Cモデル
12.1.1.11. RTLモジュールとパーシャル・リコンフィグレーションにおける潜在的な非互換性
インテルのみ表示可能 — GUID: ewa1452808486620
Ixiasoft
12.1.3.1. インテル® FPGA SDK for OpenCL™ ライブラリー機能に対するRTLサポートの制約と制限
インテル® FPGA SDK for OpenCL™ は、OpenCLライブラリーにおけるRTLモジュールの使用を、いくつかの制約と制限をともないサポートしています。
RTLモジュールを作成する際は、次の制約内で動作させることを確認してください。
- RTLモジュールは、単一入力のAvalon®-STインターフェイスを使用する必要があります。つまり、readyとvalidロジックの単一ペアが、すべての入力を制御しなければなりません。
必要なAvalon-STポートを提供し、RTLモジュールをストールのないモジュールとして宣言するオプションもあります。この場合、 インテル® FPGA SDK for OpenCL™オフライン・コンパイラーはモジュールに向けてラッパーを作成するため、適切なストール動作を実装する必要はありません。構文と使用法に関する詳細は、RTLモジュールのXML構文、およびシンプルな関数で動作するOpenCLライブラリーの使用 (例1) を参照ください。
注: RTLモジュールが内部状態を持つ場合は、ivalid信号を適切に処理する必要があります。詳しくは、ストールのないRTLを参照ください。 - RTLモジュールは、カーネルのクロック周波数にかかわらず正確に動作する必要があります。
- データの入力および出力サイズは、charの8ビットからlong16の1024ビットまでの有効なOpenCLデータ型と一致する必要があります。
例えばRTLモジュールで24ビットの値を使用する場合、入力が32ビットになるよう宣言し、SDKライブラリーのヘッダー・ファイルで関数シグニチャーを宣言しuintデータ型を受け取るようにします。その後、RTLモジュールで32ビットの入力を受け入れ、上位8ビットを破棄します。
- RTLモジュールは、外部I/O信号に接続することができません。入出力信号はすべて、OpenCL カーネルから発行される必要があります。
- RTLモジュールには、clockポート、resetnポート、Avalon-ST入力および出力ポート (ivalid、ovalid、iready、oready) が必要です。ここで指定されている通りに名前を付けてください。
- 外部メモリーと通信する RTLモジュールには、対応するカスタム・プラットフォーム・パラメーターに一致するAvalonメモリーマップド (Avalon-MM) ポートのパラメーターが必要です。オフライン・コンパイラーは、幅またはバーストの調整を行いません。
- 外部メモリーと通信するRTLモジュールは、次のように動作する必要があります。
- バースト境界を越えてバーストしないこと。
- クロックサイクルごとに要求を行い、アービトレーション・ロジックを独占しハードウェアをストールさせないこと。RTLモジュールは定期的に要求を一時停止し、他のロードまたはストアユニットが動作を実行できるようにする必要があります。
- RTLモジュールは、独立したOpenCLカーネルとして動作することはできません。RTLモジュールはヘルパー関数にしかなれず、カーネルのコンパイル時にOpenCLカーネルに統合されます。
- RTLモジュールのインスタンス化に対応する関数呼び出しはすべて、他のインスタンス化から完全に独立しています。ハードウェアの共有はありません。
- カーネルコード (kernelとしてマークされた関数) は、.aoclibライブラリー・ファイルに組み込まないでください。カーネルコードをライブラリー・ファイルに組み込むと、オフライン・コンパイラーはエラーメッセージを発行します。ヘルパー関数をライブラリー・ファイルに組み込むことは可能です。
- RTLコンポーネントは、すべての入力を同時に受け取る必要があります。単一のivalid入力は、すべての入力が有効なデータを含んでいることを意味します。
- SDKはI/O RTLモジュールをサポートしません。
- RTLモジュールのパラメーターは、OpenCLカーネル・ソース・ファイルではなく、 <RTL module description file name>.xml仕様ファイルでのみ設定できます。同じRTLモジュールを複数のパラメーターで使用するには、個別のFUNCTIONタグを各パラメーターの組み合わせに作成します。
SDKのRTLモジュールのライブラリー機能に対するサポートには現在、次の制限があります。
- RTLモジュールへのデータ入力は、OpenCLカーネルコードを介した値でのみ渡すことができます。参照渡し、構造体、またはチャネルを介しRTLモジュールにデータ入力を渡さないでください。チャネルデータの場合は、まずチャネルからデータを抽出し、抽出したスカラーデータを RTLモジュールに渡します。
注: 参照渡しまたは構造体によってデータ入力をRTLモジュールに渡すと、オフライン・コンパイラーで致命的なエラーが発生します。
- デバッガー (LinuxのGDB、など) は、エミュレーション中にライブラリー関数にステップインできません。さらに、最適化レポートおよびエリアレポートは、ライブラリー関数の横にコード行番号を含みません。
- RTLモジュールのソースファイル名は、 インテル® FPGA SDK for OpenCL™オフライン・コンパイラー IPファイル名と競合することはできません。RTLモジュールのソースファイルとオフライン・コンパイラーのIPファイルはどちらも、 <kernel file name>/system/synthesis/submodulesディレクトリーに格納されます。名前が競合すると、ディレクトリーにある既存のオフライン・コンパイラーIPファイルが、RTLモジュールのソースファイルに上書きされます。
- SDKは.qipファイルをサポートしません。ネスト化された.qipファイルを手動で解析し、RTLファイルのフラットリストを作成する必要があります。
- 単独では正しく動作する一方で、OpenCLカーネルの一部としては正しく動作しない RTLモジュールをデバッグすることは非常に困難です。 <RTL module description file name>.xmlファイルのATTRIBUTES要素にあるパラメーターをすべて再度確認してください。
- オフライン・コンパイラーのエリア見積りツールはすべて、RTLモジュールのエリアが0であると仮定しています。SDKは現在、RTLモジュールのエリアモデルを指定する機能をサポートしていません。
- RTLモジュールは、カーネルクロックと同位相でありカーネルクロック周波数の2倍の、2xクロックにアクセスできません。