BioDynaMo / biodynamo

BioDynaMo is a high-performance and modular, agent-based simulation platform.
Apache License 2.0
101 stars 46 forks source link

Installation Error #267

Closed dadanhan closed 2 years ago

dadanhan commented 2 years ago

Hi! I'm trying to install BioDynaMo, I have installed all the prerequisites and I run

curl https://biodynamo.org/install | bash

and it seems to run fine. However, when it gets to

[95%] Generating notebook/ST07-multi-scale-simulation.html

an error is produced

Traceback (most recent call last):
  File "/opt/homebrew/lib/python3.9/site-packages/traitlets/traitlets.py", line 642, in get
    value = obj._trait_values[self.name]
KeyError: 'template_paths'

After this a whole bunch of errors are produced and then it continues to

[ 97%] Built target biodynamo-benchmark

and fails again with the message:

make: *** [all] Error 2
Something went wrong with the installation. For more details check the log file: /var/folders/0h/j3plkqs17nd4qr_pfg53_jnc0000gp/T/tmp.bZ8m522E/biodynamo/installation.log

I have no idea what is going wrong... Could you please help with this? I really need to install BioDynaMo asap!

Best, Dan

LukasBreitwieser commented 2 years ago

Hi Dan,

Seems like the jupyter notebook installation on your system is broken.

If you don’t need the notebook feature, you can turn it off.

export BDM_CMAKE_FLAGS="-Dnotebooks=off"
curl https://biodynamo.org/install | bash

Found the following jupyter github issue that might be related: https://github.com/jupyter/nbconvert/issues/1437

Best, Lukas

dadanhan commented 2 years ago

Hi Lukas, Thank you for this. Now I get the error:

CMake Error at CMakeLists.txt:215 (MESSAGE):
  We did not find any OpenMPI installation.  Please run ./prerequisites.sh
  again before

    calling cmake. The OpenMPI library is required in order to successfully use BioDynaMo.

But I definitely have openmpi built from source. And it is located in /usr/local/bin which is also on my environment PATH. Is there also a BDM_CMAKE_FLAGS for specifying the location of openmpi? Best, Dan

LukasBreitwieser commented 2 years ago

Hi Dan,

Sorry to hear that you ran into another issue! We look for the C and CXX components of MPI. Is one of them missing in your MPI build?

Here’s the line in our code that looks for MPI: https://github.com/BioDynaMo/biodynamo/blob/master/CMakeLists.txt#L209 The FindMPI.cmake file that defines the search is provided by the cmake installation.

I’d recommend to de-install your build and use brew to install open-mpi.

Lukas

dadanhan commented 2 years ago

Hi Lukas, Thanks so much for your help. I've sorted the installation out now. For the record, I had an installation of mpi from source, a conda installation of mpi and a homebrew installation of mpi. Once I removed the conda installation, everything worked great. Best, Dan

dadanhan commented 2 years ago

Hi Lukas, I'm sorry to bother you again but after installation I am experiencing some issues again from MPI. So when I install BioDynaMo using

export BDM_CMAKE_FLAGS="-Dnotebooks=off"
curl https://biodynamo.org/install | bash

I get alot of output but the ones related to MPI is:

-- Found MPI_C: /opt/homebrew/Cellar/open-mpi/4.1.3/lib/libmpi.dylib (found version "3.1") 
-- Found MPI_CXX: /opt/homebrew/Cellar/open-mpi/4.1.3/lib/libmpi.dylib (found version "3.1") 
-- Found MPI: TRUE (found version "3.1") found components: C CXX 
-- Found OpenMP_C: -Xclang -fopenmp (found version "5.0") 
-- Found OpenMP_CXX: -Xclang -fopenmp (found version "5.0") 
-- Found OpenMP: TRUE (found version "5.0")  

and also:

- OpenMP features: disabled
  - optimization flags:
    -O3 -ffp-contract=fast -flto -DARMA_NO_DEBUG

The installation completes successfully and I get:

Installation of BioDynaMo finished successfully!

with the additional instructions on execution and notes. However, when I go into BioDynaMo and try to run a demo with (following the tutorial):

biodynamo demo diffusion .
cd diffusion
biodynamo run

I get the following error message.

-- The C compiler identification is AppleClang 13.1.6.13160021
-- The CXX compiler identification is AppleClang 13.1.6.13160021
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Could NOT find MPI_CXX (missing: MPI_CXX_WORKS) 
-- Could NOT find MPI (missing: MPI_CXX_FOUND CXX) 
CMake Error at /Users/dhan/biodynamo-v1.02.0/share/cmake/UseBioDynaMo.cmake:153 (MESSAGE):
  We did not find any OpenMPI installation.  Please run ./prerequisites.sh
  again before

    calling cmake. The OpenMPI library is required in order to successfully use BioDynaMo.
Call Stack (most recent call first):
  CMakeLists.txt:20 (include)

-- Configuring incomplete, errors occurred!
See also "/Users/dhan/diffusion/build/CMakeFiles/CMakeOutput.log".
See also "/Users/dhan/diffusion/build/CMakeFiles/CMakeError.log".
<bdm build> Received the CMake return code 1.

Could you please help! For reference, I'm using macOS Monterey 12.3 and homebrew 3.4.11, let me know if you need further information about other software versions. Dan

LukasBreitwieser commented 2 years ago

Hi Dan,

Try the following commands to find out where cmake looks for MPI.

# assuming that you are in the diffusion directory
bdm clean
cd build
cmake --debug-find ..

What does the output say about MPI?

Lukas

dadanhan commented 2 years ago

Hi Lukas, sorry for the delay. Here is some of the output for the MPI I get. Please let me know if you want me to give you the full output. (I'd prefer to give it to you via email)

CMake Debug Log at /opt/homebrew/Cellar/cmake/3.23.1_1/share/cmake/Modules/FindMPI.cmake:1359 (find_program):
  find_program called with the following settings:

    VAR: MPIEXEC_EXECUTABLE
    NAMES: "mpiexec"
           "mpiexec.hydra"
           "mpiexec.mpd"
           "mpirun"
           "lamexec"
           "srun"
    Documentation: Executable for running MPI programs.
    Framework
      Only Search Frameworks: 0
      Search Frameworks Last: 0
      Search Frameworks First: 1
    AppBundle
      Only Search AppBundle: 0
      Search AppBundle Last: 0
      Search AppBundle First: 1
    CMAKE_FIND_USE_CMAKE_PATH: 1
    CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: 1
    CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: 1
    CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: 1

  find_program considered the following locations:

    /Users/dhan/root_install/bin/bin/mpiexec
    /Users/dhan/root_install/bin/sbin/mpiexec
    /Users/dhan/root_install/bin/mpiexec
    /Users/dhan/root_install/sbin/bin/mpiexec
    /Users/dhan/root_install/sbin/sbin/mpiexec
    /Users/dhan/root_install/sbin/mpiexec
    /Users/dhan/root_install/bin/mpiexec
    /Users/dhan/root_install/sbin/mpiexec
    /Users/dhan/root_install/mpiexec
    /Users/dhan/biodynamo-v1.02.0/share/cmake/bin/bin/mpiexec
    /Users/dhan/biodynamo-v1.02.0/share/cmake/bin/sbin/mpiexec
    /Users/dhan/biodynamo-v1.02.0/share/cmake/bin/mpiexec
    /Users/dhan/biodynamo-v1.02.0/share/cmake/sbin/bin/mpiexec
    /Users/dhan/biodynamo-v1.02.0/share/cmake/sbin/sbin/mpiexec
    /Users/dhan/biodynamo-v1.02.0/share/cmake/sbin/mpiexec
    /Users/dhan/biodynamo-v1.02.0/share/cmake/bin/mpiexec
    /Users/dhan/biodynamo-v1.02.0/share/cmake/sbin/mpiexec
    /Users/dhan/biodynamo-v1.02.0/share/cmake/mpiexec
    /Users/dhan/root_install/bin/bin/mpiexec
    /Users/dhan/root_install/bin/sbin/mpiexec
    /Users/dhan/root_install/bin/mpiexec
    /Users/dhan/biodynamo-v1.02.0/bin/bin/mpiexec
    /Users/dhan/biodynamo-v1.02.0/bin/sbin/mpiexec
    /Users/dhan/biodynamo-v1.02.0/bin/mpiexec
    /Users/dhan/opt/anaconda3/bin/bin/mpiexec
    /Users/dhan/opt/anaconda3/bin/sbin/mpiexec
    /Users/dhan/opt/anaconda3/bin/mpiexec
    /Users/dhan/opt/anaconda3/condabin/bin/mpiexec
    /Users/dhan/opt/anaconda3/condabin/sbin/mpiexec
    /Users/dhan/opt/anaconda3/condabin/mpiexec
    /Applications/NEURON/bin/bin/mpiexec
    /Applications/NEURON/bin/sbin/mpiexec
    /Applications/NEURON/bin/mpiexec
    /opt/homebrew/bin/bin/mpiexec
    /opt/homebrew/bin/sbin/mpiexec

  The item was found at

    /opt/homebrew/bin/mpiexec

Call Stack (most recent call first):
  /Users/dhan/biodynamo-v1.02.0/share/cmake/UseBioDynaMo.cmake:147 (find_package)
  CMakeLists.txt:20 (include)

CMake Debug Log at /opt/homebrew/Cellar/cmake/3.23.1_1/share/cmake/Modules/FindMPI.cmake:1510 (find_program):
  find_program called with the following settings:

    VAR: MPI_CXX_COMPILER
    NAMES: "mpicxx"
           "mpiCC"
           "mpcxx"
           "mpCC"
           "mpic++"
           "mpc++"
           "mpicxx_r"
           "mpiCC_r"
           "mpcxx_r"
           "mpCC_r"
           "mpic++_r"
           "mpc++_r"
    Documentation: MPI compiler for CXX
    Framework
      Only Search Frameworks: 0
      Search Frameworks Last: 0
      Search Frameworks First: 1
    AppBundle
      Only Search AppBundle: 0
      Search AppBundle Last: 0
      Search AppBundle First: 1
    NO_DEFAULT_PATH Enabled

  find_program considered the following locations:

  The item was found at

    /opt/homebrew/bin/mpicxx

Call Stack (most recent call first):
  /Users/dhan/biodynamo-v1.02.0/share/cmake/UseBioDynaMo.cmake:147 (find_package)
  CMakeLists.txt:20 (include)

and

CMake Debug Log at /opt/homebrew/Cellar/cmake/3.23.1_1/share/cmake/Modules/FindMPI.cmake:825 (find_library):
  find_library called with the following settings:

    VAR: MPI_mpi_LIBRARY
    NAMES: "mpi"
           "libmpi"
    Documentation: Location of the mpi library for MPI
    Framework
      Only Search Frameworks: 0
      Search Frameworks Last: 0
      Search Frameworks First: 1
    AppBundle
      Only Search AppBundle: 0
      Search AppBundle Last: 0
      Search AppBundle First: 1
    CMAKE_FIND_USE_CMAKE_PATH: 1
    CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: 1
    CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: 1
    CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: 1

  find_library considered the following locations:

    /Users/dhan/root_install/lib/(lib)mpi(\.tbd|\.dylib|\.so|\.a)
    /Users/dhan/root_install/(lib)mpi(\.tbd|\.dylib|\.so|\.a)
    /Users/dhan/biodynamo-v1.02.0/share/cmake/(lib)mpi(\.tbd|\.dylib|\.so|\.a)

  The item was found at

    /opt/homebrew/Cellar/open-mpi/4.1.3/lib/libmpi.dylib

Call Stack (most recent call first):
  /opt/homebrew/Cellar/cmake/3.23.1_1/share/cmake/Modules/FindMPI.cmake:1546 (_MPI_interrogate_compiler)
  /Users/dhan/biodynamo-v1.02.0/share/cmake/UseBioDynaMo.cmake:147 (find_package)
  CMakeLists.txt:20 (include)

CMake Debug Log at /opt/homebrew/Cellar/cmake/3.23.1_1/share/cmake/Modules/FindMPI.cmake:1155 (find_path):
  find_path called with the following settings:

    VAR: MPI_CXX_HEADER_DIR
    NAMES: "mpi.h"
    Documentation: Path to a file.
    Framework
      Only Search Frameworks: 0
      Search Frameworks Last: 0
      Search Frameworks First: 1
    AppBundle
      Only Search AppBundle: 0
      Search AppBundle Last: 0
      Search AppBundle First: 1
    CMAKE_FIND_USE_CMAKE_PATH: 1
    CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: 1
    CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: 1
    CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: 1

  find_path considered the following locations:

    /Users/dhan/root_install/include/mpi.h
    /Users/dhan/root_install/mpi.h
    /Users/dhan/biodynamo-v1.02.0/share/cmake/include/mpi.h
    /Users/dhan/biodynamo-v1.02.0/share/cmake/mpi.h

  The item was found at

    /opt/homebrew/Cellar/open-mpi/4.1.3/include/mpi.h

Call Stack (most recent call first):
  /opt/homebrew/Cellar/cmake/3.23.1_1/share/cmake/Modules/FindMPI.cmake:1627 (_MPI_split_include_dirs)
  /Users/dhan/biodynamo-v1.02.0/share/cmake/UseBioDynaMo.cmake:147 (find_package)
  CMakeLists.txt:20 (include)

-- Found MPI_CXX: /opt/homebrew/Cellar/open-mpi/4.1.3/lib/libmpi.dylib (found version "3.1") 
-- Found MPI: TRUE (found version "3.1") found components: CXX 
CMake Debug Log at /Users/dhan/biodynamo-v1.02.0/share/cmake/UseBioDynaMo.cmake:147 (find_package):
  find_package considered the following paths for FindMPI.cmake:

    /Users/dhan/biodynamo-v1.02.0/share/cmake/FindMPI.cmake
    /Users/dhan/biodynamo-v1.02.0/biodynamo/cmake/FindMPI.cmake

  The file was found at

    /opt/homebrew/Cellar/cmake/3.23.1_1/share/cmake/Modules/FindMPI.cmake

Call Stack (most recent call first):
  CMakeLists.txt:20 (include)
dadanhan commented 2 years ago

And now miraculously biodynamo run has worked. Any ideas why this works now?

LukasBreitwieser commented 2 years ago

Glad to hear it works now. Probably the bdm clean did the trick. I will close this issue now, but please feel free to reopen or create a new one if you have a problem again.