FC2カウンター FPGAの部屋 Windows 10 の Vivado HLS 2019.2 で mnist_nn プロジェクトを C シミュレーションしたときのエラー
fc2ブログ

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

FPGAの部屋

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

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

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/4885-fa16616c
この記事にトラックバックする(FC2ブログユーザー)