diff --git a/var/spack/repos/builtin/packages/rocblas/0007-add-rocm-openmp-extras-include-dir.patch b/var/spack/repos/builtin/packages/rocblas/0007-add-rocm-openmp-extras-include-dir.patch new file mode 100644 index 00000000000..4e265011b16 --- /dev/null +++ b/var/spack/repos/builtin/packages/rocblas/0007-add-rocm-openmp-extras-include-dir.patch @@ -0,0 +1,20 @@ +diff --git a/clients/gtest/CMakeLists.txt b/clients/gtest/CMakeLists.txt +index 55e9bbe..32b350c 100644 +--- a/clients/gtest/CMakeLists.txt ++++ b/clients/gtest/CMakeLists.txt +@@ -164,6 +164,7 @@ target_include_directories( rocblas-test + $ + $ # may be blank if not used + $ ++ $ + ) + target_include_directories( rocblas_v3-test + SYSTEM PRIVATE +@@ -171,6 +172,7 @@ target_include_directories( rocblas_v3-test + $ + $ # may be blank if not used + $ ++ $ + ) + + if( BUILD_FORTRAN_CLIENTS ) diff --git a/var/spack/repos/builtin/packages/rocblas/package.py b/var/spack/repos/builtin/packages/rocblas/package.py index d352d1185f2..6072017b72a 100644 --- a/var/spack/repos/builtin/packages/rocblas/package.py +++ b/var/spack/repos/builtin/packages/rocblas/package.py @@ -140,12 +140,10 @@ class Rocblas(CMakePackage): depends_on("cmake@3.5:", type="build") depends_on("googletest@1.10.0:", type="test") - depends_on("netlib-lapack@3.7.1:", type="test") + depends_on("amdblis", type="test") - def check(self): - if "@4.2.0:" in self.spec: - exe = join_path(self.build_directory, "clients", "staging", "rocblas-test") - self.run_test(exe, options=["--gtest_filter=*quick*-*known_bug*"]) + for ver in ["5.6.0", "5.6.1", "5.7.0", "5.7.1"]: + depends_on("rocm-openmp-extras@" + ver, type="test", when="@" + ver) depends_on("hip@4.1.0:", when="@4.1.0:") depends_on("llvm-amdgpu@4.1.0:", type="build", when="@4.1.0:") @@ -258,6 +256,7 @@ def check(self): # Finding Python package and set command python as python3 patch("0004-Find-python.patch", when="@5.2.0:5.4") patch("0006-Guard-use-of-OpenMP-to-make-it-optional-5.4.patch", when="@5.4") + patch("0007-add-rocm-openmp-extras-include-dir.patch", when="@5.6:") def setup_build_environment(self, env): env.set("CXX", self.spec["hip"].hipcc) @@ -282,7 +281,17 @@ def cmake_args(self): self.define_from_variant("BUILD_WITH_TENSILE", "tensile"), ] if self.run_tests: - args.append(self.define("LINK_BLIS", "OFF")) + args.append(self.define("LINK_BLIS", "ON")) + if self.spec.satisfies("@5.6.0:"): + args.append( + self.define("ROCM_OPENMP_EXTRAS_DIR", self.spec["rocm-openmp-extras"].prefix) + ) + args.append( + self.define("BLIS_INCLUDE_DIR", self.spec["amdblis"].prefix + "/include/blis/") + ) + args.append( + self.define("BLAS_LIBRARY", self.spec["amdblis"].prefix + "/lib/libblis.a") + ) arch_define_name = "AMDGPU_TARGETS" if "+tensile" in self.spec: @@ -321,3 +330,9 @@ def cmake_args(self): args.append(self.define("Tensile_CODE_OBJECT_VERSION", "default")) return args + + @run_after("build") + @on_package_attributes(run_tests=True) + def check_build(self): + exe = Executable(join_path(self.build_directory, "clients", "staging", "rocblas-test")) + exe("--gtest_filter=*quick*-*known_bug*")