AMD Versal™ AI Engine で DSP の演算能力を解き放つ

Versal AI エンジンは、高性能なデジタル信号処理 (DSP) を可能にします。

次世代 DSP アプリケーションの開発に取り組むお客様は膨大な演算能力を必要としますが、従来の FPGA アーキテクチャでは効率的に実装できるものではありません。FIR、FFT、GeMM などの高い演算処理能力を必要とする DSP アプリケーションは、大量の DSP ブロックとプログラマブル ロジック リソースを使用します。

この要件があるため、従来型のプログラマブル ロジック デバイスで利用できる全体的な演算能力は大幅に低下します。使用できる DSP ブロックやプログラマブル ロジックの数を増やすだけでは、消費電力のバジェットが制限される負荷の高い DSP ワークロードに対するスケーラブルなソリューションとは言えません。

Versal AI Engine は、このようなケースにおいてより効率的な演算ソリューションを提供するように設計されています。

Versal AI エンジンの詳細

Versal AI Engine で DSP ワークロードを高速化

システム全体のパフォーマンスを向上させる鍵

ワークロードを効率的に実行できるプログラマブル ロジックや Versal AI Engine などに展開することで、エネルギー効率と全体的なパフォーマンスを大きく改善できます。Versal AI Engine が高性能 DSP アプリケーションに最適な理由をご覧ください。 

演算能力を高め、消費電力を削減

DSP デザインを革新し、パフォーマンスを最大化します。

次世代高性能 DSP アプリケーションの増大する需要に対応するために、効率性とスケーラビリティを強化できることをご存知でしょうか。AMD Versal AI Engine が DSP デザインを向上させる 5 つの方法をご覧ください。

AI エンジン DSP デザイン プロセス

AMD Versal™ AI エンジンをターゲットとする高性能 DSP 機能の設計には、AMD Vitis™ 開発ツールを使用する方法と、MathWorks Simulink® ツールのシミュレーションやグラフィック機能を活用する Vitis Model Composer フローを使用する方法があります。 

いずれの場合も、DSP アプリケーションを FPGA または AI エンジンで実行、あるいは FPGA ロジックと AI エンジンの組み合わせで実行するために、関数に適切に割り当てることが非常に重要です。この場合、システム全体だけでなく、各デバイスの能力も理解しておく必要があります。 

一般的に、演算負荷の高い関数は AI エンジンに実装し、データの移動や再配置を目的とする関数は FPGA に実装します。 

次の例で示すように、複雑なフィルタリングとフーリエ変換は、AI エンジン アレイに実装することが推奨されています。

画像を拡大
AMD Vitis AI Engine array chart

関数が AI エンジンで効果的に実行できることが確認できると、次のオプションのいずれかを使用して AI エンジンに実装できます。

注記: 以下のオプションを複数組み合わせたハイブリッドなアプローチも可能です。 

プログラミング環境

Vitis プラットフォームは、DSP ライブラリ、API、イントリンシクス関数を活用する 2 つのプログラミング環境を提供 

C/C++ で開発

Vitis プラットフォームには、一般的な DSP アルゴリズムや関数、デバイス グラフ向けのオープンソースの構築ブロックが用意されています。これらをそのまま使用して迅速にテストを実行することも、用途に合わせてカスタマイズすることも可能です。

C/C++ フロー

DSP 向けの AI エンジン開発を開始する場合、Vitis DSP ライブラリ関数 (C ベース) の利用を推奨しています。手動コーディングは最適化の余地がありますが、次に示す方法を使うことで、高性能を維持しつつ、DSP 向けの AI エンジンを最速で適用できます。これらのオプションを複数組み合わせたハイブリッドなアプローチも可能です。

オプション 1
Vitis DSP ライブラリ関数呼び出し


dsplib::fft::dit1ch::fft_ifft_dit_1ch
 

  • 最も簡単に使用できる
  • パラメーター指定可能
  • 最も速く開発できる
オプション 2
AI エンジンの API を使用したベクトル化プログラミング

aie::vector<int8_t, sizeTileA> A0 

aie::vector<int8_t, sizeTileA> A1
 

  • カスタマイズ可能
  • より速く開発できる
オプション 3
イントリンシクスを使用したベクトル化プログラミング

Acc0 = mac16(acc0, Bbuff, 0, 0x00000000, 8, 0x3120, Abuff0, 0, 0xCC884400, 2, 0x3210);​

Acc0 = mac16(acc0, Bbuff, 32, 0x00000000, 8, 0x3120, Abuff0, 0, 0xCC884400, 2, 0x3210); 
 

  • 低レベルでの完全なカスタマイズが可能 
  • 開発に最も時間がかかる

その後、異なる AI エンジン関数を連携させるため、graph C コードという C++ コードを記述して、複数の AI エンジン タイルからなるネットワークを構築します。  

Vitis Model Composer を使用したモデルベースのフロー

Vitis Model Composer を使用すると、MathWorks の MATLAB®/Simulink® 環境上で開発が可能になり、Versal AI エンジン用のカーネル生成、プログラマブル ロジックとの統合、システム シミュレーションを実行できます。

Vitis Model Composer フロー

Vitis Model Composer を使用すれば、異なる AI エンジンの関数をグラフィカルに接続できます。Vitis Model Composer ではこのグラフィック表示をボタン操作でグラフ C コードに変換できます。デザインの検証には、MathWorks Simulink 環境のシミュレーション機能を利用することも可能です。

Vitis Model Composer を使用した Versal AI Engine 開発の詳細は、Vitis Model Composer を使用する Versal AI Engine 開発のページを参照してください。

AI エンジン ツールのライセンス取得

コンパイラとシミュレータ

AI エンジン コンパイラおよびシミュレータ ツールは、AMD Vitis™ ソフトウェア インストーラーに含まれていますが、これらのツールを使用するにはライセンス (無償) が必要です。ライセンスは、製品のライセンス取得ページから取得可能です。

詳細を入力して [AI Engine Tools License] オプションを選択してください。

サンプル デザインとチュートリアル (Vitis GitHub)

AMD の GitHub では、高性能 DSP アプリケーション向けの AI エンジン用に最適化されたサンプル デザイン、チュートリアル、ライブラリ関数が公開されています。

これらはオープンソースのデザインで、設計サイクルを短縮するために活用できます。

AI エンジン開発を始めるにあたって、最も有効な GitHub リソースを紹介します。

GitHub では、ハードウェアの AIEAIE-ML 向けのデザインおよび機能別チュートリアルも提供されています。

スポットライト: AI エンジン向けのポリフェーズ チャネライザ デザイン

ポリフェーズ チャネライザは、デジタル信号処理に基づく効率的なアプローチを使用して、単一のデータ ストリームで伝送される周波数分割多重 (FDM) チャネルのセットを同時にダウンコンバートします。チャネライザの使用は、多くの無線通信、レーダー、宇宙/防衛、および医療用画像システムで広く普及しています。このチュートリアルでは、AMD Versal™ アダプティブ SoC デバイスの AI エンジンとプログラマブル ロジック (PL) リソースを組み合わせて、2 つのチャネライザ デザインを実装します。 

Versal AI Engine と従来のプログラマブル ロジック テクノロジを比較したベンチマークへのアクセス

AMD Versal アダプティブ SoC を使用した、プログラマブル ロジックのみのデザインとアダプティブ SoC + AI エンジン デザインのベンチマークの直接比較をご希望の場合は、ベンチマーク結果とソース デザインについて、営業担当者または FAE にお問い合わせください。

リソース

AMD Versal AI Engine のデザイン フロー

ウェビナー