diff --git a/.github/workflows/rocm-build-ci.yml b/.github/workflows/rocm-build-ci.yml index de12f8ae5b..30ad92ae1f 100644 --- a/.github/workflows/rocm-build-ci.yml +++ b/.github/workflows/rocm-build-ci.yml @@ -1,13 +1,15 @@ name: rocm-build-ci -run-name: ${{ github.actor }} is kicking off a ROCm build on: pull_request jobs: rocm-build: runs-on: [self-hosted, amd] + strategy: + matrix: + rocm: [ 5.6.1, 5.7.2 ] steps: - uses: actions/checkout@v3 - run: | - export ROCM_PATH=/opt/rocm-5.5.0 + export ROCM_PATH=/opt/rocm-${{ matrix.rocm }} export PATH=${ROCM_PATH}/bin:${ROCM_PATH}/llvm/bin:${PATH} SRCROOT=`pwd` BUILDROOT=`mktemp -d build-XXXXXXXX` @@ -40,7 +42,7 @@ jobs: -DQUDA_DOWNLOAD_EIGEN=ON \ -DQUDA_PRECISION=14 \ -DCMAKE_INSTALL_PREFIX=${INSTALLROOT} \ - -DCMAKE_BUILD_TYPE="DEVEL" \ + -DCMAKE_BUILD_TYPE="STRICT" \ -DCMAKE_CXX_COMPILER="${ROCM_PATH}/llvm/bin/clang++" \ -DCMAKE_C_COMPILER="${ROCM_PATH}/llvm/bin/clang" \ -DCMAKE_HIP_COMPILER="${ROCM_PATH}/llvm/bin/clang++" \ diff --git a/lib/targets/hip/malloc.cpp b/lib/targets/hip/malloc.cpp index acda672d85..6fd0986b94 100644 --- a/lib/targets/hip/malloc.cpp +++ b/lib/targets/hip/malloc.cpp @@ -528,12 +528,15 @@ namespace quda errorQuda("hipPointerGetAttributes returned error: %s\n", hipGetErrorString(error)); } - switch (attr.memoryType) { + switch (attr.type) { +#if HIP_VERSION_MAJOR >= 6 + case hipMemoryTypeUnregistered: return QUDA_CPU_FIELD_LOCATION; +#endif // HIP_VERSION_MAJOR >= 6 case hipMemoryTypeHost: return QUDA_CPU_FIELD_LOCATION; case hipMemoryTypeDevice: return QUDA_CUDA_FIELD_LOCATION; case hipMemoryTypeArray: return QUDA_CUDA_FIELD_LOCATION; case hipMemoryTypeUnified: return QUDA_CUDA_FIELD_LOCATION; ///< Not used currently - default: errorQuda("Unknown memory type %d\n", attr.memoryType); return QUDA_INVALID_FIELD_LOCATION; + default: errorQuda("Unknown memory type %d\n", attr.type); return QUDA_INVALID_FIELD_LOCATION; } } diff --git a/tests/invert_test_gtest.hpp b/tests/invert_test_gtest.hpp index 74866dbcd7..fbbf6aebe0 100644 --- a/tests/invert_test_gtest.hpp +++ b/tests/invert_test_gtest.hpp @@ -1,5 +1,6 @@ #include #include +#include // tuple containing parameters for Schwarz solver using schwarz_t = ::testing::tuple; @@ -136,6 +137,12 @@ TEST_P(InvertTest, verify) if (res_t & QUDA_HEAVY_QUARK_RESIDUAL) inv_param.tol_hq = tol_hq; auto tol = inv_param.tol; + if (inv_param.dslash_type == QUDA_DOMAIN_WALL_DSLASH || + inv_param.dslash_type == QUDA_DOMAIN_WALL_4D_DSLASH || + inv_param.dslash_type == QUDA_MOBIUS_DWF_DSLASH || + inv_param.dslash_type == QUDA_MOBIUS_DWF_EOFA_DSLASH) { + tol *= std::sqrt(static_cast(inv_param.Ls)); + } // FIXME eventually we should build in refinement to the *NR solvers to remove the need for this if (is_normal_residual(::testing::get<0>(GetParam()))) tol *= 50; // Slight loss of precision possible when reconstructing full solution