Vitis ハードウェア アクセラレーション

xilinx.com の Vitis ™開発環境を参照

アクセラレーション パフォーマンスの体験

この演習では、アプリケーションをまずソフトウェアのみのバージョンで実行し、その後コンパイル済み FPGA アクセラレータを使用して最適化されたアクセラレーション バージョンを実行し、アクセラレーションの可能性を体験します。

  1. 次のコマンドを実行してアプリケーションを設定します。

    # Source the Vitis runtime environment
    export LAB_WORK_DIR=<Downloaded Github repository>/Hardware_Acceleration/Design_Tutorials/02-bloom
    
  2. C アプリケーションをビルドします。

    1. cpu_src ディレクトリに移動します。

    2. 次のコマンドを使用して、ドキュメント数を引数として指定して元の C アプリケーションを実行し、比較のためのゴールデン出力ファイルを生成します。

      cd $LAB_WORK_DIR/cpu_src/
      make run
      

      生成された出力スコアは、ホスト コードの cpu_profile_score 配列に格納されます。この配列は、指定されたドキュメント総数の出力を表します。結果は、次のようになります。

      ./host 100000
      Initializing data
      Creating documents - total size : 1398.903 MBytes (349725824 words)
      Creating profile weights
      
      Total execution time of CPU          |  2949.3867 ms
      Compute Hash processing time         |  2569.3266 ms
      Compute Score processing time        |   380.0601 ms
      --------------------------------------------------------------------
      Execution COMPLETE
      
  3. FPGA 上でアプリケーションを実行します。 この演習では、FPGA アクセラレータは並列係数 8 でインプリメントされています。

    • 8 個の入力ワードが並列処理され、各クロック サイクルで 8 つの出力フラグが生成されます。

      最適化されたアプリケーションを FPGA 上で実行するには、次の make コマンドを実行します。

      make run_fpga SOLUTION=1
      

      次の出力が表示されます。

      Processing 1398.905 MBytes of data
      Splitting data in 8 sub-buffers of 174.863 MBytes for FPGA processing
      --------------------------------------------------------------------
      Executed FPGA accelerated version  |   427.1341 ms   ( FPGA 230.345 ms )
      Executed Software-Only version     |   3057.6307 ms
      --------------------------------------------------------------------
      Verification: PASS
      

      スループットは、次のように計算されます。

      スループット = 合計データ量/合計時間 = 1.39 GB/427.1341 ms = 3.25 GB/s

      FPGA アクセラレーションを効果的に利用することにより、アプリケーションのスループットが 7 倍になりました。

次の手順

この手順では、FPGA を使用して達成可能なアクセラレーションを観察しました。次に、アクセラレーションのためのアプリケーションを構築し、元のアプリケーションをプロファイリングしてどの関数をアクセラレーションできるかを調べます。希望のアクセラレーションを達成するためのインターフェイス境界およびパフォーマンス制約も定義します。


チュートリアルの始めに戻る

Copyright© 2021 Xilinx