Closed prehensilecode closed 3 years ago
The fix seems to be to clear the value of MPI_C_COMPILE_OPTIONS
(i.e. delete -fopenmp
)
Just to make sure, in RELION 4.0, please use CMake variables, not environmental variables, as described in https://relion.readthedocs.io/en/release-4.0/Installation.html to specify compilers.
Just to make sure, in RELION 4.0, please use CMake variables, not environmental variables, as described in https://relion.readthedocs.io/en/release-4.0/Installation.html to specify compilers.
I used the ccmake TUI to set Cmake variables.
As for the "-fopenmp
" option: our Open MPI installation is built with OpenMP enabled, for hybrid MPI-OpenMP code. The Open MPI self-tests succeed. Another test is our build of GROMACS 2021.3 using Intel icc, Open MPI 4.1.0 with OpenMP, and CUDA 11.2 works: it successfully runs multi-node, multi-GPU, and multi-threaded.
Running ccmake
and then setting variables manually, and running cmake -D...
can lead to different results. Can you first make sure cmake -D...
also does not work? (Please delete your current build directory first)
Running
ccmake
and then setting variables manually, and runningcmake -D...
can lead to different results. Can you first make surecmake -D...
also does not work? (Please delete your current build directory first)
This issue has been resolved by editing the Cmake variable in ccmake
, which is why I closed it.
Why would using -D...
give a different result from defining the variable interactively, either in the GUI or TUI? The official documentation makes no such warning.
Why would using -D... give a different result from defining the variable interactively, either in the GUI or TUI? The official documentation makes no such warning.
The CMake script defines some variables depending on other variables. If you define a variable by -DXXX=YYY
, the script see the variable from the beginning and set other variables accordingly. If you don't use -D
, the script sees the default values first and then you modify some of the results. You can set the variable XXX
to YYY
afterwards, but you never know which other variables need to be changed to get the same effect as the first case.
Please do this for #826.
Environment:
I am trying to build Relion 4.0beta (see attached CMakeLists.txt): https://github.com/3dem/relion/tree/ver4.0
MPI-related environment variables set:
Cmake raises an error with MPI_C, but not with MPI_CXX:
However, it did successfully find and set
MPI_C_COMPILER
andMPI_C_COMPILER_INCLUDE_DIRS
and other related variables:I am pretty certain the OpenMPI installation works: the test suite succeeded when I ran it.
What can I do to help Cmake find MPI_C correctly?
Relion-4.0beta-CMakeLists.txt