-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Initial commit for adding hipsparselt recipe * correct the style errors * remove master version
- Loading branch information
Showing
2 changed files
with
169 additions
and
0 deletions.
There are no files selected for viewing
92 changes: 92 additions & 0 deletions
92
...ltin/packages/hipsparselt/0001-update-llvm-path-add-hipsparse-include-dir-for-spack.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
From c0ffe6cb718325634c353dec2894ac90ad6ea5e4 Mon Sep 17 00:00:00 2001 | ||
From: sreenivasa murthy kolam <sreenivasamurthy.kolam@amd.com> | ||
Date: Wed, 8 May 2024 10:25:43 +0000 | ||
Subject: [PATCH] changes to find the llvm_path for spack and add | ||
hipsparse_include_dirs | ||
|
||
--- | ||
CMakeLists.txt | 2 +- | ||
clients/gtest/CMakeLists.txt | 1 + | ||
clients/samples/CMakeLists.txt | 4 ++++ | ||
library/CMakeLists.txt | 2 ++ | ||
library/src/CMakeLists.txt | 4 ++-- | ||
5 files changed, 10 insertions(+), 3 deletions(-) | ||
|
||
diff --git a/CMakeLists.txt b/CMakeLists.txt | ||
index 050826e..4cc2ee9 100644 | ||
--- a/CMakeLists.txt | ||
+++ b/CMakeLists.txt | ||
@@ -185,7 +185,7 @@ else() | ||
set( tensile_fork "ROCmSoftwarePlatform" CACHE STRING "Tensile fork to use" ) | ||
file (STRINGS "tensilelite_tag.txt" read_tensile_tag) | ||
set( tensile_tag ${read_tensile_tag} CACHE STRING "Tensile tag to download" ) | ||
- virtualenv_install("git+https://github.com/${tensile_fork}/hipBLASLt.git@${tensile_tag}#subdirectory=tensilelite") | ||
+ virtualenv_install("git+https://github.com/ROCm/hipBLASLt.git@spack-change-tensilelite#subdirectory=tensilelite") | ||
|
||
message (STATUS "using GIT Tensile fork=${tensile_fork} from branch=${tensile_tag}") | ||
endif() | ||
diff --git a/clients/gtest/CMakeLists.txt b/clients/gtest/CMakeLists.txt | ||
index 2057db0..6085133 100644 | ||
--- a/clients/gtest/CMakeLists.txt | ||
+++ b/clients/gtest/CMakeLists.txt | ||
@@ -53,6 +53,7 @@ target_include_directories( hipsparselt-test | ||
$<BUILD_INTERFACE:${BLAS_INCLUDE_DIR}> | ||
$<BUILD_INTERFACE:${BLIS_INCLUDE_DIR}> # may be blank if not used | ||
$<BUILD_INTERFACE:${GTEST_INCLUDE_DIRS}> | ||
+ $<BUILD_INTERFACE:${HIPSPARSE_INCLUDE_DIRS}> | ||
) | ||
message("BLIS_INCLUDE_DIR=" ${BLIS_INCLUDE_DIR}) | ||
target_link_libraries( hipsparselt-test PRIVATE ${BLAS_LIBRARY} ${GTEST_BOTH_LIBRARIES} roc::hipsparselt ) | ||
diff --git a/clients/samples/CMakeLists.txt b/clients/samples/CMakeLists.txt | ||
index 6b303d5..a06fdc2 100644 | ||
--- a/clients/samples/CMakeLists.txt | ||
+++ b/clients/samples/CMakeLists.txt | ||
@@ -50,6 +50,10 @@ foreach( exe ${sample_list_all} ) | ||
$<BUILD_INTERFACE:${HIP_INCLUDE_DIRS}> | ||
) | ||
|
||
+ target_include_directories( ${exe} | ||
+ SYSTEM PRIVATE | ||
+ $<BUILD_INTERFACE:${HIPSPARSE_INCLUDE_DIRS}> | ||
+ ) | ||
if( CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") | ||
# GCC or hip-clang needs specific flags to turn on f16c intrinsics | ||
target_compile_options( ${exe} PRIVATE -mf16c ) | ||
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt | ||
index aac8506..bc13d51 100644 | ||
--- a/library/CMakeLists.txt | ||
+++ b/library/CMakeLists.txt | ||
@@ -58,6 +58,8 @@ include(src/CMakeLists.txt) | ||
# Create hipSPARSELt library | ||
add_library(hipsparselt ${hipsparselt_source} ${hipsparselt_headers_public}) | ||
add_library(roc::hipsparselt ALIAS hipsparselt) | ||
+target_include_directories( hipsparselt PRIVATE ${HIPSPARSE_INCLUDE_DIRS} ) | ||
+target_include_directories( hipsparselt PRIVATE ${MSGPACK_DIR}/include ) | ||
|
||
# Target compile definitions | ||
if(NOT BUILD_CUDA) | ||
diff --git a/library/src/CMakeLists.txt b/library/src/CMakeLists.txt | ||
index 85f7cde..94d2274 100755 | ||
--- a/library/src/CMakeLists.txt | ||
+++ b/library/src/CMakeLists.txt | ||
@@ -61,7 +61,7 @@ if(NOT BUILD_CUDA) | ||
if(Tensile_CPU_THREADS MATCHES "^[0-9]+$") | ||
# only including threads argument if number | ||
TensileCreateLibraryFiles( | ||
- "${CMAKE_CURRENT_SOURCE_DIR}/src/hcc_detail/rocsparselt/src/spmm/Tensile/Logic/${Tensile_LOGIC}" | ||
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/hcc_detail/rocsparselt/src/spmm/Tensile/Logic" | ||
"${PROJECT_BINARY_DIR}/Tensile" | ||
ARCHITECTURE ${Tensile_ARCHITECTURE} | ||
CODE_OBJECT_VERSION ${Tensile_CODE_OBJECT_VERSION} | ||
@@ -72,7 +72,7 @@ if(NOT BUILD_CUDA) | ||
) | ||
else() | ||
TensileCreateLibraryFiles( | ||
- "${CMAKE_CURRENT_SOURCE_DIR}/src/hcc_detail/rocsparselt/src/spmm/Tensile/Logic/${Tensile_LOGIC}" | ||
+ "${CMAKE_CURRENT_SOURCE_DIR}/src/hcc_detail/rocsparselt/src/spmm/Tensile/Logic" | ||
"${PROJECT_BINARY_DIR}/Tensile" | ||
ARCHITECTURE ${Tensile_ARCHITECTURE} | ||
CODE_OBJECT_VERSION ${Tensile_CODE_OBJECT_VERSION} | ||
-- | ||
2.39.3 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other | ||
# Spack Project Developers. See the top-level COPYRIGHT file for details. | ||
# | ||
# SPDX-License-Identifier: (Apache-2.0 OR MIT) | ||
|
||
|
||
from spack.package import * | ||
|
||
|
||
class Hipsparselt(CMakePackage, ROCmPackage): | ||
"""hipSPARSELt is a SPARSE marshalling library, with multiple supported backends. | ||
It sits between the application and a 'worker' SPARSE library, marshalling inputs into | ||
the backend library and marshalling results back to the application. hipSPARSELt exports | ||
an interface that does not require the client to change, regardless of the chosen backend. | ||
Currently, hipSPARSELt supports rocSPARSELt and cuSPARSELt v0.4 as backends.""" | ||
|
||
homepage = "https://github.com/ROCm/hipsparselt" | ||
url = "https://github.com/ROCm/hipSPARSELt/archive/refs/tags/rocm-6.0.0.tar.gz" | ||
git = "https://github.com/ROCm/hipsparseLt.git" | ||
|
||
maintainers("srekolam", "afzpatel", "renjithravindrankannath") | ||
|
||
license("MIT") | ||
|
||
version("6.0.2", sha256="bdbceeae515f737131f0391ee3b7d2f7b655e3cf446e4303d93f083c59053587") | ||
version("6.0.0", sha256="cc4c7970601edbaa7f630b7ea24ae85beaeae466ef3e5ba63e11eab52465c157") | ||
|
||
amdgpu_targets = ROCmPackage.amdgpu_targets | ||
variant( | ||
"amdgpu_target", | ||
description="AMD GPU architecture", | ||
values=spack.variant.DisjointSetsOfValues(("auto",), ("none",), amdgpu_targets) | ||
.with_default("auto") | ||
.with_error( | ||
"the values 'auto' and 'none' are mutually exclusive with any of the other values" | ||
) | ||
.with_non_feature_values("auto", "none"), | ||
sticky=True, | ||
) | ||
variant("asan", default=False, description="Build with address-sanitizer enabled or disabled") | ||
|
||
for ver in ["6.0.0", "6.0.2"]: | ||
depends_on(f"hip@{ver}", when=f"@{ver}") | ||
depends_on(f"hipsparse@{ver}", when=f"@{ver}") | ||
depends_on(f"rocm-openmp-extras@{ver}", when=f"@{ver}", type="test") | ||
|
||
depends_on("cmake@3.5:", type="build") | ||
depends_on("msgpack-c@3:") | ||
depends_on("python@3.6:") | ||
depends_on("py-virtualenv") | ||
depends_on("py-wheel") | ||
depends_on("py-pip") | ||
depends_on("py-pyyaml", type="test") | ||
depends_on("py-joblib") | ||
depends_on("googletest@1.10.0:", type="test") | ||
|
||
patch("0001-update-llvm-path-add-hipsparse-include-dir-for-spack.patch", when="@6.0") | ||
|
||
def setup_build_environment(self, env): | ||
env.set("CXX", self.spec["hip"].hipcc) | ||
|
||
def cmake_args(self): | ||
args = [ | ||
self.define("Tensile_CODE_OBJECT_VERSION", "V3"), | ||
self.define("MSGPACK_DIR", self.spec["msgpack-c"].prefix), | ||
self.define_from_variant("BUILD_ADDRESS_SANITIZER", "asan"), | ||
self.define("BUILD_CLIENTS_TESTS", self.run_tests), | ||
self.define("BUILD_SHARED_LIBS", "ON"), | ||
self.define("BUILD_CLIENTS_SAMPLES", "OFF"), | ||
] | ||
if "auto" not in self.spec.variants["amdgpu_target"]: | ||
args.append(self.define_from_variant("AMDGPU_TARGETS", "amdgpu_target")) | ||
if self.run_tests: | ||
args.append( | ||
self.define("ROCM_OPENMP_EXTRAS_DIR", self.spec["rocm-openmp-extras"].prefix) | ||
) | ||
return args |