diff --git a/ci/.gitlab-ci.yml b/ci/.gitlab-ci.yml index 0204a001ee..b299ac75d9 100644 --- a/ci/.gitlab-ci.yml +++ b/ci/.gitlab-ci.yml @@ -1,19 +1,19 @@ include: - - local: 'ci/cpu/asan_ubsan_lsan.yml' + # - local: 'ci/cpu/asan_ubsan_lsan.yml' - local: 'ci/cpu/clang15_release_cxx20.yml' - local: 'ci/cpu/clang15_release_stdexec.yml' - local: 'ci/cpu/clang15_release.yml' - local: 'ci/cpu/clang16_release.yml' - local: 'ci/cpu/clang18_release.yml' - local: 'ci/cpu/gcc11_release_stdexec.yml' - - local: 'ci/cpu/gcc11_debug_stdexec.yml' + # - local: 'ci/cpu/gcc11_debug_stdexec.yml' - local: 'ci/cpu/gcc12_release_cxx20.yml' - - local: 'ci/cpu/gcc13_codecov.yml' + # - local: 'ci/cpu/gcc13_codecov.yml' - local: 'ci/cpu/gcc13_release.yml' - - local: 'ci/cuda/gcc11_release.yml' - - local: 'ci/cuda/gcc11_release_scalapack.yml' - - local: 'ci/cuda/gcc11_codecov.yml' - - local: 'ci/cuda/gcc11_debug_scalapack.yml' - - local: 'ci/cuda/gcc13_release_stdexec.yml' - - local: 'ci/rocm/clang14_release.yml' - - local: 'ci/rocm/clang14_release_stdexec.yml' + # - local: 'ci/cuda/gcc11_release.yml' + # - local: 'ci/cuda/gcc11_release_scalapack.yml' + # - local: 'ci/cuda/gcc11_codecov.yml' + # - local: 'ci/cuda/gcc11_debug_scalapack.yml' + # - local: 'ci/cuda/gcc13_release_stdexec.yml' + # - local: 'ci/rocm/clang14_release.yml' + # - local: 'ci/rocm/clang14_release_stdexec.yml' diff --git a/ci/ctest_to_gitlab.sh b/ci/ctest_to_gitlab.sh index cedf894f80..bb2465a7a7 100755 --- a/ci/ctest_to_gitlab.sh +++ b/ci/ctest_to_gitlab.sh @@ -61,7 +61,7 @@ JOB_TEMPLATE=" USE_MPI: 'YES' DISABLE_AFTER_SCRIPT: 'YES' DLAF_HDF5_TEST_OUTPUT_PATH: \$CI_PROJECT_DIR - script: mpi-ctest -L {{LABEL}} + script: mpi-ctest --timeout 300 --repeat-until-fail 50 -R test_multiplication_hermitian -L {{LABEL}} artifacts: paths: - codecov-reports/" @@ -100,7 +100,7 @@ JOB_TEMPLATE=" USE_MPI: 'YES' DISABLE_AFTER_SCRIPT: 'YES' DLAF_HDF5_TEST_OUTPUT_PATH: \$CI_PROJECT_DIR - script: mpi-ctest -L {{LABEL}}" + script: mpi-ctest --timeout 60 --repeat-until-fail 50 -R test_multiplication_hermitian -L {{LABEL}}" fi JOBS="" diff --git a/ci/docker/common.yaml b/ci/docker/common.yaml index 5ef667ae3c..690e2aef02 100644 --- a/ci/docker/common.yaml +++ b/ci/docker/common.yaml @@ -46,3 +46,6 @@ packages: # Force git as non-buildable to allow deprecated versions in environments # https://github.com/spack/spack/pull/30040 buildable: false + pika: + require: + - '@git.no-yield-async-rw-mutex=0.29.0' diff --git a/test/unit/multiplication/test_multiplication_hermitian.cpp b/test/unit/multiplication/test_multiplication_hermitian.cpp index 0f21eab622..73edc5cd49 100644 --- a/test/unit/multiplication/test_multiplication_hermitian.cpp +++ b/test/unit/multiplication/test_multiplication_hermitian.cpp @@ -99,8 +99,16 @@ void testHermitianMultiplication(const blas::Side side, const blas::Uplo uplo, c // SCOPED_TRACE cannot yield. mat_ch.waitLocalTiles(); SCOPED_TRACE(::testing::Message() << "m " << m << "n " << n << ", mb " << mb << ", nb " << nb); + auto t_before = pika::get_worker_thread_num(); CHECK_MATRIX_NEAR(res_c, mat_ch, 10 * (m + 1) * TypeUtilities::error, 10 * (m + 1) * TypeUtilities::error); + auto t_after = pika::get_worker_thread_num(); + if (t_before != t_after) { + std::cerr << "worker thread index changed from " << t_before << " to " << t_after << std::endl; + } + else { + std::cerr << "worker thread index is still " << t_before << std::endl; + } } template @@ -154,70 +162,79 @@ TYPED_TEST(HermitianMultiplicationTestMC, CorrectnessLocal) { if (side != blas::Side::Left || uplo != blas::Uplo::Lower) continue; for (const auto& [m, n, mb, nb] : sizes) { + std::cerr << "side: " << side; + std::cerr << ", uplo: " << uplo; + std::cerr << ", m: " << m; + std::cerr << ", n: " << n; + std::cerr << ", mb: " << mb; + std::cerr << ", nb: " << nb << std::endl; TypeParam alpha = TypeUtilities::element(-1.2, .7); TypeParam beta = TypeUtilities::element(1.12, -.1); testHermitianMultiplication(side, uplo, m, n, mb, nb, alpha, beta); + pika::wait(); + std::cerr << "done\n"; } } } } -TYPED_TEST(HermitianMultiplicationTestMC, CorrectnessDistributed) { - for (auto& comm_grid : this->commGrids()) { - for (const auto side : blas_sides) { - for (const auto uplo : blas_uplos) { - if (side != blas::Side::Left || uplo != blas::Uplo::Lower) - continue; - - for (const auto& [m, n, mb, nb] : sizes) { - TypeParam alpha = TypeUtilities::element(-1.2, .7); - TypeParam beta = TypeUtilities::element(1.12, -.1); - - testHermitianMultiplication(comm_grid, side, uplo, m, n, - mb, nb, alpha, beta); - pika::wait(); - } - } - } - } -} - -#ifdef DLAF_WITH_GPU -TYPED_TEST(HermitianMultiplicationTestGPU, CorrectnessLocal) { - for (const auto side : blas_sides) { - for (const auto uplo : blas_uplos) { - if (side != blas::Side::Left || uplo != blas::Uplo::Lower) - continue; - for (const auto& [m, n, mb, nb] : sizes) { - TypeParam alpha = TypeUtilities::element(-1.2, .7); - TypeParam beta = TypeUtilities::element(1.12, -.1); - - testHermitianMultiplication(side, uplo, m, n, mb, nb, - alpha, beta); - } - } - } -} - -TYPED_TEST(HermitianMultiplicationTestGPU, CorrectnessDistributed) { - for (auto& comm_grid : this->commGrids()) { - for (const auto side : blas_sides) { - for (const auto uplo : blas_uplos) { - if (side != blas::Side::Left || uplo != blas::Uplo::Lower) - continue; - - for (const auto& [m, n, mb, nb] : sizes) { - TypeParam alpha = TypeUtilities::element(-1.2, .7); - TypeParam beta = TypeUtilities::element(1.12, -.1); - - testHermitianMultiplication(comm_grid, side, uplo, m, n, - mb, nb, alpha, beta); - pika::wait(); - } - } - } - } -} -#endif +// TYPED_TEST(HermitianMultiplicationTestMC, CorrectnessDistributed) { +// for (auto& comm_grid : this->commGrids()) { +// for (const auto side : blas_sides) { +// for (const auto uplo : blas_uplos) { +// if (side != blas::Side::Left || uplo != blas::Uplo::Lower) +// continue; + +// for (const auto& [m, n, mb, nb] : sizes) { +// TypeParam alpha = TypeUtilities::element(-1.2, .7); +// TypeParam beta = TypeUtilities::element(1.12, -.1); + +// testHermitianMultiplication(comm_grid, side, uplo, m, n, +// mb, nb, alpha, beta); +// pika::wait(); +// } +// } +// } +// } +// } + +// #ifdef DLAF_WITH_GPU +// TYPED_TEST(HermitianMultiplicationTestGPU, CorrectnessLocal) { +// for (const auto side : blas_sides) { +// for (const auto uplo : blas_uplos) { +// if (side != blas::Side::Left || uplo != blas::Uplo::Lower) +// continue; +// for (const auto& [m, n, mb, nb] : sizes) { +// TypeParam alpha = TypeUtilities::element(-1.2, .7); +// TypeParam beta = TypeUtilities::element(1.12, -.1); + +// testHermitianMultiplication(side, uplo, m, n, mb, nb, +// alpha, beta); +// pika::wait(); +// } +// } +// } +// } + +// TYPED_TEST(HermitianMultiplicationTestGPU, CorrectnessDistributed) { +// for (auto& comm_grid : this->commGrids()) { +// for (const auto side : blas_sides) { +// for (const auto uplo : blas_uplos) { +// if (side != blas::Side::Left || uplo != blas::Uplo::Lower) +// continue; + +// for (const auto& [m, n, mb, nb] : sizes) { +// TypeParam alpha = TypeUtilities::element(-1.2, .7); +// TypeParam beta = TypeUtilities::element(1.12, -.1); + +// testHermitianMultiplication(comm_grid, side, uplo, m, n, +// mb, nb, alpha, beta); +// pika::wait(); +// } +// } +// } +// } +// } +// #endif