diff --git a/ci/.gitlab-ci.yml b/ci/.gitlab-ci.yml index ca55102787..402bc3afbf 100644 --- a/ci/.gitlab-ci.yml +++ b/ci/.gitlab-ci.yml @@ -7,8 +7,9 @@ include: - local: 'ci/cpu/clang16_release.yml' - local: 'ci/cpu/gcc11_codecov.yml' - local: 'ci/cpu/gcc11_release.yml' - - local: 'ci/cpu/gcc11_release_stdexec.yml' - - local: 'ci/cpu/gcc11_debug_stdexec.yml' + # https://github.com/eth-cscs/DLA-Future/issues/1184 + # - local: 'ci/cpu/gcc11_release_stdexec.yml' + # - local: 'ci/cpu/gcc11_debug_stdexec.yml' - local: 'ci/cpu/gcc12_release_cxx20.yml' - local: 'ci/cuda/gcc11_release.yml' - local: 'ci/cuda/gcc11_release_scalapack.yml' diff --git a/ci/common-ci.yml b/ci/common-ci.yml index 3a9e6f5fa5..f71054bfb0 100644 --- a/ci/common-ci.yml +++ b/ci/common-ci.yml @@ -34,7 +34,7 @@ stages: reports: dotenv: build.env variables: - SPACK_SHA: 1184de8352281ce1b34a8f3f6b54d7fadc2b216a + SPACK_SHA: 0905edf592752742eb4ddab3a528d3aee8f92930 SPACK_DLAF_REPO: ./spack DOCKER_BUILD_ARGS: '[ "BASE_IMAGE", diff --git a/ci/docker/debug-cpu-stdexec.yaml b/ci/docker/debug-cpu-stdexec.yaml index 67783a6b9c..03578ac143 100644 --- a/ci/docker/debug-cpu-stdexec.yaml +++ b/ci/docker/debug-cpu-stdexec.yaml @@ -31,5 +31,5 @@ spack: - 'malloc=system' stdexec: require: - - '@git.nvhpc-23.09.rc4=main' + - '@git.8bc7c7f06fe39831dea6852407ebe7f6be8fa9fd=main' - 'build_type=Debug' diff --git a/ci/docker/debug-cuda-scalapack.yaml b/ci/docker/debug-cuda-scalapack.yaml index d0d173fd67..24d0785896 100644 --- a/ci/docker/debug-cuda-scalapack.yaml +++ b/ci/docker/debug-cuda-scalapack.yaml @@ -35,5 +35,6 @@ spack: - '+fortran' pika: require: + - '@0.19.1' - 'build_type=Debug' - 'malloc=system' diff --git a/ci/docker/release-cpu-stdexec.yaml b/ci/docker/release-cpu-stdexec.yaml index a37f06e56b..412b47530e 100644 --- a/ci/docker/release-cpu-stdexec.yaml +++ b/ci/docker/release-cpu-stdexec.yaml @@ -29,4 +29,4 @@ spack: - '+stdexec' stdexec: require: - - '@git.48c52df0f81c6151eecf4f39fa5eed2dc0216204=main' + - '@git.8bc7c7f06fe39831dea6852407ebe7f6be8fa9fd=main' diff --git a/ci/docker/release-rocm533-stdexec.yaml b/ci/docker/release-rocm533-stdexec.yaml index d7ff23cd0c..6008d85780 100644 --- a/ci/docker/release-rocm533-stdexec.yaml +++ b/ci/docker/release-rocm533-stdexec.yaml @@ -31,7 +31,7 @@ spack: - '+stdexec' stdexec: require: - - '@git.48c52df0f81c6151eecf4f39fa5eed2dc0216204=main' + - '@git.8bc7c7f06fe39831dea6852407ebe7f6be8fa9fd=main' blas: require:: openblas lapack: diff --git a/include/dlaf/tune.h b/include/dlaf/tune.h index 98bc0720a2..ddcbb97e77 100644 --- a/include/dlaf/tune.h +++ b/include/dlaf/tune.h @@ -13,8 +13,11 @@ #include #include +#include #include +#include +#include #include #include @@ -97,10 +100,14 @@ struct TuneParameters { // Some parameters require the pika runtime to be initialized since they depend on the number of // threads used by the runtime. We initialize them separately in the constructor after checking that // pika is initialized. +#if PIKA_VERSION_FULL >= 0x001600 // >= 0.22.0 + if (!pika::is_runtime_initialized()) { + std::cerr + << "[ERROR] Trying to initialize DLA-Future tune parameters but the pika runtime is not initialized. Make sure pika is initialized first.\n"; + std::terminate(); + } +#endif - // TODO: Check upfront whether pika has been initialized to be able to give a better error message. - // If pika has not been initialized getting the default thread pool will either trigger an assertion - // or a segfault. const auto default_pool_thread_count = pika::resource::get_thread_pool("default").get_os_thread_count(); red2band_panel_nworkers = std::max(1, default_pool_thread_count / 2); diff --git a/spack/packages/dla-future/package.py b/spack/packages/dla-future/package.py index 84320df74a..27c12ce65b 100644 --- a/spack/packages/dla-future/package.py +++ b/spack/packages/dla-future/package.py @@ -92,6 +92,7 @@ class DlaFuture(CMakePackage, CudaPackage, ROCmPackage): depends_on("pika@0.17:", when="@0.2.1") depends_on("pika@0.18:", when="@0.3") depends_on("pika@0.19.1:", when="@0.4.0:") + conflicts("^pika@0.28:", when="@:0.6") depends_on("pika-algorithms@0.1:", when="@:0.2") depends_on("pika +mpi") depends_on("pika +cuda", when="+cuda") diff --git a/src/init.cpp b/src/init.cpp index 9359e7a84d..876d4b1667 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -398,6 +398,10 @@ void initResourcePartitionerHandler(pika::resource::partitioner& rp, // Create a thread pool with a single core that we will use for all // communication related tasks rp.create_thread_pool("mpi", pika::resource::scheduling_policy::static_priority, mode); +#if PIKA_VERSION_FULL >= 0x001C00 // >= 0.28.0 + rp.add_resource(rp.sockets()[0].cores()[0].pus()[0], "mpi"); +#else rp.add_resource(rp.numa_domains()[0].cores()[0].pus()[0], "mpi"); +#endif } }