-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compile problems on Cori #603
Comments
Hi, thanks for opening an issue. module swap craype-haswell craype-mic-knl
module swap PrgEnv-intel PrgEnv-gnu
module load cmake/3.14.4
module load cray-hdf5-parallel
module load adios/1.13.1
export CRAYPE_LINK_TYPE=dynamic
git clone https://github.com/openPMD/openPMD-api.git
mkdir openPMD-api-build
cd openPMD-api-build
cmake ../openPMD-api -DopenPMD_USE_PYTHON=OFF -DCMAKE_INSTALL_PREFIX=../openPMD-install/ -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON -DCMAKE_INSTALL_RPATH='$ORIGIN'
cmake --build . --target install That said, I have verified performance with HDF5 vs. ADIOS1 in the past via PIConGPU on Titan and HZDR-local systems. Note: we are just getting starting with So if we can find any performance issues - please do not hesitate to report here! Open for contributions are, e.g. #578 and please use the latest Be aware: ADIOS2 support is brand new and unreleased, so maybe set also
Haha, that might be subtext with different words, but generally okay :D Where did you see me claiming that last time, in very mild and politically correct words? ICNSP/APS? ;) Looking forward to your results! cc @guj P.S.: The openPMD-api 0.10.0 release will get a request for a module out on Cori, which should be coming out within a month. |
Thanks for the quick and helpful answer. And please excuse the sass, I was grumpy after spending hours and getting nowhere.
did indeed build. On to the next steps... |
Sorry for that, should be more prominently in the Cori system docs. You are not the first one bitten by that: Modules you are using are build with Spack which sets And dynamic linking is "super new" for Cray systems, I mean it was introduced with 2012/13 on Titan, so why adopt such hot sw-level features so quickly, right? ;) That said: openPMD-api can be build fully static (including all dependencies) as long as ADIOS1 is not needed. ADIOS1 is itself split in two static libs (mpi/non-mpi) but does some sub-ideal MPI-mocking, which I work-around for usability with a shared-library wrapper. ornladios/ADIOS#183 That problem is solved in ADIOS2. Just so you know the background story. I always like background stories when I felt the pain... But hold for the plot twist: in Dec/2019 dynamic linking will be automatically enabled on Cori. |
Hi,
I am trying to compile openPMD on Cori to test performance of HDF5 and Adios2. (Based on boasting claims by Axel that I should throw away my own HDF5 code, because openPMD is easier and Adios2 is faster anyway).
Since spack is not available on this machine I decided to build from source and I checked out openPMD using `git clone https://github.com/openPMD/openPMD-api.git.
The set of module I have loaded is
`module list
Currently Loaded Modulefiles:
Note the presence of the adios2 and the hdf5-parallel modules.
I then ran
openPMD-api/build> cmake -DopenPMD_USE_ADIOS2=ON ..
which produced at the end (let me know if you need the intermediate part that I snipped here):
`openPMD build configuration:
library Version: 0.10.0
openPMD Standard: 1.1.0
C++ Compiler: Intel 19.0.0.20190206 CrayPrgEnv
/opt/cray/pe/craype/2.5.18/bin/CC
Installation prefix: /usr/local
bin: bin
lib: lib64
include: include
cmake: lib64/cmake/openPMD
python: lib64/python3.6/site-packages
Additionally, install following third party libraries:
MPark.Variant: ON
Build Type: Release
Library: static
Testing: ON
Invasive Tests: OFF
Internal VERIFY: ON
Build Options:
MPI: ON
HDF5: ON
ADIOS1: OFF
ADIOS2: ON
PYTHON: ON`
cmake --build .
made slow but steady progress until it hit[ 37%] Building CXX object CMakeFiles/openPMD.dir/src/IO/InvalidatableFile.cpp.o [ 38%] Linking CXX static library lib/libopenPMD.a [ 38%] Built target openPMD Scanning dependencies of target 7_extended_write_serial [ 39%] Building CXX object CMakeFiles/7_extended_write_serial.dir/examples/7_extended_write_serial.cpp.o [ 41%] Linking CXX executable bin/7_extended_write_serial /usr/bin/ld: attempted static link of dynamic object
/global/common/sw/cray/cnl7/haswell/adios2/2.4.0/intel/19.0.3.199/26fprnf/lib64/libadios2.so.2.4.0'gmake[2]: *** [CMakeFiles/7_extended_write_serial.dir/build.make:86: bin/7_extended_write_serial] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:73: CMakeFiles/7_extended_write_serial.dir/all] Error 2
gmake: *** [Makefile:141: all] Error 2`
why the hell is openPMD trying to build
Library: static
despite the documentation sayingBy default, this will build as a shared library
and why is it trying to staically link a dynamic object?The text was updated successfully, but these errors were encountered: