User Tools

Site Tools


neurali:nemo_output_compilazione

NeMo output compilazione

Purtroppo NeMo non compila, anche a causa di diversi errori nel codice, ma non solo

Errore 1

Si deve aggiungere alla riga 9 di ./CMakeLists.txt

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(INCLUDE_DIR /usr/lib/openmpi/include)
include_directories (${INCLUDE_DIR})    

NOTA: questo causerà un errore fatale perché nvcc non supporta istruzioni c++11

http://stackoverflow.com/questions/9057123/error-while-using-cuda-and-c11

DA FARE : Trucco: Separare CUDA in file .cu (c++03) che nvcc compila. Il resto in file .cpp

Errore 2

mpi_dist.cpp:(.text._ZN3MPI3Win8Set_nameEPKc[_ZN3MPI3Win8Set_nameEPKc]+0x17): undefined reference to `MPI_Win_set_name'
CMakeFiles/mpi_dist.dir/mpi_dist.cpp.o:(.rodata._ZTVN3MPI3WinE[_ZTVN3MPI3WinE]+0x24): undefined reference to `MPI::Win::Free()'
CMakeFiles/mpi_dist.dir/mpi_dist.cpp.o:(.rodata._ZTVN3MPI8DatatypeE[_ZTVN3MPI8DatatypeE]+0x3c): undefined reference to `MPI::Datatype::Free()'
collect2: error: ld returned 1 exit status
make[2]: *** [src/examples/mpi_dist] Error 1
make[1]: *** [src/examples/CMakeFiles/mpi_dist.dir/all] Error 2
make: *** [all] Error 2

Si deve modificare la riga 27 di ./src/mpi_dist/CMakeLists.txt

TARGET_LINK_LIBRARIES(nemo_mpi_dist nemo  ${MPI_LIBRARIES} ${LTDL_LIBRARY} ${Boost_LIBRARIES})

errore di linking

sostituire riga 22,23 in ./src/example/CMakeLists.txt con questo

ADD_EXECUTABLE(mpi_dist mpi_dist.cpp parsing.cpp common.cpp)
TARGET_LINK_LIBRARIES(mpi_dist nemo nemo_mpi_dist ${MPI_LIBRARIES} ${Boost_LIBRARIES})

Errore 3

[ 12%] Building CXX object src/mpi_dist/CMakeFiles/nemo_mpi_dist.dir/WorkerSimulation.cpp.o

/home/fabio/Desktop/nemo/nemo-mpi-master/src/mpi_dist/WorkerSimulation.cpp: In member function 
‘void nemo::mpi_dist::WorkerSimulation::distributeOutgoingSpikes(const std::vector<unsigned int>&)’:

/home/fabio/Desktop/nemo/nemo-mpi-master/src/mpi_dist/WorkerSimulation.cpp:107:27: error: cannot convert 
‘MPI::Request’ to ‘ompi_request_t**’ for argument ‘1’ to ‘int MPI_Cancel(ompi_request_t**)’

    MPI_Cancel(recv_request);
                           ^
make[2]: *** [src/mpi_dist/CMakeFiles/nemo_mpi_dist.dir/WorkerSimulation.cpp.o] Error 1
make[1]: *** [src/mpi_dist/CMakeFiles/nemo_mpi_dist.dir/all] Error 2
make: *** [all] Error 2

Come correggere? Commentare il codice?????? riga 106

		/*
		 * if (!MPI::COMM_WORLD.Iprobe(worker, COMMUNICATION_TAG, status)) {
			MPI_Cancel(recv_request);
			count--;		
		}
		* 
		* */

Errore 4

./src/examples/torus.cpp sostituire riga 155 con

    target_t a;
 return a; 

Errore 5

[ 12%] Building NVCC (Device) object src/nemo/cuda/CMakeFiles/nemo_cuda.dir//./nemo_cuda_generated_kernel.cu.o
/usr/lib/gcc/i686-linux-gnu/4.8/include/stddef.h(432): error: identifier "nullptr" is undefined

infatti i file.cu vengono compilati con nvcc invece che gcc, ma come spiegato, qui devono essere separati i due codici…

https://devtalk.nvidia.com/default/topic/745106/nvcc-c-11-standard-in-cuda-frontend-dependencies-gcc-windows-vs-linux-/
I believe the solution in Linux is to compile your cpp files separately with gcc >= 4.8.1 and have nvcc
compile the cu files using gcc 4.7, assuming nvcc doesn't like 4.8.1 after removing the trestriction in the
host_config.h file you mentioned.

Allora

per non usare CUDA, NVCC, ecc,.. commentare riga 14 ./src/nemo/config.h.in

/*#cmakedefine NEMO_CUDA_ENABLED*/

Inoltre commentare anche riga 260 e 238 e 456 ./build/CMakeCache.txt:

NEMO_CUDA_ENABLED:BOOL=OFF
CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE:BOOL=OFF
NEMO_CUDA_ENABLED:BOOL=OFF
make install
[  1%] Using existing manual
[  3%] Built target api-doc-latex
[ 41%] Built target nemo_base
[ 45%] Built target nemo_cpu
[ 47%] Using existing man pages
[ 49%] Built target api-doc-man
[ 54%] Built target nemo
[ 56%] Built target nemo-app
[ 60%] Built target kuramoto
[ 70%] Built target nemo_mpi_dist
[ 76%] Built target mpi_dist
[ 80%] Built target mpi_dist_general
[ 84%] Built target random
[ 88%] Built target torus
[ 90%] Built target IF_curr_exp_cpu
[ 92%] Built target Input_cpu
[ 94%] Built target Izhikevich_cpu
[ 96%] Built target Kuramoto_cpu
[ 98%] Built target PoissonSource_cpu
[100%] Built target nemo_py
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/include/nemo.h
-- Installing: /usr/local/include/nemo.hpp
-- Installing: /usr/local/lib/libnemo.so
-- Set runtime path of "/usr/local/lib/libnemo.so" to "/usr/local/lib"
-- Installing: /usr/local/lib/libnemo_base.so
-- Set runtime path of "/usr/local/lib/libnemo_base.so" to "/usr/local/lib"
-- Installing: /usr/local/include/nemo/exception.hpp
-- Installing: /usr/local/include/nemo/types.h
-- Installing: /usr/local/include/nemo/Configuration.hpp
-- Installing: /usr/local/include/nemo/Network.hpp
-- Installing: /usr/local/include/nemo/Simulation.hpp
-- Installing: /usr/local/include/nemo/ReadableNetwork.hpp
-- Installing: /usr/local/include/nemo/config.h
-- Installing: /usr/local/lib/nemo/plugins/Input.ini
-- Installing: /usr/local/lib/nemo/plugins/PoissonSource.ini
-- Installing: /usr/local/lib/nemo/plugins/Izhikevich.ini
-- Installing: /usr/local/lib/nemo/plugins/IzhikevichRS.ini
-- Installing: /usr/local/lib/nemo/plugins/IF_curr_exp.ini
-- Installing: /usr/local/lib/nemo/plugins/Kuramoto.ini
-- Installing: /usr/local/lib/libnemo_cpu.so
-- Set runtime path of "/usr/local/lib/libnemo_cpu.so" to "/usr/local/lib"
-- Installing: /usr/local/lib/nemo/plugins/cpu/libInput.so
-- Set runtime path of "/usr/local/lib/nemo/plugins/cpu/libInput.so" to "/usr/local/lib"
-- Installing: /usr/local/lib/nemo/plugins/cpu/libPoissonSource.so
-- Set runtime path of "/usr/local/lib/nemo/plugins/cpu/libPoissonSource.so" to "/usr/local/lib"
-- Installing: /usr/local/lib/nemo/plugins/cpu/libIzhikevich.so
-- Set runtime path of "/usr/local/lib/nemo/plugins/cpu/libIzhikevich.so" to "/usr/local/lib"
-- Installing: /usr/local/lib/nemo/plugins/cpu/libIF_curr_exp.so
-- Set runtime path of "/usr/local/lib/nemo/plugins/cpu/libIF_curr_exp.so" to "/usr/local/lib"
-- Installing: /usr/local/lib/nemo/plugins/cpu/libKuramoto.so
-- Set runtime path of "/usr/local/lib/nemo/plugins/cpu/libKuramoto.so" to "/usr/local/lib"
-- Installing: /usr/local/share/nemo/python/_nemo.so
-- Set runtime path of "/usr/local/share/nemo/python/_nemo.so" to "/usr/local/lib"
-- Installing: /usr/local/share/nemo/python/nemo/__init__.py
-- Installing: /usr/local/share/nemo/python/example.py
-- Installing: /usr/local/share/nemo/python/test.py
-- Installing: /usr/local/share/nemo/python/setup.py
-- Installing: /Kuramoto/nemoCoupleOscillators.m
-- Installing: /Kuramoto/nemoGetPhase.m
-- Installing: /Kuramoto/example.m
-- Installing: /usr/local/bin/nemo
-- Set runtime path of "/usr/local/bin/nemo" to "/usr/local/lib"
-- Installing: /usr/local/share/nemo/examples/torus.cpp
-- Installing: /usr/local/share/nemo/examples/random.cpp
-- Installing: /usr/local/share/nemo/examples/mpi_dist.cpp
-- Installing: /usr/local/share/nemo/examples/common.cpp
-- Installing: /usr/local/share/nemo/examples/mpi_dist_general
-- Set runtime path of "/usr/local/share/nemo/examples/mpi_dist_general" to "/usr/local/lib"
-- Installing: /usr/local/share/nemo/examples/mpi_dist
-- Set runtime path of "/usr/local/share/nemo/examples/mpi_dist" to "/usr/local/lib"
-- Installing: /usr/local/share/nemo/examples/random
-- Set runtime path of "/usr/local/share/nemo/examples/random" to "/usr/local/lib"
-- Installing: /usr/local/share/nemo/examples/torus
-- Set runtime path of "/usr/local/share/nemo/examples/torus" to "/usr/local/lib"
-- Installing: /usr/local/include/mpi_dist/MasterSimulation.cpp
-- Installing: /usr/local/include/mpi_dist/MapperSim.cpp
-- Installing: /usr/local/include/mpi_dist/SimulationMPI.cpp
-- Installing: /usr/local/include/mpi_dist/WorkerSimulation.cpp
-- Installing: /usr/local/share/man/man3/nemo-c.3
-- Installing: /usr/local/share/man/man3/nemo_Network.3
-- Installing: /usr/local/share/man/man3/nemo_Simulation.3
-- Installing: /usr/local/share/man/man3/nemo_Configuration.3
-- Installing: /usr/local/share/man/man3/nemo.3
-- Installing: /usr/local/share/doc/nemo/manual.pdf

A questo punto NeMo risulta compilato, ma senza CUDA

poi pero' spikestream non funziona se NeMo non fornisce CUDA

neurali/nemo_output_compilazione.txt · Last modified: 2020/06/08 22:20 by 127.0.0.1