DPUの消費電力をB4096とB512で確認してみた

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

DPUの「大きいサイズのB4096」と「小さいサイズのB512」を電力比較しました。

実際にKR260でDPUをオーバーレイさせたときの電力を比較しています。

合成時のFPGAのPower Consumptionから、実際の消費電力まで確認しています。

 

スポンサーリンク

DPUの消費電力をB4096とB512で確認してみた

KR260でDPUの「大きいサイズのB4096」と「小さいサイズのB512」を電力比較しました。

合成時のFPGAのPower Consumptionから、実際の消費電力まで確認しています。

実際の消費電力ではB512が約9.0W(12V_750mA)、B4096が約9.6W(12V_800mA)となりました。

 

実際のテスト動画が下記です。

 

テスト環境やプログラム含めて紹介していきます。

 

モバイルバッテリーPD20WでKR260を動かす

PD対応の12V出力が可能なモバイルバッテリーを用意しました。

(モバイルバッテリーを使う理由は電流測定でTypeCの電流チェッカーを使いたいためです。)

Philips (フィリップス)のDLP7721Cです。スペックとしてはPD20Wで下記です

【容量】20000mAh/3.7V
【出力】USB-A1/A2:DC 5V/3A,9V/2A,12V/1.5A
USB-C:DC 5V/3A,9V/2.2A,12V/1.67A

 

TypeCの電流チェッカーはAmazonで販売されている、汎用品のものです。

KR260のDCジャックに12V電源入力できるように、PD12V出力対応のケーブルも購入しました。

 

KR260の起動は問題ありません。ブート含めてLinuxも正常に立ち上がります。

普通のFPGA・Linuxの動作する程度はモバイルバッテリーからでも対応出来ました。

もちろん、DCジャックを差し込んでいないときは0W(12V_0mA)です。

 

DCジャックを差し込んでからの、Linux起動時は約8.5W(12V_700mA)でした。

 

VitisでB4096とB512の設定ファイルを作る

VivadoとVitisを使ってDPUを動かすためのファイルを作ります。

KR260のPYNQ上で動かすには、「.bit」「.xclbin」「.hwh」のファイルが必要です。

実際の作り方に関しては、下記記事で紹介しています。

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の物体検出し...

 

今回、B4096とB512で極力パラメータを同じにしたく、DPUのクロックを150MHzにしました。

(300MHzだと、色々パラメータを弄る必要があるためです)

Vitisで合成するときのDPUの設定(dpu_conf.vh)

 

B512に関しては、デフォルトのB4096からB512への下記1点だけです。

 

B4096に関しては、下記を変更しています。BRAM箇所でエラー出たので修正追加しています。

 

合成後にFPGAのPower Consumptionを確認してみます。

Vivadoで、DPU合成後のプロジェクトを開きます。下記箇所にあるはずです。

~/***_hw_link/Hardware/dpu.build/link/vivado/vpl/prj

 

FPGAのPower Consumptionの設定はデフォルト(typical)です。

B512_150MHzは下記のように3.784Wとなりました。

 

B4096_150MHzは下記のように5.071Wとなりました。

 

Vitis AIでB4096とB512用のモデルを作る

今回は物体検出(YOLOX-nano)のモデルを使います。

最初にLinux環境でKR260用のYOLOXのモデルを作成(コンパイル)します。

YOLOXのサンプルのモデルをダウンロードして解凍します。

 

 

Vitis AIでコンパイル

Vitis AIを使ってコンパイルします。今回はpytorchのCPU版のVitis AIを立ち上げています。

(コンパイル自体はCPU版でもGPU版でも変わりありません。)

 

KR260でのB512とB4096では作成する際に使うパラメータ(fingerprint)が異なります。

fingerprintが書かれているファイル(arch.json)は、Vitisで作られた下記フォルダにあります。

~/***_hw_link/Hardware/dpu.build/link/vivado/vpl/prj/prj.gen/sources_1/bd/design_1/ip/design_1_DPUCZDX8G_1_0/arch.json

 

LinuxのPCでVitis AIを起動します。

下記例ではB512のarch.jsonをb512_arch.jsonにリネームした後に、コンパイルしています。

 

コンパイル後は.xmodelファイルが指定のフォルダに作成されています。

B4096の.xmodelファイルも同様に作成します

 

 

KR260でのテスト

テストで実行したYOLOX-nanoのプログラム(.ipynb)は下記です。

B4096とB512の切り替えは、オーバーレイとモデル読み込み箇所を変えています。

 https://github.com/iotengineer22/AMD-Pervasive-AI-Developer-Contest/blob/main/jupyter_notebooks/pynq-benchmark/benchmark_dpu_yolox-nano_pt_coco2017.ipynb

 

冒頭でも紹介したテスト動画は下記です。

 

LAN経由で実行しているので、KR260に余分なデバイス(カメラ・モータ)の接続は無しです。

純粋にKR260とDPUの消費電力を測定しています。

プログラム実行前にLinuxを起動しただけだと約8.5W(12V_700mA)でした。

 

 

DPUのB512を実行した後は約9.0W(12V_750mA)となりました。

 

また、DPUのB4096を読み込んだ後は約9.6W(12V_800mA)となりました。

 

実際の消費電力で比較するとB4096の方が0.6Wほど大きい形になりました。

 

但しB4096だと消費電流が大きい分、DPUの実行速度も速いです。

B4096はB512に比べて、約1/2の実行時間となります。

(DPU execution timeの箇所です。B512が0.0345sに対して、B4096は0.0174sでした)

 

B512の結果が下記です。

 

B4096の結果が下記となります。

 

 

まとめ

DPUの「大きいサイズのB4096」と「小さいサイズのB512」を電力比較しました。

実際にKR260でDPUをオーバーレイさせたときの電力を比較しています。

合成時のFPGAのPower Consumptionから、実際の消費電力まで確認しました。

 

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

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

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

コメント