SYCL* FPGA コンパイルの種別
SYCL* はアクセラレーター全般をサポートします。インテル® oneAPI DPC++/C++ コンパイラーの FPGA サポートパッケージは、インテル® oneAPI DPC++/C++ コンパイラーにFPGA コードの開発を支援するため、FPGA 固有のサポートを提供します。ここでは、インテル® oneAPI ベース・ツールキットがサポートするするさまざまな FPGA コンパイル手順について説明します。
FPGA コンパイルの実践的なレッスンについては、GitHub の FPGA コンパイルサンプル (英語) を確認してください。
以下の表に、FPGA コンパイルの要約を示します:
デバイス・イメージ・タイプ |
コンパイル時間 |
説明 |
|---|---|---|
FPGA エミュレーター |
数秒 |
FPGA デバイスコードは CPU 向けにコンパイルされます。OpenCL* ソフトウェア向けインテル® FPGA エミュレーション・プラットフォームを使用して、SYCL* コードが正しく機能することを確認します。 |
FPGA 最適化サポート |
数分 |
FPGA デバイスコードは部分的にハードウェア向けにコンパイルされます。コンパイラーは、FPGA で生成される構造とパフォーマンスのボトルネックを特定し、リソース利用率を推測して最適化レポートを生成します。コンパイルで FPGA デバイスファミリーまたは製品番号をターゲットにする場合、このステージでコード内の IP コンポーネントの RTL ファイルも作成されます。その後、インテル® Quartus® Prime 開発ソフトウェアを使用して、IP コンポーネントをさらに大きな設計に統合できます。 |
FPGA エミュレーター |
数分 |
FPGA デバイスコードは CPU 向けにコンパイルされます。Questa* - インテル® FPGA エディション・シミュレーター を使用して、コードをデバッグします。 |
FPGA ハードウェア・イメージ |
数時間 |
ターゲットの FPGA プラットフォームで実行する FPGA ビットストリームを生成します。コンパイルで FPGA デバイスファミリーまたは製品番号をターゲットにする場合、このステージでコード内の IP コンポーネントの RTL ファイルも作成されます。その後、インテル® Quartus® Prime 開発ソフトウェアを使用して、IP コンポーネントをさらに大きな設計に統合できます。 |
一般的な FPGA 開発ワークフローでは、エミュレーション、最適化レポート、およびシミュレーション・ステージを繰り返して、それぞれのステージからもたらされるフォードバックを反映してコードを改良します。可能な限りエミュレーションと FPGA 最適化レポートを活用することを推奨します。
ヒント
FPGA エミュレーションまたは FPGA シミュレーション用にコンパイルし、FPGA 最適化レポートを生成するには、インテル® oneAPI DPC++/C++ コンパイラー用の FPGA サポートパッケージ (英語) が必要です。
FPGA ハードウェアでコンパイルするには、Quartus® Prime ソフトウェア (英語) もインストールする必要があります。ボードをターゲットにするには、ボード用の BSP も必要です。
詳細については、インテル® oneAPI ツールキット・インストール・ガイド (英語) とインテル® FPGA 開発手順 (英語) のウェブページを参照してください。
また、RTL IP コアを生成するには、インテル® oneAPI DPC++/C++ コンパイラーの FPGA サポートパッケージ (英語) のみが必要です。ただし、IP コアをシミュレーションしたり、ハードウェア設計に統合するには、Quartus® Prime 開発ソフトウェア・プロ・エディションが必要です。
FPGA エミュレーター
FPGA エミュレーター(OpenCL* ソフトウェア向けインテル® FPGA エミュレーション・プラットフォーム)は、コードの正当性を検証する最速の手法です。CPU 上で SYCL* デバイスコードを実行します。FPGA エミュレーターは、SYCL* ホストデバイスに似ていますが、ホストデバイスとは異なり、FPGA パイプや fpga_reg など FPGA 拡張機能がサポートされます。詳細については、『インテル® oneAPI DPC++ FPGA 最適化ガイド』 のパイプ拡張 (英語) とカーネル変数 (英語) を参照してください。
次に FPGA エミュレーターを使用する際に覚えておくべき重要事項を示します。
パフォーマンスは典型的なものではない。
FPGA エミュレーターは、FPGA デバイスの動作そのものを再現するものではないため、パフォーマンスの評価に使用しないでください。例えば、FPGA で 100 倍のパフォーマンス向上をもたらす最適化は、エミュレーターのパフォーマンスには影響しないか、多少の増減を示すことがあります。
未定義の動作は異なる可能性があります。
FPGA エミュレーターと FPGA ハードウェア向けにコンパイルしたコードの結果が異なる場合、コードに未定義の動作が含まれる可能性があります。未定義の動作は言語仕様では指定されておらず、ターゲットごとに振る舞いが異なる可能性があります。
カーネルのエミュレーションの詳細については、『インテル® oneAPI FPGA ハンドブック』の「カーネルのエミュレート」 (英語) を参照してください。
FPGA 最適化サポート
完全な FPGA コンパイルは次のステージで行われ、最適化レポートは両方のステージの後に出力されます:
ステージ |
説明 |
最適化レポートの情報 |
|---|---|---|
FPGA 初期イメージ (コンパイルには数分かかります) |
SYCL* デバイスコードは最適化され、Verilog レジスター転送レベル (RTL) (FPGA の低レベルの設計入力言語) で指定される FPGA 設計に変換されます。これにより、実行形式ファイではない FPGA 初期イメージが生成されます。 このステージでは静的な最適化レポートが生成されます。 |
これには、コンパイラーが SYCL* デバイスコードから FPGA 設計に変換した手法に関する重要な情報が含まれています。レポートには次の情報が含まれます。
FPGA の最適化レポートについては、『インテル® oneAPI FPGA ハンドブック』 の「FPGA 最適化レポートを確認」(英語) を参照してください。 |
FPGA ハードウェア・イメージ (コンパイルには数時間かかります) |
設計回路のトポロジーを指定する Verilog RTL は、インテル® Quartus® Prime Pro エディションソフトウェア によって FPGA のプリミティブ・ハードウェア・リソースにマッピングされます。結果は、FPGA ハードウェア・バイナリー (ビットストリーム) です。 |
リソースと fMAX 数に関する正確な情報が含まれます。レポートの解析に関する詳細は、『インテル® oneAPI FPGA ハンドブック』の「設計の解析」 (英語) を参照してください。 FPGA ハードウェア・イメージについては、『インテル oneAPI DPC++/C++ コンパイラーの FPGA ハンドブック (英語) を参照してください。 |
コンパイルで FPGA デバイスまたは製品番号をターゲットにする場合、このステージでコード内の IP コンポーネントの RTL ファイルも作成されます。その後、インテル® Quartus® Prime 開発ソフトウェアを使用して、IP コンポーネントをさらに大きな設計に統合できます。
FPGA シミュレーター
シミュレーション手順では、Questa* - インテル® FPGA エディション・ソフトウェアを使用して、合成されたカーネルの正確な動作をシミュレートできます。エミュレーションと同様に、ターゲットの FPGA ボードが装着されていないシステムでシミュレーションを実行できます。シミュレーターは、エミュレーションよりも正確にカーネルをモデル化できますが、エミュレーターよりもかなり低速です。
シミュレーション手順は、サイクル精度とビット精度を目的とし、カーネルのデータパスの動作と浮動小数点データタイプの操作結果を正確にモデル化します。ただし、シミュレーションでは、可変レイテンシー・メモリーやその他の外部インターフェイスを正確にモデル化することはできません。シミュレーションは FPGA ハードウェアやエミュレーターよりもかなり低速であるため、小規模な入力データセットで設計をシミュレーションすることを推奨します。
シミュレーション手順をプロファイルと組み合わせて利用することで、設計に関する追加情報を取得できます。プロファイルの詳細については、『インテル® oneAPI FPGAハンドブック』の「DPC++ のインテル® FPGA ダイナミック・プロファイラー」 (英語) を参照してください。
注
GNU Project Debugger (GDB*)、Microsoft* Visual Studio* または通常のソフトウェア・デバッガーを使用して、シミュレーション向けにコンパイルされたカーネルコードをデバッグすることはできません。
- シミュレーションの詳細については、『インテル® oneAPI FPGA ハンドブック』の「シミュレーションによるカーネルの評価」(英語) を参照してください。
FPGA ハードウェア
FPGA ハードウェアのコンパイルには、Quartus® Prime ソフトウェアを別途インストールする必要があります。これは、次のいずれかをターゲットにする FPGA ハードウェア・イメージの完全なコンパイルステージです:
Altera® FPGA デバイスファミリー
特定の Altera® FPGA デバイスの製品番号
サポートされる BSP を持つカスタムボード
ターゲットの詳細については、「インテル® oneAPI DPC++/C++ コンパイラーのシステム要件」(英語) を参照してください。インテル® FPGA PAC またはカスタムボードの使用に関する詳細は、『インテル® oneAPI FPGA ハンドブック』の「FPGA ボードとボード・サポート・パッケージ (BSP)」(英語) の節と、『インテル® oneAPI ツールキット・インストール・ガイド (Linux*)』 (英語) を参照してください。