Skip to content

Commit 87d4bda

Browse files
authored
adding new rpp package (#38942)
* initial commit for adding new rpp package * fix styling
1 parent 36394aa commit 87d4bda

File tree

4 files changed

+189
-0
lines changed

4 files changed

+189
-0
lines changed

var/spack/repos/builtin/packages/half/package.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,5 @@ class Half(Package):
2828
def install(self, spec, prefix):
2929
mkdirp(prefix.include)
3030
install_tree("include", prefix.include)
31+
mkdirp(prefix.include.half)
32+
symlink("../half.hpp", join_path(self.prefix.include.half, "half.hpp"))
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index ae50d00..c2deefc 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -129,7 +129,9 @@ include_directories(${Boost_INCLUDE_DIRS})
6+
set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY})
7+
8+
# OpenMP
9+
-find_package(OpenMP REQUIRED)
10+
+find_path(HALF_INCLUDE_DIR half.hpp)
11+
+message(STATUS "HALF_INCLUDE_DIR: ${HALF_INCLUDE_DIR}")
12+
+
13+
if(APPLE)
14+
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
15+
set(OpenMP_C "${CMAKE_C_COMPILER}")
16+
@@ -151,7 +153,7 @@ else()
17+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
18+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
19+
endif()
20+
-set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} OpenMP::OpenMP_CXX)
21+
+ set(LINK_LIBRARY_LIST ${LINK_LIBRARY_LIST} ${ROCM_OPENMP_EXTRAS_DIR}/lib/libomp.so)
22+
23+
# Threads
24+
set(THREADS_PREFER_PTHREAD_FLAG ON)
25+
@@ -269,6 +271,8 @@ target_include_directories(${PROJECT_NAME}
26+
PUBLIC
27+
${CMAKE_CURRENT_SOURCE_DIR}/include
28+
${ROCM_PATH}/include
29+
+ ${HALF_INCLUDE_DIR}
30+
+ ${ROCM_OPENMP_EXTRAS_DIR}/include
31+
PRIVATE
32+
${CMAKE_CURRENT_SOURCE_DIR}/src/include/cpu
33+
${CMAKE_CURRENT_SOURCE_DIR}/src/include/common
34+
diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt
35+
index f133128..65cb6d5 100644
36+
--- a/src/modules/CMakeLists.txt
37+
+++ b/src/modules/CMakeLists.txt
38+
@@ -81,6 +81,8 @@ if("${TIME_INFO}" STREQUAL "1")
39+
endif()
40+
41+
# Backend specific settings
42+
+find_path(HALF_INCLUDE_DIR half.hpp)
43+
+message(STATUS "HALF_INCLUDE_DIR: ${HALF_INCLUDE_DIR}")
44+
45+
if( "${BACKEND}" STREQUAL "HIP")
46+
# Add HIP kernels
47+
@@ -99,7 +101,7 @@ if( "${BACKEND}" STREQUAL "HIP")
48+
# Add HIP specific includes
49+
set(ROCM_INC ${ROCM_PATH}/include/)
50+
list(APPEND HIP_LOCAL_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/src/include/hip/ ${CMAKE_SOURCE_DIR}/src/include/common/)
51+
- set(INCLUDE_LIST ${ROCM_INC} ${HIP_LOCAL_INCLUDE_DIRS} ${INCLUDE_LIST})
52+
+ set(INCLUDE_LIST ${ROCM_INC} ${HIP_LOCAL_INCLUDE_DIRS} ${INCLUDE_LIST} ${HALF_INCLUDE_DIR} ${ROCM_OPENMP_EXTRAS_DIR}/include)
53+
elseif( "${BACKEND}" STREQUAL "OCL")
54+
# Add OpenCL kernels
55+
file(GLOB MOD_CL_CPP "cl/*.cpp" )
56+
@@ -114,7 +116,7 @@ elseif( "${BACKEND}" STREQUAL "OCL")
57+
# Add OpenCL specific includes
58+
set(ROCM_INC ${ROCM_PATH}/include/)
59+
list(APPEND OCL_LOCAL_INCLUDE_LIST ${CMAKE_SOURCE_DIR}/src/include/cl/ ${CMAKE_SOURCE_DIR}/src/include/common/)
60+
- set(INCLUDE_LIST ${ROCM_INC} ${OCL_LOCAL_INCLUDE_LIST} ${INCLUDE_LIST})
61+
+ set(INCLUDE_LIST ${ROCM_INC} ${OCL_LOCAL_INCLUDE_LIST} ${INCLUDE_LIST} ${HALF_INCLUDE_DIR} ${ROCM_OPENMP_EXTRAS_DIR}/include)
62+
elseif( "${BACKEND}" STREQUAL "CPU")
63+
# Add CPU specific includes
64+
set(INCLUDE_LIST ${CMAKE_SOURCE_DIR}/src/include/common/)
65+
@@ -134,6 +136,8 @@ target_include_directories( ${PROJECT_NAME}
66+
PUBLIC
67+
${CMAKE_SOURCE_DIR}/include
68+
${ROCM_INC}
69+
+ ${HALF_INCLUDE_DIR}
70+
+ ${ROCM_OPENMP_EXTRAS_DIR}/include
71+
PRIVATE
72+
${CMAKE_SOURCE_DIR}/src/include/cpu
73+
${CMAKE_SOURCE_DIR}/src/include/common
74+
@@ -152,4 +156,4 @@ elseif( "${BACKEND}" STREQUAL "OCL")
75+
PRIVATE
76+
${CMAKE_SOURCE_DIR}/src/include/cl
77+
)
78+
-endif()
79+
\ No newline at end of file
80+
+endif()
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
diff --git a/src/include/common/rpp/handle.hpp b/src/include/common/rpp/handle.hpp
2+
index 7dc29e4..6e5ccea 100644
3+
--- a/src/include/common/rpp/handle.hpp
4+
+++ b/src/include/common/rpp/handle.hpp
5+
@@ -99,6 +99,7 @@ struct Handle : rppHandle
6+
// Device handle related
7+
Handle(rppAcceleratorQueue_t stream);
8+
Handle(rppAcceleratorQueue_t stream, size_t nBatchSize);
9+
+ Handle(size_t nBatchSize);
10+
void rpp_destroy_object_gpu();
11+
rppAcceleratorQueue_t GetStream() const;
12+
void SetStream(rppAcceleratorQueue_t streamID) const;
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other
2+
# Spack Project Developers. See the top-level COPYRIGHT file for details.
3+
#
4+
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
5+
6+
7+
from spack.package import *
8+
from spack.pkg.builtin.boost import Boost
9+
10+
11+
class Rpp(CMakePackage):
12+
"""Radeon Performance Primitives (RPP) library is a comprehensive high-
13+
performance computer vision library for AMD (CPU and GPU) with HIP
14+
and OPENCL back-ends"""
15+
16+
homepage = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp"
17+
git = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp.git"
18+
url = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp/archive/0.97.tar.gz"
19+
20+
maintainers = ["srekolam", "afzpatel"]
21+
tags = ["rocm"]
22+
23+
version("1.1.0", sha256="9b1b9e721df27ee577819710b261071c68b2dccba96d9daf5d0535ee5f0e045f")
24+
version("1.0.0", sha256="040601e356b0a06c4ffb2043320ae822ab0da78af867392002c7b68dbd85989c")
25+
version("0.99", sha256="f1d7ec65d0148ddb7b3ce836a7e058727036df940d72d1683dee590a913fd44a")
26+
version("0.98", sha256="191b5d89bf990ae22b5ef73675b89ed4371c3ce342ab9cc65383fa12ef13086e")
27+
version("0.97", sha256="8ce1a869ff67a29579d87d399d8b0bd97bf12ae1b6b1ca1f161cb8a262fb9939")
28+
variant(
29+
"build_type",
30+
default="Release",
31+
values=("Release", "Debug", "RelWithDebInfo"),
32+
description="CMake build type",
33+
)
34+
# Adding 3 variants OPENCL ,HIP , CPU with HIP as default.
35+
36+
variant("opencl", default=False, description="Use OPENCL as the backend")
37+
variant("hip", default=True, description="Use HIP as backend")
38+
variant("cpu", default=False, description="Use CPU as backend")
39+
40+
patch("0001-include-half-openmp-through-spack-package.patch")
41+
patch("0002-declare-handle-in-header.patch")
42+
43+
def patch(self):
44+
if self.spec.satisfies("+hip"):
45+
filter_file(
46+
"${ROCM_PATH}/llvm", self.spec["llvm-amdgpu"].prefix, "CMakeLists.txt", string=True
47+
)
48+
if self.spec.satisfies("+opencl"):
49+
filter_file(
50+
"${ROCM_PATH}",
51+
self.spec["rocm-opencl"].prefix,
52+
"cmake/FindOpenCL.cmake",
53+
string=True,
54+
)
55+
56+
depends_on("[email protected]:", type="build")
57+
depends_on("pkgconfig", type="build")
58+
depends_on(Boost.with_default_variants)
59+
depends_on("[email protected]:1.80.0")
60+
depends_on("bzip2")
61+
depends_on("half")
62+
depends_on("hwloc")
63+
depends_on(
64+
65+
"+calib3d+features2d+highgui+imgcodecs+imgproc"
66+
"+video+videoio+flann+photo+objdetect",
67+
type="build",
68+
when="@1.0:",
69+
)
70+
depends_on("libjpeg-turbo", type="build")
71+
depends_on("rocm-openmp-extras")
72+
conflicts("+opencl+hip")
73+
74+
with when("+hip"):
75+
depends_on("hip@5:")
76+
with when("~hip"):
77+
depends_on("rocm-opencl@5:")
78+
79+
def cmake_args(self):
80+
spec = self.spec
81+
args = []
82+
args.append(self.define("ROCM_OPENMP_EXTRAS_DIR", spec["rocm-openmp-extras"].prefix))
83+
if self.spec.satisfies("+opencl"):
84+
args.append(self.define("BACKEND", "OPENCL"))
85+
if self.spec.satisfies("+cpu"):
86+
args.append(self.define("BACKEND", "CPU"))
87+
if self.spec.satisfies("+hip"):
88+
args.append(self.define("BACKEND", "HIP"))
89+
args.append(self.define("HIP_PATH", spec["hip"].prefix))
90+
args.append(
91+
self.define(
92+
"COMPILER_FOR_HIP", "{0}/bin/clang++".format(spec["llvm-amdgpu"].prefix)
93+
)
94+
)
95+
return args

0 commit comments

Comments
 (0)