2017-07-06 6 views
0

Ich versuche, CNTK von der Quelle auf Arch Linux zu bauen.Fehler beim Erstellen von Microsoft CNTK auf Arch Linux: libCntk.Eval-2.0.so beschwert sich über undefinierte Verweis auf TensorView

git Befehle:

git clone https://github.com/Microsoft/CNTK 
cd CNTK 
git submodule sync --recursive 
git submodule update --init --recursive 

konfigurieren und machen Befehle:

./configure --with-mkl=/usr/local/CNTKCustomMKL --1bitsgd=yes --asgd=no 
make all 

Der Fehler:

building ./bin/cppevalclient for Linux with build type release 
/usr/bin/mpic++ -rdynamic -L./lib -L/usr/local/CNTKCustomMKL/3/x64/parallel -L/usr/lib -L/usr/lib -L/usr/release/lib -Wl,-rpath,'$ORIGIN/../lib' -Wl,-rpath,/usr/local/CNTKCustomMKL/3/x64/parallel -Wl,-rpath,/usr/lib -Wl,-rpath,/usr/lib -Wl,-rpath,/usr/release/lib -o bin/cppevalclient .build/Source/../Examples/Evaluation/CPPEvalClient/CPPEvalClient.o -lm -lmkl_cntk_p -liomp5 -lpthread -lCntk.Eval-2.0 -lCntk.Math-2.0 -lCntk.PerformanceProfiler-2.0 
./lib/libCntk.Eval-2.0.so: undefined reference to `Microsoft::MSR::CNTK::TensorView<double> const* CNTK::NDArrayView::GetTensorView<double>() const' 
./lib/libCntk.Eval-2.0.so: undefined reference to `Microsoft::MSR::CNTK::TensorView<float> const* CNTK::NDArrayView::GetTensorView<float>() const' 
collect2: error: ld returned 1 exit status 
make: *** [Makefile:628: bin/cppevalclient] Error 1 

TensorView ist Teil Source/Math, so erwarte ich libCntk.Math-2.0.so. Aber in der Fehlermeldung, libCntk.Eval-2.0.so beschwert sich über undefinierten Verweis auf TensorView.

Danke!

Edit 1:

Alle drei .so-Dateien erstellt und verfügbar:

-rwxr-xr-x 1 a a 252658744 2017-06-21 21:01 libCntk.Eval-2.0.so 
-rwxr-xr-x 1 a a 59993400 2017-06-21 21:00 libCntk.Math-2.0.so 
-rwxr-xr-x 1 a a 1911472 2017-06-21 21:00 libCntk.PerformanceProfiler-2.0.so 

Edit 2:

mpic++ --version gibt g++ (GCC) 7.1.1

Die Autoren schlagen vor zu Verwenden Sie gcc 4.8. Ich möchte jedoch nicht zwei Versionen von gcc auf der Maschine haben.

bearbeitet 3:

Basierend auf einem Vorschlag, den ich von den Autoren bekam (https://github.com/Microsoft/CNTK/issues/2025), habe ich aus dem EVAL_CLIENT Ziel in den Makefile kommentiert. Jedoch bewegt sich der Fehler auf das nächste Ziel in der Makefile: CNTKLIBRARY_CPP_EVAL_EXAMPLES

bearbeiten 4:

Es scheint der Fehler an den Linker verbunden ist und einige Fahnen wie --as-needed, --whole-archive, und so weiter. Ich konnte es jedoch noch nicht beheben.

Danke!

Antwort

1

Nicht sicher, ob es durch GCC 7.1.1 verursacht wird. Wenn Sie nicht zwei gcc-Versionen auf dem Computer installieren möchten, können Sie docker ausführen? CNTK unterstützt auch den Andock-Container. Details können https://docs.microsoft.com/en-us/cognitive-toolkit/CNTK-Docker-Containers gefunden werden.

+0

Danke. Ich benutze die Docker-Container von CNTK. Allerdings verwende ich Arch Linux als Basis-BS, und ich würde gerne eine Lösung finden, um es mit höheren Versionen von GCC zu kompilieren, um die CNTK-Installation auf Arch Linux zu rationalisieren. – imriss

Verwandte Themen