FC2カウンター FPGAの部屋 2020年05月17日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

DPU on PYNQ をやってみる5(dpu_yolo_v3.ipynb をやってみた)

DPU on PYNQ をやってみる4(dpu_resnet50.ipynb をやってみた)”の続き。

前回は、DPU on PYNQ の dpu_resnet50.ipynb をやってみた。今回は、DPU on PYNQ の dpu_yolo_v3.ipynb をやってみた。

やったことは、dpu_yolo_v3.ipynb と同じなので、省略する。

分類のクラスを記述した voc_classes.txt を示す。 20 クラスに分類している。
DPU-PYNQ_45_200517.png

aeroplane
bicycle
bird
boat
bottle
bus
car
cat
chair
cow
diningtable
dog
horse
motorbike
person
pottedplant
sheep
sofa
train
tvmonitor


"img/irishterrier-696543.JPEG" を認識した結果を貼っておく。
dog の確率が 0.998 だそうだ。
DPU-PYNQ_46_200517.png

次にハイイロギツネの "img/greyfox-672194.JPEG" でやってみた。
DPU-PYNQ_47_200517.png
DPU-PYNQ_48_200517.png

こちらは分類のクラスが無いから、 dog の確率が 0.8498 で cat の確率が 0.6790 だった。
  1. 2020年05月17日 11:18 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

Windows 10 の Vivado HLS 2019.2 で mnist_nn プロジェクトを C シミュレーションしたときのエラー

Windows 10 の Vivado HLS 2019.2 で mnist_nn プロジェクトを C シミュレーションしたときに謎のエラーが発生する。トラブルシューティングしてみたので、その顛末を書いておく。

MNIST用 2 層の全結合層を持ったニューラルネットワークの Vivado HLS プロジェクトが mnist_nn プロジェクトだ。それについては、”「ゼロから作るDeep Learning」の2層ニューラルネットワークのハードウェア化4(Vivado HLS)”を参照のこと。

「ゼロから作るDeep Learning」の2層ニューラルネットワークのハードウェア化4(Vivado HLS)”では、Windows 版の Vivado HLS 2017.1 を使用して、mnist_nn プロジェクトで C シミュレーションを行っていた。

Vivado HLS 2019.2 でも mnist_nn プロジェクトを作成して、C シミュレーションを行ったが、エラーになってしまった。
Win_Vivado_HLS_192_1_200517.png

C シミュレーションのログを示すが、何もエラーについて情報が無い。

C:/Xilinx/Vivado/2019.2/bin/vivado_hls.bat C:/Users/masaaki/Documents/Vivado_HLS/HDLab/mnist_nn/solution1/csim.tcl
INFO: [HLS 200-10] Running 'C:/Xilinx/Vivado/2019.2/bin/unwrapped/win64.o/vivado_hls.exe'
INFO: [HLS 200-10] For user 'masaaki' on host 'marsee-lenovo' (Windows NT_amd64 version 6.2) on Sun May 17 05:46:41 +0900 2020
INFO: [HLS 200-10] In directory 'C:/Users/masaaki/Documents/Vivado_HLS/HDLab'
Sourcing Tcl script 'C:/Users/masaaki/Documents/Vivado_HLS/HDLab/mnist_nn/solution1/csim.tcl'
INFO: [HLS 200-10] Opening project 'C:/Users/masaaki/Documents/Vivado_HLS/HDLab/mnist_nn'.
INFO: [HLS 200-10] Opening solution 'C:/Users/masaaki/Documents/Vivado_HLS/HDLab/mnist_nn/solution1'.
INFO: [SYN 201-201] Setting up clock 'default' with a period of 10ns.
INFO: [SYN 201-201] Setting up clock 'default' with an uncertainty of 1.25ns.
INFO: [HLS 200-10] Setting target device to 'xc7z010-clg400-1'
INFO: [HLS 200-435] Setting 'config_sdx -target' configuration: config_export -vivado_optimization_level=2
INFO: [HLS 200-435] Setting 'config_sdx -target' configuration: set_clock_uncertainty default
INFO: [SIM 211-2] *************** CSIM start ***************
INFO: [SIM 211-4] CSIM will launch GCC as the compiler.
   Compiling ../../../mnist_nn_tb.cpp in debug mode
csim.mk:74: recipe for target 'obj/mnist_nn_tb.o' failed
In file included from C:/Xilinx/Vivado/2019.2/include/floating_point_v7_0_bitacc_cmodel.h:143:0,
                 from C:/Xilinx/Vivado/2019.2/include/hls_fpo.h:186,
                 from C:/Xilinx/Vivado/2019.2/include/hls_half.h:44,
                 from C:/Xilinx/Vivado/2019.2/include/etc/ap_private.h:90,
                 from C:/Xilinx/Vivado/2019.2/include/ap_common.h:641,
                 from C:/Xilinx/Vivado/2019.2/include/ap_fixed.h:54,
                 from ../../../mnist_nn_tb.cpp:6:
C:/Xilinx/Vivado/2019.2/include/gmp.h:62:0: warning: "__GMP_LIBGMP_DLL" redefined
 #define __GMP_LIBGMP_DLL  0
 
In file included from C:/Xilinx/Vivado/2019.2/include/hls_fpo.h:186:0,
                 from C:/Xilinx/Vivado/2019.2/include/hls_half.h:44,
                 from C:/Xilinx/Vivado/2019.2/include/etc/ap_private.h:90,
                 from C:/Xilinx/Vivado/2019.2/include/ap_common.h:641,
                 from C:/Xilinx/Vivado/2019.2/include/ap_fixed.h:54,
                 from ../../../mnist_nn_tb.cpp:6:
C:/Xilinx/Vivado/2019.2/include/floating_point_v7_0_bitacc_cmodel.h:135:0: note: this is the location of the previous definition
 #define __GMP_LIBGMP_DLL 1
 
make: *** [obj/mnist_nn_tb.o] Error 1
ERROR: [SIM 211-100] 'csim_design' failed: compilation error(s).
INFO: [SIM 211-3] *************** CSIM finish ***************
4
    while executing
"source C:/Users/masaaki/Documents/Vivado_HLS/HDLab/mnist_nn/solution1/csim.tcl"
    invoked from within
"hls::main C:/Users/masaaki/Documents/Vivado_HLS/HDLab/mnist_nn/solution1/csim.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel 1 hls::main {*}$args"
    (procedure "hls_proc" line 5)
    invoked from within
"hls_proc $argv"
Finished C simulation.


いろいろとやってみたが、なぜエラーになるか? どうしてエラーになったのか分からない?

Vivado HLS 2019.2 で C シミュレーションのエラーが出る前のタスクマネージャーの画面なのだが、どうやら java (TM) Platform SE binary (14) というのが Vivado HLS のソフトウェアのようだ。下のタスクマネージャーは Vivado HLS でエラーが出る直前の画面だ。メモリを 3.4 GB も消費しているので、32 ビット・アプリケーションとしては限界までメモリを消費していて、それでエラーになったのか?
Win_Vivado_HLS_192_2_200517.png

そこで、入力データを 100 個から 10 個に減らした mnist_data_10.h を用意した。
Win_Vivado_HLS_192_3_200517.png

mnist_nn_tb.cpp も mnist_nn_10.h を使用するように変更した。
Win_Vivado_HLS_192_4_200517.png

これで C シミュレーションをしたところ成功した。
Win_Vivado_HLS_192_5_200517.png

java (TM) Platform SE binary (14) の消費メモリも 3.0 GB 程度になっていた。やはり、メモリ消費量が 32 ビット・アプリケーションの限界を超えてしまったので、エラーになったようだ。しかし、Windows 版の Vivado HLS 2019.2 が 32 ビット・アプリケーションなのは何とかならないものなのだろうか?大きなデータを与えることができない。。。

ちなみに、Ubuntu 18.04 LTS の Vivado HLS 2019.2 では、100 個のデータのままで、C シミュレーションが成功する。
Win_Vivado_HLS_192_6_200517.png
  1. 2020年05月17日 06:19 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0