DPUCZDX8Gの各アーキテクチャで物体検出の速度を測定してみた

本サイトはアフィリエイト広告を利用しています。
AI

DPU(DPUCZDX8G)は複数のアーキテクチャがあります。

「B512,B800,B1024,B1600,B2304,B3136,B4096」の8つの実行速度を比較しました。

KR260でYOLOXの物体検出のDPU実行速度を比較しています。

 

スポンサーリンク

DPUCZDX8Gの各アーキテクチャで物体検出の速度を測定してみた。

DPU(DPUCZDX8G)は複数のアーキテクチャがあります。

「B512,B800,B1024,B1600,B2304,B3196,B4096」の8つの実行速度を比較しました。

KR260でYOLOXの物体検出のDPU実行速度を比較しています。

 

基本的に150MHzのクロックを使い、一部300MHzでも確認しています。

基本的にサイズが大きくなるほど、推論(inference)時間が短くなっています。

モデルの作り方から、実行プログラムまで紹介していきます。

 

各アーキテクチャとモデルの作り方

各アーキテクチャとモデルの作り方は下記記事を参考ください。

YOLOXの物体検出を実行するために「.bit」「.xclbin」「.hwh」と「.model」が必要になります。

DPUのIPを合成して、PYNQで動かしてみた

DPUのIPを合成して、PYNQで動かしてみた
VivadoとVitisを利用して、DPUのIPを合成したプロジェクトを作りました。KR260でPYNQ上で作成したDPUを使い、Vitis AIの物体検出(YOLOv3)をしています。その上でKR260にて、GPIO(PWM)も一緒に動か...

PYNQでYOLOX-nano + PyTorchの物体検出してみた

PYNQでYOLOX-nano + PyTorchの物体検出してみた
KR260のDPUを使って、物体検出をしました。YOLOX-nano+Pytorchの軽量のモデルを使用してます。YOLOv3とYOLOXの実行速度の比較までした旨を紹介します。PYNQでYOLOX-nano + PyTorchの物体検出し...

 

作成した「B512,B800,B1024,B1600,B2304,B3196,B4096」の各ファイルを下記に置いています。

B512とB3196とB4096に関してはDPUクロックを150MHz→300MHzにしたものも作りました。

 https://github.com/iotengineer22/AMD-Pervasive-AI-Developer-Contest/tree/main/jupyter_notebooks/pynq-benchmark

 

 

DPUの設定(dpu_conf.vh)に関しては、基本的にデフォルトです。

DPUのサイズ箇所を各アーキテクチャに変更しています。

 

またDPUサイズが大きくになるにつれ、BRAMだけでは容量が足りなくなりました。

そのためB2304からURAMをENABLEにしています。

 

B4096_300MHzに関しては、デフォルトのパラメータではビルド出来なかったです。

下記で使用したパラメータを利用しています。

DPUのIPを合成して、PYNQで動かしてみた

DPUのIPを合成して、PYNQで動かしてみた
VivadoとVitisを利用して、DPUのIPを合成したプロジェクトを作りました。KR260でPYNQ上で作成したDPUを使い、Vitis AIの物体検出(YOLOv3)をしています。その上でKR260にて、GPIO(PWM)も一緒に動か...

 

各アーキテクチャのYOLOXの結果

1枚の写真をYOLOXで物体検出したときの、DPUでの推論(inference)時間を確認しました。

下記のように前処理・後処理は除いた時間です。

代表的な点をまとめると、(当たり前ですが)下記内容になりました。

  • アーキテクチャのサイズを大きくすると、基本的には速くなる。
  • DPUへのクロックを速くしても、基本的には速くなる。

 

細かいところを見ていくと下記内容です

  • B3136やB4096などサイズ大きくになるにつれ、実行速度の差は小さくなりました。
  • B512に関しては150MHz→300MHzにすることで、実行速度が速くなりました。(B3136/B4096に関してはB512と比べると、影響は小さかったです。)

 

KR260上での各アーキテクチャの速度の結果、使用率(Utilization)含めて貼り付けておきます。

DPUのリソース使用量などの詳細に関しては、下記の公式ドキュメントでも記載されています。

AMD Technical Information Portal

 

B512_150MHz

B512_150MHzの結果です。

 

B800_150MHz

B800_150MHzの結果です。

 

B1024_150MHz

B1024_150MHzの結果です。

 

B1152_150MHz

B1152_150MHzの結果です。

 

B1600_150MHz

B1600_150MHzの結果です。

DPUのデフォルトパラメータだと、この時点でBRAMの容量が限界でした。

 

B2304_150MHz

B2304_150MHzの結果です。

B2304からDPU設定でURAMをENABLEにしています。

 

B3136_150MHz

B3136_150MHzの結果です。

 

B4096_150MHz

B4096_150MHzの結果です。

 

B512_300MHz

B512_300MHzの結果です

クロックを上げただけですので、B512_150MHzの使用量と大きくは変わりありません。

 

B3136_300MHz

B3136_300MHzの結果です。

 

B4096_300MHz

B4096_300MHzの結果です。

 

まとめ

DPU(DPUCZDX8G)は複数のアーキテクチャがあります。

「B512,B800,B1024,B1600,B2304,B3136,B4096」の8つの実行速度を比較しました。

KR260でYOLOXの物体検出のDPU実行速度を比較しています。

 

今回のKR260で実施した内容は、下記記事で紹介したテストの一部です。

AMD(Xilinx)のFPGAコンテストに参加した感想

AMD(Xilinx)のFPGAコンテストに参加した感想
AMD(Xilinx)とHackster(Avnet)が合同主催する、海外のコンテストに参加していました。AMD Pervasive AI Developer Contest の「Robotics AI」部門です。KR260というFPGAボ...

コメント