Vitis™ ハードウェア アクセラレーション チュートリアル

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

モジュール 3 のコード、ファイル、および手順 (モジュール 1 と同じフローで GUI を設定または make を実行)

このモジュールでは、カーネル コードとホスト コードの両方を 64 ビット浮動小数点データ型 (double) ではなく、32 ビット浮動小数点データ型 (float) を使用するように変更し、データ型のサイズを下げることで、パフォーマンスおよび使用率がどれくらい改善されるかについて説明します。

U50 カードに搭載されているザイリンクス デバイスは、ハードウェア リソース (DSP ブロックおよびロジック) を使用して浮動小数点をインプリメント可能な UltraScale+ デバイスです。浮動小数点演算子は、多くのハードウェアを使用する傾向があります。このモジュールでは、32 ビットの浮動小数点型にサイズを下げた場合の節約量を測定します。

  • Vitis とハードウェア エミュレーションのみを実行します (モジュール 1 を参照)。ソフトウェア エミュレーションや実際のハードウェア コンパイルを実行する必要はありません。

  • Vitis アナライザーを実行して、デバイス リソースへの影響とパフォーマンスの向上の両方を測定します。

  • 前のモジュールの使用率と比較してください。

カーネルの実行時間は短縮されましたか。

  • Vitis HLS を実行して、II を含む詳細なパラメーターを測定します (II は開始間隔であり、生成されたハードウェアは II クロック サイクルごとにデータを消費できます)。

リソースの使用率はモジュール 1 および 2 より少なくなっていますか。II は以前とは異なっていますか。

使用されるカーネル リソース (通常の浮動小数点 vs 倍精度浮動小数点)

名前 LUT LUTAsMem REG BRAM DSP
double を使用したカーネル 10190 799 10191 514 18
float を使用したカーネル 5071 746 5124 258 12

ロジックとストレージの両方すべてでリソース使用率が低下します。

  • 32 ビット ワードを格納するので (doble データ型の場合は 64 ビットだった)、ストレージが約半分に減ります。

  • また、演算子は消費するロジックが少ないため、DSP ブロックも少なくなります。


このモジュールのまとめ

データの精度を下げることで、パフォーマンスを向上させることができます。ザイリンクス デバイスでは、データ型を簡素化することで、かなり結果が改善されます。