Hi Hans Ekkehard, hi Lakshmi,
Thank you for your suggestions, unfortunately none have worked for me so far. Here’s what happened:
-----------------------------------------------------------
HANS EKKEHARDS FIRST OPTION
cmake -E env LDFLAGS="-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib" \cmake -DCMAKE_INSTALL_PREFIX:PATH=$PWD/install \
-DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang \
-DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ \
-Dwith-mpi=ON ../src
Here, the cmake command went through, but make failed during
Scanning dependencies of target nestkernel
with lots of errors like:
In file included from /Users/staude/Projekte/RainerDunkel/SensoryNetwork/Skripte/snn/NEST/nest-simulator-2.18.0/nestkernel/clopath_archiving_node.cpp:26:
In file included from /Users/staude/Projekte/RainerDunkel/SensoryNetwork/Skripte/snn/NEST/nest-simulator-2.18.0/nestkernel/kernel_manager.h:27:
In file included from /Users/staude/Projekte/RainerDunkel/SensoryNetwork/Skripte/snn/NEST/nest-simulator-2.18.0/nestkernel/connection_manager.h:42:
In file included from /Users/staude/Projekte/RainerDunkel/SensoryNetwork/Skripte/snn/NEST/nest-simulator-2.18.0/nestkernel/source_table.h:35:
/Users/staude/Projekte/RainerDunkel/SensoryNetwork/Skripte/snn/NEST/nest-simulator-2.18.0/nestkernel/mpi_manager.h:313:3: error: use of undeclared identifier 'MPI'
MPI::Intracomm comm;
Also, I am not sure if that really built without OpenMP. At least cmake outputs
-- Found Cython: /Users/staude/.pyenv/shims/cython (found version "0.29.13")
-- Found OpenMP_C: -fopenmp=libomp (found version "3.1")
-- Found OpenMP_CXX: -fopenmp=libomp (found version "3.1")
-- Found OpenMP: TRUE (found version "3.1")
and the Nest Configuration Summary says:
C compiler : /usr/local/opt/llvm/bin/clang
C compiler flags : -O2 -Wall -fopenmp=libomp
C++ compiler : /usr/local/opt/llvm/bin/clang++
C++ compiler flags : -std=c++11 -O2 -Wall -fopenmp=libomp
-----------------------------------------------------------
HANS EKKEHARDS SECOND OPTION
Haven’t tried yet, but also don’t know really what I would have to do in practice...
-----------------------------------------------------------
HANS EKKEHARDS THIRD OPTION
cmake -DCMAKE_INSTALL_PREFIX:PATH=$PWD/install \
-DOpenMP_CXX_FLAGS="-Xpreprocessor -fopenmp" -DOpenMP_CXX_LIB_NAMES="omp" \
-DOpenMP_C_FLAGS="-Xpreprocessor -fopenmp" -DOpenMP_C_LIB_NAMES="omp" \
-DOpenMP_omp_LIBRARY=/usr/local/lib/libomp.dylib \
-Dwith-mpi=ON ../src
That indeed failed during linking:
[ 24%] Linking CXX shared library libsli.dylib
Undefined symbols for architecture x86_64:
"___kmpc_critical", referenced from:
SLIInterpreter::message(int, char const*, char const*, char const*) const in interpret.cc.o
"___kmpc_end_critical", referenced from:
SLIInterpreter::message(int, char const*, char const*, char const*) const in interpret.cc.o
"___kmpc_global_thread_num", referenced from:
SLIInterpreter::message(int, char const*, char const*, char const*) const in interpret.cc.o
"_omp_in_parallel", referenced from:
Name::insert(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in name.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [sli/libsli.dylib] Error 1
make[1]: *** [sli/CMakeFiles/sli_lib.dir/all] Error 2
make: *** [all] Error 2
-----------------------------------------------------------
LEKSHMIS OPTION
When running your command, cmake worked fine, but make results in
clang: error: unsupported option '-fopenmp’
Also, I need the -Dwith-mpi=ON -Dwith-music=ON flags. If I set them, I get the familiar
-- Could NOT find MPI_C (missing: MPI_C_WORKS)
during cmake. This I can fix by using the g++-9 compiler. But then I get lots of errors during make. They start during Scanning dependencies of target nestkernel
and look like this:
In file included from /Users/staude/Projekte/RainerDunkel/SensoryNetwork/Skripte/snn/NEST/nest-simulator-2.18.0/nestkernel/source_table.h:35,
from /Users/staude/Projekte/RainerDunkel/SensoryNetwork/Skripte/snn/NEST/nest-simulator-2.18.0/nestkernel/connection_manager.h:42,
from /Users/staude/Projekte/RainerDunkel/SensoryNetwork/Skripte/snn/NEST/nest-simulator-2.18.0/nestkernel/kernel_manager.h:27,
from /Users/staude/Projekte/RainerDunkel/SensoryNetwork/Skripte/snn/NEST/nest-simulator-2.18.0/nestkernel/common_synapse_properties.cpp:27:
/Users/staude/Projekte/RainerDunkel/SensoryNetwork/Skripte/snn/NEST/nest-simulator-2.18.0/nestkernel/mpi_manager.h:313:3: error: 'MPI' does not name a type; did you mean 'M_PI'?
313 | MPI::Intracomm comm;
| ^~~
| M_PI
H Hans, Hi Benjamin,
Some months back, one of our colleague had some issues and we
fixed it with the following command:
cmake -DCMAKE_INSTALL_PREFIX:PATH=/../NEST/bld
-DCMAKE_C_COMPILER=gcc -DOpenMP_C_FLAGS="-fopenmp
-I/usr/local/opt/libomp/include" -DOpenMP_C_LIB_NAMES="omp"
-DOpenMP_omp_LIBRARY=/usr/local/opt/libomp
-DCMAKE_CXX_COMPILER=g++ -DOpenMP_CXX_FLAGS="-fopenmp
-I/usr/local/opt/libomp/include" -DOpenMP_CXX_LIB_NAMES="omp"
/../NEST/nest-simulator
Best regards,
Lekshmi
On 29.10.19 16:04, Hans Ekkehard
Plesser wrote:
Hi Benjamin,
This seems to be a deeper problem on OSX, see
Interestingly, it works for me on Mojave.
The quick-fix would be to build NEST with MPI but
without OpenMP using the Clang compiler.
With llvm and libomp from brew installed, the
following also works for me
cmake -E env LDFLAGS="-L/usr/local/opt/llvm/lib
-Wl,-rpath,/usr/local/opt/llvm/lib" \
cmake -DCMAKE_INSTALL_PREFIX:PATH=$PWD/install \
-DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang \
-DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ \
-Dwith-mpi=ON ../src
This builds NEST using the Clang compiler from
llvm with OpenMP and MPI support. The only problem is that
some Python tests crash, complaining about two different
OpenMP libraries imported (libomp and libiomp5, where the
latter comes from Anaconda's MKL library). One can (with a
certain risk of problems) set
KMP_DUPLICATE_LIB_OK=TRUE
which will make macOS ignore the duplicate
libraries. Tests then pass, but behavior may be unpredictable.
I also tried compiling with the Apple Clang,
configuring as
cmake -DCMAKE_INSTALL_PREFIX:PATH=$PWD/install \
-DOpenMP_CXX_FLAGS="-Xpreprocessor -fopenmp"
-DOpenMP_CXX_LIB_NAMES="omp" \
-DOpenMP_C_FLAGS="-Xpreprocessor -fopenmp"
-DOpenMP_C_LIB_NAMES="omp" \
-DOpenMP_omp_LIBRARY=/usr/local/lib/libomp.dylib \
-Dwith-mpi=ON ../src
Best,
Hans Ekkehard
--
Prof. Dr. Hans Ekkehard Plesser
Head, Data Science Section
Faculty of Science and Technology
Norwegian
University of Life
Sciences
PO Box 5003,
1432 Aas, Norway
Phone +47
6723 1560
Email hans.ekkehard.plesser@nmbu.no
Home http://arken.nmbu.no/~plesser
_______________________________________________
NEST Users mailing list -- users@nest-simulator.org
To unsubscribe send an email to users-leave@nest-simulator.org
--
Rajalekshmi Deepu
Simulation Lab Neuroscience
Division HPC in Neuroscience Phone: +49 2461 61 8945
Jülich Supercomputing Centre (JSC) E-mail: r.deepu@fz-juelich.de
Institute for Advanced Simulation http://www.fz-juelich.de/ias/jsc
Forschungszentrum Jülich GmbH