ornladios / ADIOS2-Examples

Application examples for the ADIOS2 I/O library https://github.com/ornladios/ADIOS2. This is Work in Progress.
Apache License 2.0
20 stars 16 forks source link

Could not find ADIOS2: missing: MPI #71

Open a519678685 opened 1 year ago

a519678685 commented 1 year ago

I'm following the guide at 'https://www.exascaleproject.org/wp-content/uploads/2021/02/ADIOS_tutorial_ECP_AHM_Apr2021_full.pdf', trying to run gray-scott simulation and facing a problem while 'cmake -DCMAKE_PREFIX_PATH=/home/adios/Tutorial -DADIOS2_DIR=/opt/adios2 -DCMAKE_BUILD_TYPE=RelWithDebInfo ..'

Here is the error, `CMake Error at /home/rin/ulocal/install/cmake/share/cmake-3.25/Modules/FindPackageHandleStandardArgs.cmake:230 (message): Could NOT find ADIOS2: missing: MPI (found /home/rin/ulocal/install/python/Conda/envs/adios2/lib/cmake/adios2/adios2-config.cmake (found suitable version "2.8.3", minimum required is "2.7.1")) Call Stack (most recent call first): /home/rin/ulocal/install/cmake/share/cmake-3.25/Modules/FindPackageHandleStandardArgs.cmake:243 (_FPHSA_FAILURE_MESSAGE) /home/rin/ulocal/install/cmake/share/cmake-3.25/Modules/FindPackageHandleStandardArgs.cmake:585 (_FPHSA_HANDLE_FAILURE_CONFIG_MODE) /home/rin/ulocal/install/python/Conda/envs/adios2/lib/cmake/adios2/adios2-config-common.cmake:173 (find_package_handle_standard_args) /home/rin/ulocal/install/python/Conda/envs/adios2/lib/cmake/adios2/adios2-config.cmake:29 (include) CMakeLists.txt:67 (find_package)

-- Configuring incomplete, errors occurred! See also "/home/rin/ADIOS2-Examples/build/CMakeFiles/CMakeOutput.log". See also "/home/rin/ADIOS2-Examples/CMakeFiles/CMakeError.log".`

It is tested remotely on a cluster, cluster administrator doesn't provide OpenMPI, so OpenMPI version of 4.1.4 is installed and the path is exported as well. OS is Ubuntu 22.04.1 LTS. ADIOS2 of version 2.8.3 is installed through Anaconda and confirmed connected to the library. cmake --version is 3.25. Any help would be greatly appreciated.

williamfgc commented 1 year ago

ADIOS2 of version 2.8.3 is installed through Anaconda and confirmed connected to the library.

Check if the installed variant has MPI support. Another option is to provide a ADIOS2 compiled version from source using MPI.

a519678685 commented 1 year ago

Thank you for your advices.

Check if the installed variant has MPI support.

I hope I understood it correctly, mpirun/mpiexec/mpicc is executable and installed under the activated Anaconda environment. I tried other versions of ADIOS2 (2.7.0, 2.8.0 in specific) just in case, but don't work.

Another option is to provide a ADIOS2 compiled version from source using MPI.

Sorry, but I don't really understand this part. Is it possible to give a detailed explanation?

williamfgc commented 1 year ago

ADIOS2 has several configuration options for compilation. For this case, it needs to build with MPI. You can get a MPI variant from conda or build from source with MPI turned on as in the docs. Hope the docs help for a detailed explanation.

a519678685 commented 1 year ago

ADIOS2 has several configuration options for compilation. For this case, it needs to build with MPI.

I understand the meaning now. Checked from adios2-config --mpi, the following shows up: (adios2) ~/ADIOS2-Examples/build$ adios2-config --mpi ADIOS2 was not built with MPI support: --mpi not supported If I understood correctly, to turn on mpi support, -DADIOS2_USE_MPI=ON shall be set in the case of CMake.

You can get a MPI variant from conda or build from source with MPI turned on as in the docs. Hope the docs help for a detailed explanation.

I tried and faced some problems while building the variant.

Testing on the personal virtual machine, with the same error happened, the problem can be solved following the installation instruction of CMake after install in the docs. After setting -DADIOS2_USE_MPI=ON, make, and install, activate the ADIOS2 environment in Anaconda can successfully execute cmake -DCMAKE_PREFIX_PATH=/home/adios/Tutorial -DADIOS2_DIR=/opt/adios2 -DCMAKE_BUILD_TYPE=RelWithDebInfo ..

But, in my case, I have no administrative privileges, making install difficult. This also makes building ADIOS2 without Anaconda difficult. Is there a way to build through Anaconda, or by adjusting files, to compile and create an MPI variant?

a519678685 commented 1 year ago

Also, building up gray-scott in the environment that has administrative privileges, errors happened. I am not very familiar with CMake, so perhaps I have misdone it.

After make install in guidance, files are supposed to be built in /home/adios/Tutorial Then, by exporting the path of the bin under Tutorial, and heading to /home/adios/Tutorial/share/adios2-examples/gray-scott, then we can run the test. However, no Tutorial folder is created.

Just for testing, may not help, but I also ran mpirun -n 4 adios2-gray-scott settings-files.json where adios2-gray-scott is from bin under /home/adios/adios2-examples/build/bin and got errors as belows.

https://gist.github.com/a519678685/97dc45226d0226a37bf8de45a382c604