SYCL* FPGA コンパイルの種別

SYCL* はアクセラレーター全般をサポートします。インテル® oneAPI DPC++/C++ コンパイラーの FPGA サポートパッケージは、インテル® oneAPI DPC++/C++ コンパイラーにFPGA コードの開発を支援するため、FPGA 固有のサポートを提供します。ここでは、インテル® oneAPI ベース・ツールキットがサポートするするさまざまな FPGA コンパイル手順について説明します。

FPGA コンパイルの実践的なレッスンについては、GitHub の FPGA コンパイルサンプル (英語) を確認してください。

以下の表に、FPGA コンパイルの要約を示します:

表 6. 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 で生成された構造の可視化情報。

  • パフォーマンスと予期されるパフォーマンスのボトルネックに関する情報。

  • リソースの利用状況を推測。

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*)』 (英語) を参照してください。