Add new variants (OPENCL and HIP) for MIVisionX recipe and their dependencies correctly. (#32486)
* add the 2 variants OPENCL and HIP and their dependencies correctly for OPENCL - rocm-opencl, miopengemm and miopen-opencl for HIP - miopen-hip Earlier this was adding both the dependencies -miopen-hip and miopen-opencl for both the backends which did not seem correct. Also corrected the miopen-hip or miopen-opencl config.h in patch() depending on the backend Also added libjpeg-turbo as it is required for building ROCAl . the AMDRpp is still required for ROCAL inclusion but it currently does not build AMDRpp will be added as a new spack recipe and the mivisionx will refer to that as a dependency in future. * fix style errors * bump up the version for 5.2.3 release. tested +opencl, +hip and ~hip~opencl(cpu backend) Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
This commit is contained in:
parent
c6d7557484
commit
457daf4be6
1 changed files with 84 additions and 40 deletions
|
@ -25,6 +25,7 @@ def url_for_version(self, version):
|
|||
url = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/archive/rocm-{0}.tar.gz"
|
||||
return url.format(version)
|
||||
|
||||
version("5.2.3", sha256="bbcdb5808d2bc880486dffa89f4111fb4b1d6dfe9b11fcd46fbd17939d057cf0")
|
||||
version("5.2.1", sha256="201996b31f59a8d5e4cc3f17d17a5b81158a34d2a1c833b65ccc3dceb21d176f")
|
||||
version("5.2.0", sha256="fee620a1edd3bce18b2cec9ef26ec2afe0a85d6da8a37ed713ab0d1342382503")
|
||||
version("5.1.3", sha256="62591d5caedc13832c3ccef629a88d9c2a43c884daad1124ddcb9c5f7d5470e9")
|
||||
|
@ -90,10 +91,16 @@ def url_for_version(self, version):
|
|||
values=("Release", "Debug", "RelWithDebInfo"),
|
||||
description="CMake build type",
|
||||
)
|
||||
variant("backend", default="OPENCL", values=("HIP", "OPENCL"), description="backend type")
|
||||
# Adding 2 variants OPENCL ,HIP which HIP as default. earlier to 5.0.0,OPENCL
|
||||
# was the default but has change dto HIP from 5.0.0 onwards.
|
||||
# when tested with HIP as true for versions before 5.1.0, build errors were encountered
|
||||
# this was corrected with 5.2.0. Hence it was made as default starting with 5.2.0 onwards
|
||||
|
||||
variant("opencl", default=False, description="Use OPENCL as the backend")
|
||||
variant("hip", default=True, description="Use HIP as backend")
|
||||
|
||||
def patch(self):
|
||||
if "@4.2.0" in self.spec:
|
||||
if self.spec.satisfies("@4.2.0"):
|
||||
filter_file(
|
||||
"${ROCM_PATH}/opencl",
|
||||
self.spec["rocm-opencl"].prefix,
|
||||
|
@ -106,7 +113,7 @@ def patch(self):
|
|||
"utilities/mv_deploy/CMakeLists.txt",
|
||||
string=True,
|
||||
)
|
||||
if "@4.5.0:5.1" in self.spec:
|
||||
if self.spec.satisfies("@4.5.0:5.1 + hip"):
|
||||
filter_file(
|
||||
"${ROCM_PATH}/miopen",
|
||||
self.spec["miopen-hip"].prefix.miopen,
|
||||
|
@ -125,13 +132,20 @@ def patch(self):
|
|||
"amd_openvx_extensions/amd_nn/nn_hip/CMakeLists.txt",
|
||||
string=True,
|
||||
)
|
||||
|
||||
def flag_handler(self, name, flags):
|
||||
spec = self.spec
|
||||
protobuf = spec["protobuf"].prefix.include
|
||||
if name == "cxxflags":
|
||||
flags.append("-I{0}".format(protobuf))
|
||||
return (flags, None, None)
|
||||
if self.spec.satisfies("@5.1.3: + hip"):
|
||||
filter_file(
|
||||
"${ROCM_PATH}/include/miopen/config.h",
|
||||
"{0}/include/miopen/config.h".format(self.spec["miopen-hip"].prefix),
|
||||
"amd_openvx_extensions/CMakeLists.txt",
|
||||
string=True,
|
||||
)
|
||||
if self.spec.satisfies("@5.1.3: + opencl"):
|
||||
filter_file(
|
||||
"${ROCM_PATH}/include/miopen/config.h",
|
||||
"{0}/include/miopen/config.h".format(self.spec["miopen-opencl"].prefix),
|
||||
"amd_openvx_extensions/CMakeLists.txt",
|
||||
string=True,
|
||||
)
|
||||
|
||||
depends_on("cmake@3.5:", type="build")
|
||||
depends_on("ffmpeg@:4", type="build")
|
||||
|
@ -142,46 +156,76 @@ def flag_handler(self, name, flags):
|
|||
"+video+videoio+flann+photo+objdetect",
|
||||
type="build",
|
||||
)
|
||||
depends_on("rocm-opencl@3.5.0", when="@1.7")
|
||||
depends_on("rocm-opencl@3.5.0", when="@1.7+opencl")
|
||||
depends_on("rocm-cmake@3.5.0", type="build", when="@1.7")
|
||||
depends_on("miopen-opencl@3.5.0", when="@1.7")
|
||||
depends_on("miopengemm@1.1.6", when="@1.7")
|
||||
depends_on("miopen-opencl@3.5.0", when="@1.7+opencl")
|
||||
depends_on("miopengemm@1.1.6", when="@1.7+opencl")
|
||||
depends_on("openssl", when="@4.0.0:")
|
||||
depends_on("libjpeg-turbo", type="build")
|
||||
|
||||
conflicts("^cmake@3.22:", when="@:5.0.0")
|
||||
# need to choose atleast one backend and both cannot be set
|
||||
# HIP as backend did not build for older releases 5.1.0 where
|
||||
# OPENCL was default backend.
|
||||
conflicts("+opencl+hip")
|
||||
conflicts("+hip", when="@:5.1.0")
|
||||
|
||||
for ver in [
|
||||
"3.7.0",
|
||||
"3.8.0",
|
||||
"3.9.0",
|
||||
"3.10.0",
|
||||
"4.0.0",
|
||||
"4.1.0",
|
||||
"4.2.0",
|
||||
"4.3.0",
|
||||
"4.3.1",
|
||||
"4.5.0",
|
||||
"4.5.2",
|
||||
"5.0.0",
|
||||
"5.0.2",
|
||||
"5.1.0",
|
||||
"5.1.3",
|
||||
"5.2.0",
|
||||
"5.2.1",
|
||||
]:
|
||||
depends_on("rocm-opencl@" + ver, when="@" + ver)
|
||||
depends_on("miopengemm@" + ver, when="@" + ver)
|
||||
depends_on("miopen-opencl@" + ver, when="@" + ver)
|
||||
for ver in ["4.5.0", "4.5.2", "5.0.0", "5.0.2", "5.1.0", "5.1.3", "5.2.0", "5.2.1"]:
|
||||
depends_on("miopen-hip@" + ver, when="@" + ver)
|
||||
with when("+opencl"):
|
||||
for ver in [
|
||||
"3.7.0",
|
||||
"3.8.0",
|
||||
"3.9.0",
|
||||
"3.10.0",
|
||||
"4.0.0",
|
||||
"4.1.0",
|
||||
"4.2.0",
|
||||
"4.3.0",
|
||||
"4.3.1",
|
||||
"4.5.0",
|
||||
"4.5.2",
|
||||
"5.0.0",
|
||||
"5.0.2",
|
||||
"5.1.0",
|
||||
"5.1.3",
|
||||
"5.2.0",
|
||||
"5.2.1",
|
||||
"5.2.3",
|
||||
]:
|
||||
depends_on("rocm-opencl@" + ver, when="@" + ver)
|
||||
depends_on("miopengemm@" + ver, when="@" + ver)
|
||||
depends_on("miopen-opencl@" + ver, when="@" + ver)
|
||||
with when("+hip"):
|
||||
for ver in [
|
||||
"4.5.0",
|
||||
"4.5.2",
|
||||
"5.0.0",
|
||||
"5.0.2",
|
||||
"5.1.0",
|
||||
"5.1.3",
|
||||
"5.2.0",
|
||||
"5.2.1",
|
||||
"5.2.3",
|
||||
]:
|
||||
depends_on("miopen-hip@" + ver, when="@" + ver)
|
||||
|
||||
def flag_handler(self, name, flags):
|
||||
spec = self.spec
|
||||
protobuf = spec["protobuf"].prefix.include
|
||||
if name == "cxxflags":
|
||||
flags.append("-I{0}".format(protobuf))
|
||||
return (flags, None, None)
|
||||
|
||||
def cmake_args(self):
|
||||
spec = self.spec
|
||||
protobuf = spec["protobuf"].prefix.include
|
||||
args = [
|
||||
self.define("CMAKE_CXX_FLAGS", "-I{0}".format(protobuf)),
|
||||
self.define_from_variant("BACKEND", "backend"),
|
||||
self.define("HIP_PATH", spec["hip"].prefix),
|
||||
self.define("HSA_PATH", spec["hsa-rocr-dev"].prefix),
|
||||
]
|
||||
if self.spec.satisfies("+opencl"):
|
||||
args.append(self.define("BACKEND", "OPENCL"))
|
||||
args.append(self.define("HSA_PATH", spec["hsa-rocr-dev"].prefix))
|
||||
if self.spec.satisfies("+hip"):
|
||||
args.append(self.define("BACKEND", "HIP"))
|
||||
args.append(self.define("HSA_PATH", spec["hsa-rocr-dev"].prefix))
|
||||
args.append(self.define("HIP_PATH", spec["hip"].prefix))
|
||||
return args
|
||||
|
|
Loading…
Reference in a new issue