From 0d96b0b31178c4fe1b5bf1045e5f89415008a221 Mon Sep 17 00:00:00 2001 From: Sreenivasa Murthy Kolam <67086238+srekolam@users.noreply.github.com> Date: Tue, 10 Jan 2023 08:20:00 +0530 Subject: rocm packages: Update the version for 5.3.0 release (#33405) * update the version for 5.3.0 release * update the rocwmma for 5.3.0 release * fix the +hip variant * update the version for rocm-openmp-extras package for 5.3.0 release * update the hipsolver and hipfft as per review comments * address review comments * revert changes to mivisionx with regard to change added for clangrt * fix for the petsc failure --- var/spack/repos/builtin/packages/hipfft/package.py | 6 +- .../repos/builtin/packages/hipsolver/package.py | 19 +- .../repos/builtin/packages/migraphx/package.py | 5 +- .../repos/builtin/packages/miopen-hip/package.py | 4 +- .../builtin/packages/miopen-opencl/package.py | 7 +- .../repos/builtin/packages/miopengemm/package.py | 6 +- .../repos/builtin/packages/mivisionx/package.py | 27 +++ .../repos/builtin/packages/mlirmiopen/package.py | 5 +- var/spack/repos/builtin/packages/rdc/package.py | 6 +- .../builtin/packages/rocm-openmp-extras/package.py | 17 +- .../fix-device-merge-mismatched-param-5.3.0.patch | 207 +++++++++++++++++++++ .../repos/builtin/packages/rocprim/package.py | 3 + .../repos/builtin/packages/rocwmma/package.py | 6 +- 13 files changed, 300 insertions(+), 18 deletions(-) create mode 100644 var/spack/repos/builtin/packages/rocprim/fix-device-merge-mismatched-param-5.3.0.patch (limited to 'var') diff --git a/var/spack/repos/builtin/packages/hipfft/package.py b/var/spack/repos/builtin/packages/hipfft/package.py index d3a5773e9c..6f60276eff 100644 --- a/var/spack/repos/builtin/packages/hipfft/package.py +++ b/var/spack/repos/builtin/packages/hipfft/package.py @@ -16,13 +16,14 @@ class Hipfft(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/hipFFT" git = "https://github.com/ROCmSoftwarePlatform/hipFFT.git" - url = "https://github.com/ROCmSoftwarePlatform/hipfft/archive/rocm-5.2.3.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/hipfft/archive/rocm-5.3.0.tar.gz" tags = ["rocm"] maintainers = ["renjithravindrankannath", "srekolam"] version("master", branch="master") + version("5.3.0", sha256="ebbe2009b86b688809b6b4d5c3929fc589db455218d54a37790f21339147c5df") version("5.2.3", sha256="10be731fe91ede5e9f254f6eb3bc00b4dbeab449477f3cac03de358a7d0a6fa1") version("5.2.1", sha256="6c8fbace2864ca992b2fca9dc8d0bb4488aef62045acdfcf249d53dd005ebd35") version("5.2.0", sha256="ec37edcd61837281c403802ccc1cb01ec3fa3ba135b5ab16617961b66d4cc3e2") @@ -92,6 +93,7 @@ class Hipfft(CMakePackage): "5.2.0", "5.2.1", "5.2.3", + "5.3.0", ]: depends_on("rocm-cmake@%s:" % ver, type="build", when="@" + ver) depends_on("hip@" + ver, when="@" + ver) @@ -115,4 +117,6 @@ class Hipfft(CMakePackage): args.append(self.define("CMAKE_MODULE_PATH", self.spec["hip"].prefix.lib.cmake.hip)) args.append(self.define("BUILD_FILE_REORG_BACKWARD_COMPATIBILITY", True)) + if self.spec.satisfies("@5.3.0:"): + args.append(self.define("CMAKE_INSTALL_LIBDIR", "lib")) return args diff --git a/var/spack/repos/builtin/packages/hipsolver/package.py b/var/spack/repos/builtin/packages/hipsolver/package.py index 664118a8d7..0d4132caa9 100644 --- a/var/spack/repos/builtin/packages/hipsolver/package.py +++ b/var/spack/repos/builtin/packages/hipsolver/package.py @@ -18,7 +18,7 @@ class Hipsolver(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/hipSOLVER" git = "https://github.com/ROCmSoftwarePlatform/hipSOLVER.git" - url = "https://github.com/ROCmSoftwarePlatform/hipSOLVER/archive/rocm-5.2.3.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/hipSOLVER/archive/rocm-5.3.0.tar.gz" tags = ["rocm"] maintainers = ["cgmb", "srekolam", "renjithravindrankannath"] @@ -27,6 +27,7 @@ class Hipsolver(CMakePackage): version("develop", branch="develop") version("master", branch="master") + version("5.3.0", sha256="6e920a59ddeefd52c9a6d164c33bc097726529e1ede3c417c711697956655b15") version("5.2.3", sha256="a57d883fdd09c6c7f9856fcfcabee6fa7ff9beed33d2f1a465bf28d38ea6f364") version("5.2.1", sha256="e000b08cf7bfb5f8f6d65d163ebeeb3274172b9f474228b810bde5e6f87f2b37") version("5.2.0", sha256="96927410e0a2cc0f50172604ef6437e15d2cf4b62d22b2035f13aae21f43dc82") @@ -69,8 +70,18 @@ class Hipsolver(CMakePackage): for ver in ["master", "develop"]: depends_on("rocblas@" + ver, when="@" + ver) depends_on("rocsolver@" + 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", "5.2.3"]: + 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", + "5.3.0", + ]: depends_on("hip@" + ver, when="@" + ver) depends_on("rocblas@" + ver, when="@" + ver) depends_on("rocsolver@" + ver, when="@" + ver) @@ -104,5 +115,7 @@ class Hipsolver(CMakePackage): if self.spec.satisfies("@5.2.0:"): args.append(self.define("BUILD_FILE_REORG_BACKWARD_COMPATIBILITY", True)) + if self.spec.satisfies("@5.3.0:"): + args.append(self.define("CMAKE_INSTALL_LIBDIR", "lib")) return args diff --git a/var/spack/repos/builtin/packages/migraphx/package.py b/var/spack/repos/builtin/packages/migraphx/package.py index 2cb403f0d8..d4bc430edb 100644 --- a/var/spack/repos/builtin/packages/migraphx/package.py +++ b/var/spack/repos/builtin/packages/migraphx/package.py @@ -13,12 +13,13 @@ class Migraphx(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/AMDMIGraphX" git = "https://github.com/ROCmSoftwarePlatform/AMDMIGraphX.git" - url = "https://github.com/ROCmSoftwarePlatform/AMDMIGraphX/archive/rocm-5.2.3.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/AMDMIGraphX/archive/rocm-5.3.0.tar.gz" tags = ["rocm"] maintainers = ["srekolam", "renjithravindrankannath"] libraries = ["libmigraphx"] + version("5.3.0", sha256="d0b7283f42e03fb38b612868b8c94f46f27a6e0b019ae95fde5b9086582a1c69") version("5.2.3", sha256="03f7d49f2efdd2c7a6afcaa5a5db5103edc15047b0ff5e146a775cfb36b36af2") version("5.2.1", sha256="300d990e1b92ad27c3eba3e94ef34538730ca9556398b8b9f7d61d28bf66c57d") version("5.2.0", sha256="33afcdf52c6e0e3a2f939fcf30e87f712b8e8ef3633a3dc03a19fea359704925") @@ -126,6 +127,7 @@ class Migraphx(CMakePackage): depends_on("python@3.5:", type="build") depends_on("py-pybind11", type="build", when="@:4.0.0") depends_on("py-pybind11@2.6:", type="build", when="@4.1.0:") + depends_on("pkgconfig", type="build", when="@5.3.0:") for ver in [ "3.5.0", @@ -147,6 +149,7 @@ class Migraphx(CMakePackage): "5.2.0", "5.2.1", "5.2.3", + "5.3.0", ]: depends_on("rocm-cmake@%s:" % ver, type="build", when="@" + ver) depends_on("hip@" + ver, when="@" + ver) diff --git a/var/spack/repos/builtin/packages/miopen-hip/package.py b/var/spack/repos/builtin/packages/miopen-hip/package.py index 6180b7eb40..bc58f38f75 100644 --- a/var/spack/repos/builtin/packages/miopen-hip/package.py +++ b/var/spack/repos/builtin/packages/miopen-hip/package.py @@ -20,6 +20,7 @@ class MiopenHip(CMakePackage): maintainers = ["srekolam", "renjithravindrankannath"] libraries = ["libMIOpen"] + version("5.3.0", sha256="c5819f593d71beeda2eb24b89182912240cc40f83b2b8f9de695a8e230aa4ea6") version("5.2.3", sha256="28747847446955b3bab24f7fc65c1a6b863a12f12ad3a35e0312072482d38122") version("5.2.1", sha256="0977a8876d41bbd2fa268341c93892f35878d7efc1711194ad87582f877ff500") version("5.2.0", sha256="5fda69426e81df9f8fb6658e579176b9c4fcce3516fc8488d3cfd2b6f6f2b3b4") @@ -138,13 +139,14 @@ class MiopenHip(CMakePackage): "5.2.0", "5.2.1", "5.2.3", + "5.3.0", ]: depends_on("rocm-cmake@%s:" % ver, type="build", when="@" + ver) depends_on("hip@" + ver, when="@" + ver) depends_on("rocm-clang-ocl@" + ver, when="@" + ver) depends_on("rocblas@" + ver, when="@" + ver) - for ver in ["5.1.0", "5.1.3", "5.2.0", "5.2.1", "5.2.3"]: + for ver in ["5.1.0", "5.1.3", "5.2.0", "5.2.1", "5.2.3", "5.3.0"]: depends_on("mlirmiopen@" + ver, when="@" + ver) def setup_build_environment(self, env): diff --git a/var/spack/repos/builtin/packages/miopen-opencl/package.py b/var/spack/repos/builtin/packages/miopen-opencl/package.py index 268e15ad14..7829e36629 100644 --- a/var/spack/repos/builtin/packages/miopen-opencl/package.py +++ b/var/spack/repos/builtin/packages/miopen-opencl/package.py @@ -14,12 +14,13 @@ class MiopenOpencl(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/MIOpen" git = "https://github.com/ROCmSoftwarePlatform/MIOpen.git" - url = "https://github.com/ROCmSoftwarePlatform/MIOpen/archive/rocm-5.2.3.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/MIOpen/archive/rocm-5.3.0.tar.gz" tags = ["rocm"] maintainers = ["srekolam", "renjithravindrankannath"] libraries = ["libMIOpen"] + version("5.3.0", sha256="c5819f593d71beeda2eb24b89182912240cc40f83b2b8f9de695a8e230aa4ea6") version("5.2.3", sha256="28747847446955b3bab24f7fc65c1a6b863a12f12ad3a35e0312072482d38122") version("5.2.1", sha256="0977a8876d41bbd2fa268341c93892f35878d7efc1711194ad87582f877ff500") version("5.2.0", sha256="5fda69426e81df9f8fb6658e579176b9c4fcce3516fc8488d3cfd2b6f6f2b3b4") @@ -136,6 +137,7 @@ class MiopenOpencl(CMakePackage): "5.2.0", "5.2.1", "5.2.3", + "5.3.0", ]: depends_on("rocm-cmake@%s:" % ver, type="build", when="@" + ver) depends_on("rocm-opencl@" + ver, when="@" + ver) @@ -158,10 +160,11 @@ class MiopenOpencl(CMakePackage): "5.1.3", "5.2.0", "5.2.3", + "5.3.0", ]: depends_on("miopengemm@" + ver, when="@" + ver) - for ver in ["5.1.0", "5.1.3", "5.2.0", "5.2.1", "5.2.3"]: + for ver in ["5.1.0", "5.1.3", "5.2.0", "5.2.1", "5.2.3", "5.3.0"]: depends_on("mlirmiopen@" + ver, when="@" + ver) @classmethod diff --git a/var/spack/repos/builtin/packages/miopengemm/package.py b/var/spack/repos/builtin/packages/miopengemm/package.py index 780ac68fb2..0f3e9bc85b 100644 --- a/var/spack/repos/builtin/packages/miopengemm/package.py +++ b/var/spack/repos/builtin/packages/miopengemm/package.py @@ -14,10 +14,10 @@ class Miopengemm(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM" git = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM.git" - url = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/archive/rocm-5.2.0.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/archive/rocm-5.3.0.tar.gz" tags = ["rocm"] - maintainers = ["srekolam", "arjun-raj-kuppala", "renjithravindrankannath"] + maintainers = ["srekolam", "renjithravindrankannath"] libraries = ["libmiopengemm"] def url_for_version(self, version): @@ -26,6 +26,7 @@ class Miopengemm(CMakePackage): url = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/archive/rocm-{0}.tar.gz" return url.format(version) + version("5.3.0", sha256="7e299daaca8e514bdb5b5efd9d9d3fc5cbfda68ad0117fe7cdbbf946b3f842cd") version("5.2.3", sha256="de9eecf39e6620be1511923e990101e64c63c2f56d8491c8bf9ffd1033709c00") version("5.2.1", sha256="9cea190ee0a6645b6d3ce3e136a8e7d07cf4044e98014ccc82b5e5f8b468b1c1") version("5.2.0", sha256="10458fb07b56a7fbe165595d588b7bf5f1300c57bda2f3133c3687c7bae39ea8") @@ -132,6 +133,7 @@ class Miopengemm(CMakePackage): "5.2.0", "5.2.1", "5.2.3", + "5.3.0", ]: depends_on("rocm-cmake@" + ver, type="build", when="@" + ver) depends_on("rocm-opencl@" + ver, when="@" + ver) diff --git a/var/spack/repos/builtin/packages/mivisionx/package.py b/var/spack/repos/builtin/packages/mivisionx/package.py index 88fda72871..17dfff8370 100644 --- a/var/spack/repos/builtin/packages/mivisionx/package.py +++ b/var/spack/repos/builtin/packages/mivisionx/package.py @@ -25,6 +25,7 @@ class Mivisionx(CMakePackage): url = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/archive/rocm-{0}.tar.gz" return url.format(version) + version("5.3.0", sha256="58e68f1c78bbe5694e42bf61be177f9e94bfd3e0c113ec6284493c8684836c58") version("5.2.3", sha256="bbcdb5808d2bc880486dffa89f4111fb4b1d6dfe9b11fcd46fbd17939d057cf0") version("5.2.1", sha256="201996b31f59a8d5e4cc3f17d17a5b81158a34d2a1c833b65ccc3dceb21d176f") version("5.2.0", sha256="fee620a1edd3bce18b2cec9ef26ec2afe0a85d6da8a37ed713ab0d1342382503") @@ -162,6 +163,19 @@ class Mivisionx(CMakePackage): "amd_openvx_extensions/CMakeLists.txt", string=True, ) + if self.spec.satisfies("@5.3.0: + hip"): + filter_file( + "${ROCM_PATH}/llvm/bin/clang++", + "{0}/bin/clang++".format(self.spec["llvm-amdgpu"].prefix), + "amd_openvx/openvx/hipvx/CMakeLists.txt", + string=True, + ) + filter_file( + "${ROCM_PATH}/llvm/bin/clang++", + "{0}/bin/clang++".format(self.spec["llvm-amdgpu"].prefix), + "amd_openvx_extensions/amd_nn/nn_hip/CMakeLists.txt", + string=True, + ) depends_on("cmake@3.5:", type="build") depends_on("ffmpeg@:4", type="build") @@ -171,6 +185,14 @@ class Mivisionx(CMakePackage): "+calib3d+features2d+highgui+imgcodecs+imgproc" "+video+videoio+flann+photo+objdetect", type="build", + when="@:5.2", + ) + depends_on( + "opencv@4.5:" + "+calib3d+features2d+highgui+imgcodecs+imgproc" + "+video+videoio+flann+photo+objdetect", + type="build", + when="@5.3:", ) depends_on("rocm-opencl@3.5.0", when="@1.7+opencl") depends_on("rocm-cmake@3.5.0", type="build", when="@1.7") @@ -206,6 +228,7 @@ class Mivisionx(CMakePackage): "5.2.0", "5.2.1", "5.2.3", + "5.3.0", ]: depends_on("rocm-opencl@" + ver, when="@" + ver) depends_on("miopengemm@" + ver, when="@" + ver) @@ -221,8 +244,10 @@ class Mivisionx(CMakePackage): "5.2.0", "5.2.1", "5.2.3", + "5.3.0", ]: depends_on("miopen-hip@" + ver, when="@" + ver) + depends_on("migraphx@" + ver, when="@" + ver) def flag_handler(self, name, flags): spec = self.spec @@ -244,4 +269,6 @@ class Mivisionx(CMakePackage): 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)) + if self.spec.satisfies("~hip~opencl"): + args.append(self.define("BACKEND", "CPU")) return args diff --git a/var/spack/repos/builtin/packages/mlirmiopen/package.py b/var/spack/repos/builtin/packages/mlirmiopen/package.py index 2243780978..4d1330e10f 100644 --- a/var/spack/repos/builtin/packages/mlirmiopen/package.py +++ b/var/spack/repos/builtin/packages/mlirmiopen/package.py @@ -11,12 +11,13 @@ class Mlirmiopen(CMakePackage): """Multi-Level Intermediate Representation for rocm miopen project.""" homepage = "https://github.com/ROCmSoftwarePlatform/llvm-project-mlir" - url = "https://github.com/ROCmSoftwarePlatform/llvm-project-mlir/archive/refs/tags/rocm-5.2.3.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/llvm-project-mlir/archive/refs/tags/rocm-5.3.0.tar.gz" git = "https://github.com/ROCmSoftwarePlatform/llvm-project-mlir.git" tags = ["rocm"] maintainers = ["srekolam"] + version("5.3.0", sha256="e8471a13cb39d33adff34730d3162adaa5d20f9544d61a6a94b39b9b5762ad6d") version("5.2.3", sha256="29e1c352d203622fa083432d5d368caccb53ba141119fbb7e8d5247d99854625") version("5.2.1", sha256="9e305e05474076d84c78b7a796bca20b64c70ee3e2caa066c625216c5ee21d95") version("5.2.0", sha256="546121f203e7787d3501fbaf6673bdbeefbb39e0446b02c480454338362a1f01") @@ -39,7 +40,7 @@ class Mlirmiopen(CMakePackage): depends_on("half") depends_on("pkgconfig", type="build") - for ver in ["5.1.0", "5.1.3", "5.2.0", "5.2.1", "5.2.3"]: + for ver in ["5.1.0", "5.1.3", "5.2.0", "5.2.1", "5.2.3", "5.3.0"]: depends_on("hip@" + ver, when="@" + ver) depends_on("llvm-amdgpu@" + ver, when="@" + ver) depends_on("hsa-rocr-dev@" + ver, when="@" + ver) diff --git a/var/spack/repos/builtin/packages/rdc/package.py b/var/spack/repos/builtin/packages/rdc/package.py index c1383a5c28..f8fa207751 100644 --- a/var/spack/repos/builtin/packages/rdc/package.py +++ b/var/spack/repos/builtin/packages/rdc/package.py @@ -11,7 +11,7 @@ class Rdc(CMakePackage): """ROCm Data Center Tool""" homepage = "https://github.com/RadeonOpenCompute/rdc" - url = "https://github.com/RadeonOpenCompute/rdc/archive/rocm-4.3.0.tar.gz" + url = "https://github.com/RadeonOpenCompute/rdc/archive/rocm-5.3.0.tar.gz" tags = ["rocm"] maintainers = ["srekolam", "renjithravindrankannath"] @@ -24,6 +24,7 @@ class Rdc(CMakePackage): url = "https://github.com/RadeonOpenCompute/rdc/archive/rocm-{0}.tar.gz" return url.format(version) + version("5.3.0", sha256="ce9c85dad8e0c0b21e8e5938bf16f86a62dc5f6ded5f453c61acd43666634d6b") version("5.2.3", sha256="5ba060449bbf5e84979cb4c62eb1dac9b0e3eca45e930d2e20e7beaa87361b39") version("5.2.1", sha256="84b3c3754b8c9732ee6d00d37881591d3d6876feb8f29746d9eb18faea7ad035") version("5.2.0", sha256="2f35f74485e783f56ea724a7c69ce825f181fcdbe89de453d97ce6a3d3176ae0") @@ -121,10 +122,11 @@ class Rdc(CMakePackage): "5.2.0", "5.2.1", "5.2.3", + "5.3.0", ]: depends_on("rocm-smi-lib@" + ver, type=("build", "link"), when="@" + ver) - for ver in ["5.0.0", "5.0.2", "5.1.0", "5.1.3", "5.2.0", "5.2.1", "5.2.3"]: + for ver in ["5.0.0", "5.0.2", "5.1.0", "5.1.3", "5.2.0", "5.2.1", "5.2.3", "5.3.0"]: depends_on("hsa-rocr-dev@" + ver, when="@" + ver) def patch(self): diff --git a/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py b/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py index 1f03713aa8..1de8f21820 100644 --- a/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py +++ b/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py @@ -31,6 +31,7 @@ aomp = [ "20e21312816272222d1f427ea72a99a9a67077078552f5e2638a40860d161d25", "c0aa6997e889d6ce0e37cfa6a2e91c5c0b54cda1673abdcabcf34da1ba78ba72", "4ba1792095427588c484feed01f2f48e66aaad26bc000cbc74a15032551699e7", + "371ed037b95b83fac64fb2ff2fc17313fe7d3befc8671f0a08f0e2072393fa5b", ] devlib = [ @@ -50,6 +51,7 @@ devlib = [ "901674bc941115c72f82c5def61d42f2bebee687aefd30a460905996f838e16c", "e5855387ce73ed483ed0d03dbfef31f297c6ca66cf816f6816fd5ee373fc8225", "16b7fc7db4759bd6fb54852e9855fa16ead76c97871d7e1e9392e846381d611a", + "f7e1665a1650d3d0481bec68252e8a5e68adc2c867c63c570f6190a1d2fe735c", ] llvm = [ @@ -69,6 +71,7 @@ llvm = [ "0f892174111b78a02d1a00f8f46d9f80b9abb95513a7af38ecf2a5a0882fe87f", "3644e927d943d61e22672422591c47a62ff83e3d87ced68439822156d8f79abf", "1b852711aec3137b568fb65f93606d37fdcd62e06f5da3766f2ffcd4e0c646df", + "4e3fcddb5b8ea8dcaa4417e0e31a9c2bbdc9e7d4ac3401635a636df32905c93e", ] flang = [ @@ -88,6 +91,7 @@ flang = [ "20f48cac9b58496230fa2428eba4e15ec0a6e92d429569b154a328b7a8c5da17", "012a9c10a7d2a248dc40510e2f5c02a54b5f6bc39961500dc48b6780dac5ad67", "496f00918721c72eae0bd926a5a8f1f35bd443f6b22bc08e2a42c67e44a4dbaf", + "ef1256ddf6cd9de10a1b88df4736dce48295136983a7e31eadd942fb39b156f7", ] extras = [ @@ -107,6 +111,7 @@ extras = [ "817c2e8975e56a8875ff56f9d1ea34d5e7e50f1b541b7f1236e3e5c8d9eee47f", "8b738225f0be39f27bba64c014816cfa1b79f2c7cf2d0e31fbc0fffb6c26e429", "f42ca7d85b0b64e6890502f1cf8309ef97f707829876742da2ea5c2cdf3ad8ac", + "b3beee383d9c130666c230595c950bdc2ce4c7a99d728b9ddf1bca3963152223", ] versions = [ @@ -126,6 +131,7 @@ versions = [ "5.2.0", "5.2.1", "5.2.3", + "5.3.0", ] versions_dict = dict() # type: Dict[str,Dict[str,str]] components = ["aomp", "devlib", "llvm", "flang", "extras"] @@ -143,10 +149,11 @@ class RocmOpenmpExtras(Package): """OpenMP support for ROCm LLVM.""" homepage = tools_url + "/aomp" - url = tools_url + "/aomp/archive/rocm-5.2.3.tar.gz" + url = tools_url + "/aomp/archive/rocm-5.3.0.tar.gz" tags = ["rocm"] maintainers = ["srekolam", "renjithravindrankannath", "estewart08"] + version("5.3.0", sha256=versions_dict["5.3.0"]["aomp"]) version("5.2.3", sha256=versions_dict["5.2.3"]["aomp"]) version("5.2.1", sha256=versions_dict["5.2.1"]["aomp"]) version("5.2.0", sha256=versions_dict["5.2.0"]["aomp"]) @@ -233,6 +240,7 @@ class RocmOpenmpExtras(Package): "5.2.0", "5.2.1", "5.2.3", + "5.3.0", ]: depends_on("hsakmt-roct@" + ver, when="@" + ver) depends_on("comgr@" + ver, when="@" + ver) @@ -289,10 +297,14 @@ class RocmOpenmpExtras(Package): devlibs_prefix = self.spec["llvm-amdgpu"].prefix openmp_extras_prefix = self.spec["rocm-openmp-extras"].prefix llvm_prefix = self.spec["llvm-amdgpu"].prefix + hsa_prefix = self.spec["hsa-rocr-dev"].prefix env.set("AOMP", "{0}".format(llvm_prefix)) env.set("HIP_DEVICE_LIB_PATH", "{0}/amdgcn/bitcode".format(devlibs_prefix)) env.prepend_path("CPATH", "{0}/include".format(openmp_extras_prefix)) env.prepend_path("LIBRARY_PATH", "{0}/lib".format(openmp_extras_prefix)) + if self.spec.satisfies("@5.3.0:"): + env.prepend_path("LD_LIBRARY_PATH", "{0}/lib".format(openmp_extras_prefix)) + env.prepend_path("LD_LIBRARY_PATH", "{0}/lib".format(hsa_prefix)) if self.spec.version < Version("4.1.0"): env.set("AOMP_GPU", "`{0}/rocm-bin/mygpu`".format(openmp_extras_prefix)) else: @@ -531,6 +543,9 @@ class RocmOpenmpExtras(Package): else: openmp_common_args += ["-DHSA_INCLUDE={0}/include/hsa".format(hsa_prefix)] + if self.spec.satisfies("@5.3.0:"): + openmp_common_args += ["-DLIBOMPTARGET_ENABLE_DEBUG=ON"] + components["openmp"] = ["../rocm-openmp-extras/llvm-project/openmp"] components["openmp"] += openmp_common_args diff --git a/var/spack/repos/builtin/packages/rocprim/fix-device-merge-mismatched-param-5.3.0.patch b/var/spack/repos/builtin/packages/rocprim/fix-device-merge-mismatched-param-5.3.0.patch new file mode 100644 index 0000000000..e3bfc4049a --- /dev/null +++ b/var/spack/repos/builtin/packages/rocprim/fix-device-merge-mismatched-param-5.3.0.patch @@ -0,0 +1,207 @@ +From 05269687a201569eeaa50c03000d75ba923edd90 Mon Sep 17 00:00:00 2001 +From: Gergely Meszaros +Date: Fri, 28 Oct 2022 13:41:38 +0200 +Subject: [PATCH 1/2] Fix device_merge when using different types for + `keys_input1` and `keys_input2`. + +Add a test case for using device_merge with different types for +`keys_input1` and `keys_input2`. +--- + .../rocprim/device/detail/device_merge.hpp | 28 +++--- + test/rocprim/test_device_merge.cpp | 98 ++++++++++++++++++- + 2 files changed, 107 insertions(+), 19 deletions(-) + +diff --git a/rocprim/include/rocprim/device/detail/device_merge.hpp b/rocprim/include/rocprim/device/detail/device_merge.hpp +index 92159810..db7df6af 100644 +--- a/rocprim/include/rocprim/device/detail/device_merge.hpp ++++ b/rocprim/include/rocprim/device/detail/device_merge.hpp +@@ -72,26 +72,26 @@ range_t compute_range(const unsigned int id, + return range_t{p1, p2, diag1 - p1, diag2 - p2}; + } + +-template +-ROCPRIM_DEVICE ROCPRIM_INLINE +-OffsetT merge_path(KeysInputIterator keys_input1, +- KeysInputIterator keys_input2, +- const OffsetT input1_size, +- const OffsetT input2_size, +- const OffsetT diag, +- BinaryFunction compare_function) ++template ++ROCPRIM_DEVICE ROCPRIM_INLINE OffsetT merge_path(KeysInputIterator1 keys_input1, ++ KeysInputIterator2 keys_input2, ++ const OffsetT input1_size, ++ const OffsetT input2_size, ++ const OffsetT diag, ++ BinaryFunction compare_function) + { +- using key_type = typename std::iterator_traits::value_type; ++ using key_type_1 = typename std::iterator_traits::value_type; ++ using key_type_2 = typename std::iterator_traits::value_type; + + OffsetT begin = diag < input2_size ? 0u : diag - input2_size; +- OffsetT end = min(diag, input1_size); ++ OffsetT end = min(diag, input1_size); + + while(begin < end) + { +- OffsetT a = (begin + end) / 2; +- OffsetT b = diag - 1 - a; +- key_type input_a = keys_input1[a]; +- key_type input_b = keys_input2[b]; ++ OffsetT a = (begin + end) / 2; ++ OffsetT b = diag - 1 - a; ++ key_type_1 input_a = keys_input1[a]; ++ key_type_2 input_b = keys_input2[b]; + if(!compare_function(input_b, input_a)) + { + begin = a + 1; +diff --git a/test/rocprim/test_device_merge.cpp b/test/rocprim/test_device_merge.cpp +index 7e21c65f..d06cafb8 100644 +--- a/test/rocprim/test_device_merge.cpp ++++ b/test/rocprim/test_device_merge.cpp +@@ -1,6 +1,6 @@ + // MIT License + // +-// Copyright (c) 2017-2021 Advanced Micro Devices, Inc. All rights reserved. ++// Copyright (c) 2017-2022 Advanced Micro Devices, Inc. All rights reserved. + // + // Permission is hereby granted, free of charge, to any person obtaining a copy + // of this software and associated documentation files (the "Software"), to deal +@@ -20,14 +20,23 @@ + // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + // SOFTWARE. + +-#include "common_test_header.hpp" ++// required test headers ++#include "../common_test_header.hpp" ++#include "test_utils_types.hpp" + + // required rocprim headers +-#include + #include ++#include ++#include ++#include + +-// required test headers +-#include "test_utils_types.hpp" ++#include ++ ++#include ++ ++#include ++#include ++#include + + // Params for tests + template< +@@ -433,3 +442,82 @@ TYPED_TEST(RocprimDeviceMergeTests, MergeKeyValue) + + } + } ++ ++TEST(RocprimDeviceMergeTests, MergeMismatchedIteratorTypes) ++{ ++ const int device_id = test_common_utils::obtain_device_from_ctest(); ++ SCOPED_TRACE(testing::Message() << "with device_id = " << device_id); ++ HIP_CHECK(hipSetDevice(device_id)); ++ ++ std::vector keys_input1(1'024); ++ std::generate(keys_input1.begin(), ++ keys_input1.end(), ++ [n = 0]() mutable ++ { ++ const int temp = n; ++ n += 2; ++ return temp; ++ }); ++ ++ std::vector expected_keys_output(2 * keys_input1.size()); ++ std::iota(expected_keys_output.begin(), expected_keys_output.end(), 0); ++ ++ int* d_keys_input1 = nullptr; ++ int* d_keys_output = nullptr; ++ HIP_CHECK(test_common_utils::hipMallocHelper(&d_keys_input1, ++ keys_input1.size() * sizeof(keys_input1[0]))); ++ HIP_CHECK( ++ test_common_utils::hipMallocHelper(&d_keys_output, ++ expected_keys_output.size() * sizeof(keys_input1[0]))); ++ ++ HIP_CHECK(hipMemcpy(d_keys_input1, ++ keys_input1.data(), ++ keys_input1.size() * sizeof(keys_input1[0]), ++ hipMemcpyHostToDevice)); ++ ++ const auto d_keys_input2 = rocprim::make_transform_iterator(rocprim::make_counting_iterator(0), ++ [] __host__ __device__(int value) ++ { return value * 2 + 1; }); ++ ++ static constexpr bool debug_synchronous = false; ++ ++ size_t temp_storage_size_bytes = 0; ++ HIP_CHECK(rocprim::merge(nullptr, ++ temp_storage_size_bytes, ++ d_keys_input1, ++ d_keys_input2, ++ d_keys_output, ++ keys_input1.size(), ++ keys_input1.size(), ++ rocprim::less{}, ++ hipStreamDefault, ++ debug_synchronous)); ++ ++ ASSERT_GT(temp_storage_size_bytes, 0); ++ ++ void* d_temp_storage = nullptr; ++ HIP_CHECK(test_common_utils::hipMallocHelper(&d_temp_storage, temp_storage_size_bytes)); ++ ++ HIP_CHECK(rocprim::merge(d_temp_storage, ++ temp_storage_size_bytes, ++ d_keys_input1, ++ d_keys_input2, ++ d_keys_output, ++ keys_input1.size(), ++ keys_input1.size(), ++ rocprim::less{}, ++ hipStreamDefault, ++ debug_synchronous)); ++ ++ std::vector keys_output(expected_keys_output.size()); ++ HIP_CHECK(hipMemcpy(keys_output.data(), ++ d_keys_output, ++ keys_output.size() * sizeof(keys_output[0]), ++ hipMemcpyDeviceToHost)); ++ ++ ASSERT_NO_FATAL_FAILURE(test_utils::assert_eq(keys_output, expected_keys_output)); ++ ++ HIP_CHECK(hipFree(d_temp_storage)); ++ HIP_CHECK(hipFree(d_keys_output)); ++ HIP_CHECK(hipFree(d_keys_input1)); ++} + +From 993541c6b21b51b5a1a838eca855cc4efcfbb19b Mon Sep 17 00:00:00 2001 +From: Vince van Heertum +Date: Fri, 4 Nov 2022 12:56:53 +0100 +Subject: [PATCH 2/2] Update CHANGELOG.md for ROCm 5.3.2 + +--- + CHANGELOG.md | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/CHANGELOG.md b/CHANGELOG.md +index eef6aede..53739ffa 100644 +--- a/CHANGELOG.md ++++ b/CHANGELOG.md +@@ -2,6 +2,11 @@ + + Full documentation for rocPRIM is available at [https://codedocs.xyz/ROCmSoftwarePlatform/rocPRIM/](https://codedocs.xyz/ROCmSoftwarePlatform/rocPRIM/) + ++## [rocPRIM-2.11.1 for ROCm 5.3.2] ++### Fixed ++- Fix device_merge when using different types for `keys_input1` and `keys_input2`. ++- Added a test case for using device_merge with different types for `keys_input1` and `keys_input2`. ++ + ## [rocPRIM-2.11.0 for ROCm 5.3.0] + ### Added + - New functions `subtract_left` and `subtract_right` in `block_adjacent_difference` to apply functions diff --git a/var/spack/repos/builtin/packages/rocprim/package.py b/var/spack/repos/builtin/packages/rocprim/package.py index b2f732b47a..7fc7607dd8 100644 --- a/var/spack/repos/builtin/packages/rocprim/package.py +++ b/var/spack/repos/builtin/packages/rocprim/package.py @@ -135,6 +135,9 @@ class Rocprim(CMakePackage): depends_on("llvm-amdgpu@" + ver, when="@" + ver) depends_on("rocm-cmake@%s:" % ver, type="build", when="@" + ver) + # the patch is meant for 5.3.0 only.this is already in the 5.3.3+ releases + patch("fix-device-merge-mismatched-param-5.3.0.patch", when="@5.3.0") + def setup_build_environment(self, env): env.set("CXX", self.spec["hip"].hipcc) diff --git a/var/spack/repos/builtin/packages/rocwmma/package.py b/var/spack/repos/builtin/packages/rocwmma/package.py index a0b9d121d5..3b330d246a 100644 --- a/var/spack/repos/builtin/packages/rocwmma/package.py +++ b/var/spack/repos/builtin/packages/rocwmma/package.py @@ -21,11 +21,12 @@ class Rocwmma(CMakePackage): homepage = "https://github.com/ROCmSoftwarePlatform/rocWMMA" git = "https://github.com/ROCmSoftwarePlatform/rocWMMA.git" - url = "https://github.com/ROCmSoftwarePlatform/rocWMMA/archive/refs/tags/rocm-5.2.3.tar.gz" + url = "https://github.com/ROCmSoftwarePlatform/rocWMMA/archive/refs/tags/rocm-5.3.0.tar.gz" tags = ["rocm"] maintainers = ["srekolam", "renjithravindrankannath"] + version("5.3.0", sha256="04bac641ba18059118d3faa5f21fe3bf3e285055d40930489ebf27ffc8e5d16e") version("5.2.3", sha256="7f42e9742eff258f7c09c518c5ea9c71a224574e1c075d7e1c4e464192fc4920") version("5.2.1", sha256="73adb6a0ae99051493459a9902ad718b0452d6d819583a58d713ce52fa813f21") version("5.2.0", sha256="257ccd1cf2bc1d8064e72e78d276ef7446b2cb7e2dec05ff8331bb44eff2b7cb") @@ -48,12 +49,11 @@ class Rocwmma(CMakePackage): depends_on("googletest@1.10.0:", type="test") - for ver in ["5.2.0", "5.2.1", "5.2.3"]: + for ver in ["5.2.0", "5.2.1", "5.2.3", "5.3.0"]: depends_on("rocm-cmake@%s:" % ver, type="build", when="@" + ver) depends_on("llvm-amdgpu@" + ver, type="build", when="@" + ver) depends_on("hip@" + ver, when="@" + ver) depends_on("rocblas@" + ver, type="build", when="@" + ver) - depends_on("rocm-openmp-extras@" + ver, type="build", when="@" + ver) for tgt in itertools.chain(["auto"], amdgpu_targets): -- cgit v1.2.3-70-g09d2