Bug: Build Fail while install with OneAPI 2025.0.0 and some add-on plugins in using toolchain
Describe the bug
I've test Intel toolchain installation performance with OneAPI 2025.0.0, found that:
- The dependencies installation by
toolchain_intel.shseems to have no problem - When build without rapidjson and LibRI (and with LibTorch), everything good.
- When build with rapidjson, build fail
[ 85%] Built target hamilt_pwdft
[ 85%] Building CXX object source/module_io/CMakeFiles/io_basic.dir/io_dmk.cpp.o
[ 86%] Building CXX object source/module_io/CMakeFiles/io_basic.dir/write_dmr.cpp.o
[ 86%] Building CXX object source/module_io/CMakeFiles/io_basic.dir/dos_nao.cpp.o
[ 86%] Building CXX object source/module_io/CMakeFiles/io_basic.dir/sparse_matrix.cpp.o
In file included from /opt/abacus/source/module_io/para_json.cpp:11:
In file included from /opt/abacus/source/module_io/json_output/abacusjson.h:12:
/opt/abacus/toolchain/install/rapidjson-1.1.0/include/rapidjson/document.h:319:82: error: cannot assign to non-static data member 'length' with const-qualified type 'const SizeType' (aka 'const unsigned int')
319 | GenericStringRef& operator=(const GenericStringRef& rhs) { s = rhs.s; length = rhs.length; }
| ~~~~~~ ^
/opt/abacus/toolchain/install/rapidjson-1.1.0/include/rapidjson/document.h:325:20: note: non-static data member 'length' declared const here
325 | const SizeType length; //!< length of the string (excluding the trailing NULL terminator)
| ~~~~~~~~~~~~~~~^~~~~~
- When build with LibRI and LibComm, build fail:
[ 9%] Building CXX object source/module_hamilt_pw/hamilt_stodft/CMakeFiles/hamilt_stodft.dir/sto_wf.cpp.o
[ 9%] Building CXX object source/module_base/module_container/CMakeFiles/container.dir/ATen/ops/einsum_op.cpp.o
[ 9%] Building CXX object source/module_hamilt_general/module_xc/CMakeFiles/xc_.dir/xc_functional_vxc.cpp.o
[ 9%] Building CXX object source/module_psi/CMakeFiles/psi_initializer.dir/psi_initializer_random.cpp.o
In file included from /opt/abacus/source/module_hamilt_lcao/hamilt_lcaodft/hamilt_lcao.cpp:1:
In file included from /opt/abacus/source/module_hamilt_lcao/hamilt_lcaodft/hamilt_lcao.h:15:
In file included from /opt/abacus/source/module_ri/Exx_LRI.h:13:
In file included from /opt/abacus/toolchain/install/LibRI-0.2.1.0/include/RI/physics/Exx.h:8:
In file included from /opt/abacus/toolchain/install/LibRI-0.2.1.0/include/RI/physics/Exx_Post_2D.h:58:
In file included from /opt/abacus/toolchain/install/LibRI-0.2.1.0/include/RI/physics/Exx_Post_2D.hpp:9:
In file included from /opt/abacus/toolchain/install/LibRI-0.2.1.0/include/RI/physics/../comm/mix/Communicate_Tensors_Map_Judge.h:8:
In file included from /opt/abacus/toolchain/install/LibRI-0.2.1.0/include/RI/physics/../comm/mix/Communicate_Tensors_Map.h:8:
In file included from /opt/abacus/toolchain/install/LibRI-0.2.1.0/include/RI/physics/../comm/mix/../../global/Cereal_Types.h:16:
/opt/abacus/toolchain/install/cereal-1.3.2/include/cereal/types/tuple.hpp:98:41: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
98 | serialize<Height - 1>::template apply( ar, tuple );
| ^
/opt/abacus/toolchain/install/cereal-1.3.2/include/cereal/types/tuple.hpp:119:85: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
119 | tuple_detail::serialize<std::tuple_size<std::tuple<Types...>>::value>::template apply( ar, tuple );
- Change
-DCMAKE_MPI_COMPILERfrommpiicpxtompiicpcwill have save results.
Expected behavior
ABACUS can be built with OneAPI 2025.0.0 by intel toolchain or other method with all plugin
To Reproduce
using c32_m64 machine in Bohrium by image ubuntu:20.04-py3.10
- Install Intel OneAPI HPCtoolkit by offline package
wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/0884ef13-20f3-41d3-baa2-362fc31de8eb/intel-oneapi-hpc-toolkit-2025.0.0.825_offline.sh
sudo sh ./intel-oneapi-hpc-toolkit-2025.0.0.825_offline.sh -a --silent --cli --eula accept
- load it by source setvars.sh
- git clone abacus-develop
- run
toolchain_intel.shin toolchain of newest abacus repo with all install option on - run
build_abacus_intel.shin toolchain of newest abacus repo with target option on
Environment
Mentioned above
Additional Context
No response
Task list for Issue attackers (only for developers)
- [ ] Verify the issue is not a duplicate.
- [ ] Describe the bug.
- [ ] Steps to reproduce.
- [ ] Expected behavior.
- [ ] Error message.
- [ ] Environment details.
- [ ] Additional context.
- [ ] Assign a priority level (low, medium, high, urgent).
- [ ] Assign the issue to a team member.
- [ ] Label the issue with relevant tags.
- [ ] Identify possible related issues.
- [ ] Create a unit test or automated test to reproduce the bug (if applicable).
- [ ] Fix the bug.
- [ ] Test the fix.
- [ ] Update documentation (if necessary).
- [ ] Close the issue and inform the reporter (if applicable).
@PeizeLin @pxlxingliang @caic99 Any comments ?
In Intel OneAPI 2024.0, there are no problems.
Hi @QuantumMisaka , for the rapidjson problem, please use the master branch of RapidJSON.
Compiling Cereal using OneAPI 2025 will raise an error, without LibRI, LibComm or ABACUS.
Compiling Cereal using OneAPI 2025 will raise an error, without LibRI, LibComm or ABACUS.
@PeizeLin Is this a problem only for CEREAL? Should we raise an issue in Cereal repo ?
Compiling Cereal using OneAPI 2025 will raise an error, without LibRI, LibComm or ABACUS.
@PeizeLin Is this a problem only for CEREAL? Should we raise an issue in Cereal repo ?
It has been fixed in the latest Intel OneAPI.
@kluophysics Thanks for your help! I'll learn and test your toolchain modification together with cereal in the latest intel OneAPI