ornladios / ADIOS2

Next generation of ADIOS developed in the Exascale Computing Program
https://adios2.readthedocs.io/en/latest/index.html
Apache License 2.0
268 stars 125 forks source link

Errors during the execution of the command: make -j 16 #4321

Open SachinBM-CE opened 3 weeks ago

SachinBM-CE commented 3 weeks ago

The following errors pop up when make -j 16 command is executed. Please help me to tackle this and proceed with the installation.

[ 12%] Built target cmepoll
In file included from /mnt/c/clover/Library/include/hdf5.h:22,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/toolkit/interop/hdf5/HDF5Common.h:14,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/engine/hdf5/HDF5ReaderP.h:17,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/core/IOHDF5.cpp:10:
/mnt/c/clover/Library/include/H5public.h:247:19: error: conflicting declaration ‘typedef long long int ssize_t’
  247 | typedef long long ssize_t;
      |                   ^~~~~~~
In file included from /usr/include/stdlib.h:395,
                 from /usr/include/c++/11/cstdlib:75,
                 from /usr/include/c++/11/ext/string_conversions.h:41,
                 from /usr/include/c++/11/bits/basic_string.h:6608,
                 from /usr/include/c++/11/string:55,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/core/IO.h:17,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/core/IOHDF5.cpp:8:
/usr/include/x86_64-linux-gnu/sys/types.h:108:19: note: previous declaration as ‘typedef __ssize_t ssize_t’
  108 | typedef __ssize_t ssize_t;
      |                   ^~~~~~~
In file included from /mnt/c/clover/Library/include/hdf5.h:22,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/toolkit/interop/hdf5/HDF5Common.h:14,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/toolkit/interop/hdf5/HDF5Common.cpp:11:
/mnt/c/clover/Library/include/H5public.h:247:19: error: conflicting declaration ‘typedef long long int ssize_t’
  247 | typedef long long ssize_t;
      |                   ^~~~~~~
In file included from /mnt/c/clover/Library/include/H5public.h:38,
                 from /mnt/c/clover/Library/include/hdf5.h:22,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/toolkit/interop/hdf5/HDF5Common.h:14,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/toolkit/interop/hdf5/HDF5Common.cpp:11:
/usr/include/x86_64-linux-gnu/sys/types.h:108:19: note: previous declaration as ‘typedef __ssize_t ssize_t’
  108 | typedef __ssize_t ssize_t;
      |                   ^~~~~~~
[ 12%] Built target cmenet
make[2]: *** [source/adios2/CMakeFiles/adios2_hdf5.dir/build.make:76: source/adios2/CMakeFiles/adios2_hdf5.dir/core/IOHDF5.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /mnt/c/clover/Library/include/hdf5.h:22,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/toolkit/interop/hdf5/HDF5Common.h:14,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/engine/hdf5/HDF5ReaderP.h:17,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/engine/hdf5/HDF5ReaderP.cpp:11:
/mnt/c/clover/Library/include/H5public.h:247:19: error: conflicting declaration ‘typedef long long int ssize_t’
  247 | typedef long long ssize_t;
      |                   ^~~~~~~
In file included from /usr/include/stdlib.h:395,
                 from /usr/include/c++/11/cstdlib:75,
                 from /usr/include/c++/11/ext/string_conversions.h:41,
                 from /usr/include/c++/11/bits/basic_string.h:6608,
                 from /usr/include/c++/11/string:55,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/core/Engine.h:24,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/engine/hdf5/HDF5ReaderP.h:14,
                 from /home/sachinbm/relexi310/ADIOS2/source/adios2/engine/hdf5/HDF5ReaderP.cpp:11:
/usr/include/x86_64-linux-gnu/sys/types.h:108:19: note: previous declaration as ‘typedef __ssize_t ssize_t’
  108 | typedef __ssize_t ssize_t;
      |                   ^~~~~~~
make[2]: *** [source/adios2/CMakeFiles/adios2_hdf5.dir/build.make:104: source/adios2/CMakeFiles/adios2_hdf5.dir/engine/hdf5/HDF5WriterP.cpp.o] Error 1
[ 12%] Linking C shared library ../../../lib/libadios2_dill.so
[ 12%] Built target dill
make[2]: *** [source/adios2/CMakeFiles/adios2_hdf5.dir/build.make:118: source/adios2/CMakeFiles/adios2_hdf5.dir/toolkit/interop/hdf5/HDF5Common.cpp.o] Error 1
make[2]: *** [source/adios2/CMakeFiles/adios2_hdf5.dir/build.make:90: source/adios2/CMakeFiles/adios2_hdf5.dir/engine/hdf5/HDF5ReaderP.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:2181: source/adios2/CMakeFiles/adios2_hdf5.dir/all] Error 2
[ 12%] Built target adios2sys_objects
make: *** [Makefile:136: all] Error 2
eisenhauer commented 1 week ago

It'd be easier to sort these errors if you don't add a -j flag to make. That way it's more obvious what file these are coming from. It's not wildly unusual to see problems with ssize_t as it's definition tends to vary from system to system. Sharing the os and compiler might aid in pointing you in the right direction.

SachinBM-CE commented 1 week ago

Thank you !! I'm working on a WSL Ubuntu OS and using a gcc-11 compiler.

pnorbert commented 1 week ago

Something is not correct with your HDF5 installation, ssize_t is defined in H5public.h only if H5_SIZEOF_SSIZE_T == 0 This constant is defined in H5pubconf.h to be 8 on non __APPLE__ and 4 or 8 on Macs.

Did you build hdf5 and adios with the same compiler? Which version of hdf5 are you using?

pnorbert commented 1 week ago

Oh, missed the fact this is WSL. So your hdf5 seems to be picked up from Clover installed on Windows. You definitely need to point to a hdf5 install on the Ubuntu WSL.

HDF5_DIR=...your-path...
cmake ... -DCMAKE_PREFIX_PATH="${HDF5_DIR};..." ....
SachinBM-CE commented 1 week ago

Thank you. My HDF5 Version is 1.10.7

$ git clone https://github.com/ornladios/ADIOS2.git ADIOS2
$ mkdir adios2-build && cd adios2-build
$ HDF5_DIR=/usr/include/hdf5/serial
$ cmake ../ADIOS2 -DADIOS2_BUILD_EXAMPLES=ON -DCMAKE_PREFIX_PATH="${HDF5_DIR}"
$ make

Are these the correct commands to use now?

pnorbert commented 1 week ago

Yes, but only if you are building adios as a serial library. If you have MPI installed in this case, you have to force it off with -DADIOS2_USE_MPI=OFF. Otherwise, you need a parallel hdf5 installation.