Update to C++20, spack 1.2.0 and package updates#1912
Conversation
This reverts commit 86c04bc.
…equires openmp flags, guard old usage
…ave both mfem and caliper enabled
…orking, but requires two in-flight raja PRs
| #if defined(_MSC_VER) | ||
| #define SPARSEHASH_COMPILE_ASSERT(expr, msg) \ | ||
| typedef SparsehashCompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] | ||
| #else | ||
| #define SPARSEHASH_COMPILE_ASSERT(expr, msg) \ | ||
| __attribute__((unused)) typedef SparsehashCompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] | ||
| #endif |
There was a problem hiding this comment.
@kennyweiss I cherry-picked this change off of your Windows branch, was needed to get C++20 happy.
| #if defined(AXOM_USE_CUDA) | ||
| int host_allocator_id = axom::detail::getAllocatorID<MemorySpace::Host>(); | ||
| FlatMap host_map(*this, axom::Allocator {host_allocator_id}); | ||
| host_map.rehash(count); | ||
|
|
||
| FlatMap rehashed_device(host_map, m_allocator); | ||
| this->swap(rehashed_device); | ||
| return; | ||
| #elif defined(AXOM_USE_HIP) | ||
| #if !defined(AXOM_GPUCC) |
There was a problem hiding this comment.
I needed to switch this code to host due to the following unit test failures with CUDA builds:
The following tests FAILED:
44 - core_flatmap_serial (Subprocess aborted)
45 - core_flatmap_for_all_serial (Subprocess aborted)
44: [ RUN ] core_flatmap/1.copy_host_device
44: /usr/WS1/han12/axom_codex/src/axom/core/tests/core_flatmap.hpp:1144: Skipped
44: std::string is not supported in device-only memory on GCC's libstdc++
44:
44: [ SKIPPED ] core_flatmap/1.copy_host_device (0 ms)
45: [ RUN ] core_flatmap_for_all/2.insert_batched_with_existing
45: terminate called after throwing an instance of 'std::runtime_error'
45: what(): CUDA error: invalid resource handle cudaLaunchKernel(func=0x5555560a3740, gridDim={1,1,1}, blockDim={256,1,1}, args=0x7fffffff8b20, sharedMem=0, stream=0x15531391afe0) /usr/WS1/han12/axom_codex/uberenv_cuda_libs/llvm-19.1.3/raja-c3e4576eccff2435c358b691e4fcad4e601a7441_develop-nptremsbtvcio3z3nbjyulymqizsbpmb/include/RAJA/policy/cuda/MemUtils_CUDA.hpp:274
2/2 Test #45: core_flatmap_for_all_serial ......Subprocess aborted***Exception: 0.51 sec
There was a problem hiding this comment.
This should be fixed/addressed before merging.
We don't want to silently force our FlatMap::rehash() to be on host for CUDA.
There was a problem hiding this comment.
Interesting - reproducing this error does not require all of the changes of this branch.
It can be reproduced on develop by changing BLT_CXX_STD to c++20.
Lines 48 to 50 in 4839900
|
|
||
| const std::string g_name_animal("animal"); | ||
| const std::string g_animal_none("human"); | ||
| const std::string g_animal_cat("cat"); |
There was a problem hiding this comment.
C++20 unused change.
| const int ncurves = m_processed_curves_view.size(); | ||
| axom::Array<BoxType> aabbs(ncurves, ncurves); | ||
| auto aabbs_view = aabbs.view(); | ||
| const auto processed_curves_view = m_processed_curves_view; |
There was a problem hiding this comment.
C++20 lambda capture change
| from spack.package import * | ||
| from spack_repo.builtin.packages.cce.package import Cce as BuiltinCce | ||
|
|
||
| class Cce(BuiltinCce): |
There was a problem hiding this comment.
Associated spack-packages PR: spack/spack-packages#5468
| # Workaround for "gmake: *** internal error: invalid --jobserver-auth string": | ||
| # https://github.com/spack/spack-packages/issues/5106#issuecomment-4679593276 | ||
| depends_on("gmake", type="build") |
There was a problem hiding this comment.
Associated spack-packages PR: spack/spack-packages#5318
| "__comment__":"# Use amdgpu_target=gfx908 for rznevada", | ||
| "__comment__":"# -Wno-int-conversion flag needed for building HDF5", | ||
| "__comment__":"# caliper disabled for rocm@6.3.1, fails to compile", | ||
| "__comment__":"# caliper~shared required for mfem/caliper/mpi(?) to prevent rocprof runtime deadlock", |
There was a problem hiding this comment.
This was required to move to newer compilers + the newer mpi that the compilers required.
Without this change, I was observing runtime hangs when executables try to load in rocprofiler-sdk through caliper or mfem (yet, if I disabled one of either mfem or caliper during axom configuration, I don't see the hangs).
| # C++14 required as of 0.7.0 | ||
| conflicts("cxxstd=11", when="@0.7.0:") | ||
| # C++17 required as of 0.12.0 | ||
| conflicts("cxxstd=14", when="@0.12.0:") | ||
| # C++20 required as of unreleased 0.15.0 (Should be 0.15.0) | ||
| conflicts("cxxstd=17", when="@0.14.0:") |
There was a problem hiding this comment.
This logic will throw errors if you are using an older C++ standard configuration with the wrong axom version.
I pulled these versions from the release notes.
The C++17 requirement is set to 0.14.0 here for testing, but should be 0.15.0 for the upcoming release.
kennyweiss
left a comment
There was a problem hiding this comment.
Thanks @bmhan12 for this massive update.
The only parts I'm concerned about are:
- removing the
cpp14variant from our spack package. It needs to go away, but we might need to deprecate it for a bit, or at least cause it to give a reasonable error message before removing it outright. - Making
FlatMap::rehash()run w/ theSEQ(host) policy forCUDA
| # another project | ||
| if (NOT BLT_CXX_STD) | ||
| set(BLT_CXX_STD "c++17" CACHE STRING "") | ||
| set(BLT_CXX_STD "c++20" CACHE STRING "") |
| #if defined(AXOM_USE_CUDA) | ||
| int host_allocator_id = axom::detail::getAllocatorID<MemorySpace::Host>(); | ||
| FlatMap host_map(*this, axom::Allocator {host_allocator_id}); | ||
| host_map.rehash(count); | ||
|
|
||
| FlatMap rehashed_device(host_map, m_allocator); | ||
| this->swap(rehashed_device); | ||
| return; | ||
| #elif defined(AXOM_USE_HIP) | ||
| #if !defined(AXOM_GPUCC) |
There was a problem hiding this comment.
This should be fixed/addressed before merging.
We don't want to silently force our FlatMap::rehash() to be on host for CUDA.
| { | ||
| "name": "umpire", | ||
| "version-string": "2025.12.0", | ||
| "version-string": "develop-commit", |
There was a problem hiding this comment.
Is it a specific non-release commit b/c Umpire hasn't released yet?
If so, please add a comment that we're planning to update to release 2026.0?.* when it is available
| { | ||
| "name": "raja", | ||
| "version-string": "2025.12.0", | ||
| "version-string": "develop-commit", |
There was a problem hiding this comment.
Same question/comment as for the Umpire port about version.
| { | ||
| "name": "camp", | ||
| "version-string": "2025.12.0", | ||
| "version-string": "main-commit", |
There was a problem hiding this comment.
(same comment/question about version as for Umpire/RAJA)
| mfem: | ||
| require: | ||
| - spec: "@4.9" |
There was a problem hiding this comment.
mfem is getting ready to release mfem@4.10.
Since we're updating to pre-releases for camp, raja and umpire, can we also update to a prerelease of mfem?
The newer mfem has some improvements to 1D NURBS that are helpful for winding numbers, so it would be good to have that in our upcoming release.
| # Hard requirement after Axom 0.6.1 | ||
| variant("cpp14", default=True, description="Build with C++14 support") |
There was a problem hiding this comment.
Will removing this break anyone's build/workflow?
Would it be better to have it do nothing for a short amount of time, or to keep it here, but add an explicit error message so people know to remove it?
Another bump for deprecated variants in spack: spack/spack#38829
| name: Runs ${{ matrix.triplet }} ${{ matrix.cfg }} uberenv with vcpkg | ||
| # The type of runner that the job will run on | ||
| runs-on: windows-latest | ||
| runs-on: windows-2022 |
| #------------------------------------------------------------------------------ | ||
|
|
||
| set(CMAKE_PREFIX_PATH "/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/blt-0.7.1-2eahqqwjyauupjq3baxftq7kuv3pvdgp;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/c2c-1.8.0-oxqhr2ybswpnzt74f4iritx263ji3uqy;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/caliper-git.7e5b7a5c0eacc077f9b842abf41c9fc7b996ce0c_master-sos5uklbsgaycb776a2ufcyje4y24yls;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/conduit-0.9.5-cxdq4qnoptjq6lry5asb2bqodvm3zjig;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/lua-5.4.8-lsey5vgxvpqf5j3xbrlzswrizuwm65vh;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/mfem-4.9.0-xwok5jck2jjg76k4575wkzgyvgopipz2;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/py-nanobind-2.7.0-3nchqpyclgle5w56it23ozl4ttbnrfjd;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/none-none/py-pytest-9.0.0-dn2hwdtaqec2dkxtx7bnvykyxacfdagj;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/adiak-0.4.0-cbxp6kv6rm4f7oeczuhbplm3yb3zxb6z;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/libunwind-1.8.3-r4b3cptnf27zp34jbrdtlrf6r6dp6n4l;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/hdf5-1.8.23-wb7u6epuww3tretkcto7jhq2i7pffimg;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/parmetis-4.0.3-d6ed2qesb4yprvpetx3fso35rx6amf5b;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/py-mpi4py-4.1.1-kwpdge3wqmmxvxlocfdz4mgbc3zfihn6;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/py-numpy-2.4.2-t7cvohiksz7deeldwxrtqfmahcvanapb;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/hypre-2.27.0-pxqhlqwksiscco65tsz5somb4ctdq3q2;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/raja-git.3b8b59a1e9be2e1066c0d77372b3bf5956e6d6e2_develop-i5stpeet653njjadpjsekbvxlqkng2zn;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/umpire-2025.12.0-hpevb7stqsg6dltp3t2tcnzzps7tgywb;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/zlib-1.3.1-ijxa3tdiibemxtng46hrremmbytl2dqq;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/metis-5.1.0-mubwzuka5byhpbzmwaxjhtffhst3oj3q;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/camp-git.a8caefa9f4c811b1a114b4ed2c9b681d40f12325_main-j7my6ilwzwzvbaxzscbvishmj5mgyxnz;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/llvm-amdgpu-6.4.3/fmt-11.0.2-unmvs6vefcyfcfnzlie2eag5i2eib35d;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_04_22_11_38_29/none-none/compiler-wrapper-1.0-r533h4sr4uzpv32pv2w4ootpawmxmmgf;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/collab/usr/gapps/shroud/public/toss_4_x86_64_ib_cray/shroud-0.14.0;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/usr/tce/packages/cmake/cmake-3.29.2;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/gcc-13.3.1/cppcheck-2.18.0-n6kdcwtwlrc3u3t47t7gokpyd4h6mc27;/usr/tce/packages/cray-mpich-tce/cray-mpich-8.1.29-rocmcc-6.4.3;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/doxygen-1.15.0;/opt/rocm-6.4.3;/opt/rocm-6.4.3;/usr/tce/packages/rocmcc/rocmcc-6.4.3-magic/llvm;/opt/rocm-6.4.3;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/opt/rocm-6.4.3;/opt/rocm-6.4.3;/opt/rocm-6.4.3;/opt/rocm-6.4.3" CACHE STRING "") | ||
| set(CMAKE_PREFIX_PATH "/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/blt-0.7.2-fi7f3mxamqq44js7xbmnpu2xk4te75da;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/c2c-1.8.0-dv5ggyguvmw4xalzzpexufqsmvv646t6;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/caliper-git.7e5b7a5c0eacc077f9b842abf41c9fc7b996ce0c_master-cqtqav6iwrg3vqvujd377ygs4i5mk6ua;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/conduit-0.9.7-eyc3vrxbq7iasvyvtqf7luvnjjcfdwhj;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/lua-5.4.8-gzh3ylkvrwkcyegwxb4j47rjsqm7khl6;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/mfem-4.9.0-hdr4zw2h2pxdcw2vg3dskrxwzzhfcwhj;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/py-nanobind-2.12.0-dmnviatiwcoe2u4tqwb4m5dtzy2k2hvs;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/none-none/py-pytest-9.0.3-2suvy7b3lmshqhnbylnif2jz2735dbbe;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/adiak-0.5.0-juupsnv6gao5vckdx65vodr5isbt2w3i;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/libunwind-1.8.3-2mcjpbkdqvhxjo64yjl2ghdk2uvz374g;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/hdf5-1.8.23-b62qyycwsymkjttcujtzrj5mt2y67khv;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/parmetis-4.0.3-wnhslyv7bnqiueidwkmvjof7odloc6xd;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/py-mpi4py-4.1.1-zbu3rkawlulkaynkbal35q2dfq7a63r7;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/py-numpy-2.4.6-6beieyegdqtn32ex6mmqlpi5tukuzz7h;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/hypre-3.1.0-5jc6ubqvzucfld4prwv6ilvkspfy2fga;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/raja-git.6e4fe62d810711a0af9020d4e94c6c41c9a6117b_develop-cjz62wwi4yc2ipyua542r233xb324exk;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/umpire-git.f544027ef118133f1ecbc26e64c04ea77c3eb5ae_develop-c6iizeka2omkycs7ngwghv773nrspzl7;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/zlib-1.3.2-czlezml6nlt3eitzwqz7dxost6agewfj;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/metis-5.1.0-kexg6pguakcgo6sra67vpp3hgppocicb;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/camp-git.e75ab64c029aa27c80593715cb2a3ccad7453c8c_main-bntapsyjnuvbkmetoqruiuk2ejkpoj2e;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/llvm-amdgpu-6.4.3/fmt-12.1.0-po24stdzkwj4obatcqfus4uszhdbfd7m;/usr/WS1/axom/libs/toss_4_x86_64_ib_cray/2026_07_07_09_58_29/none-none/compiler-wrapper-1.1.0-qqipzhe4rz5fmoiuvlqgarjeevl2kzuh;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/collab/usr/gapps/shroud/public/toss_4_x86_64_ib_cray/shroud-0.14.0;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/usr/tce/packages/cmake/cmake-3.29.2;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/gcc-13.3.1/cppcheck-2.18.0-n6kdcwtwlrc3u3t47t7gokpyd4h6mc27;/usr/tce/packages/cray-mpich-tce/cray-mpich-8.1.29-rocmcc-6.4.3;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/doxygen-1.15.0;/opt/rocm-6.4.3;/opt/rocm-6.4.3;/usr/tce/packages/rocmcc/rocmcc-6.4.3-magic/llvm;/opt/rocm-6.4.3;/collab/usr/gapps/axom/devtools/toss_4_x86_64_ib_cray/2026_02_17_15_20_25/view/python-3.13.11;/opt/rocm-6.4.3;/opt/rocm-7.2.1;/opt/rocm-6.4.3;/opt/rocm-7.2.1;/opt/rocm-6.4.3" CACHE STRING "") |
There was a problem hiding this comment.
@white238 -- should we reconsider whether we really need the CMAKE_PREFIX_PATH/CMAKE_BUILD_RPATH/CMAKE_INSTALL_RPATH ? They add a lot of churn to TPL updates.
| #if defined(_MSC_VER) | ||
| #define SPARSEHASH_COMPILE_ASSERT(expr, msg) \ | ||
| typedef SparsehashCompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] | ||
| #else | ||
| #define SPARSEHASH_COMPILE_ASSERT(expr, msg) \ | ||
| __attribute__((unused)) typedef SparsehashCompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] | ||
| #endif |
|
Instead of removing the cpp14 variant, can't you just make it conflict with the version that requires c++17 and any version newer than it? |
This PR:
versions.yamlfor list of changes)spack-packages, axom should update these to release versions (these changes should also be mirrored for Windows vcpkg build).rocm 6.4.3(same),rocm 7.2.1,cce@21.0.0for toss 4 craycuda@13.1.1for toss 4Relates to #1855 (still require updated umpire/raja/camp releases)
Closes #1741