spack/var/spack/repos/builtin/packages/miopengemm/package.py
2023-02-16 10:14:31 +01:00

157 lines
4.9 KiB
Python

# Copyright 2013-2023 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)
import re
from spack.package import *
class Miopengemm(CMakePackage):
"""An OpenCL general matrix multiplication (GEMM) API
and kernel generator"""
homepage = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM"
git = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM.git"
url = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/archive/rocm-5.4.3.tar.gz"
tags = ["rocm"]
maintainers("srekolam", "renjithravindrankannath")
libraries = ["libmiopengemm"]
def url_for_version(self, version):
if version == Version("1.1.6"):
return "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/archive/1.1.6.tar.gz"
url = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/archive/rocm-{0}.tar.gz"
return url.format(version)
version("5.4.3", sha256="5051051cab60ca0f6347a981da6c9dbeddf8b0de698d4e5409a0db0c622acafc")
version("5.4.0", sha256="a39faa8f4ab73e0cd6505a667bf10c07f93b9612af0711405c65043c4755129d")
version("5.3.3", sha256="4a9c92bebe59bf6e08bd48861b68b1801d9e8dc406250dc8637d36614a5884c8")
version("5.3.0", sha256="7e299daaca8e514bdb5b5efd9d9d3fc5cbfda68ad0117fe7cdbbf946b3f842cd")
version("5.2.3", sha256="de9eecf39e6620be1511923e990101e64c63c2f56d8491c8bf9ffd1033709c00")
version("5.2.1", sha256="9cea190ee0a6645b6d3ce3e136a8e7d07cf4044e98014ccc82b5e5f8b468b1c1")
version("5.2.0", sha256="10458fb07b56a7fbe165595d588b7bf5f1300c57bda2f3133c3687c7bae39ea8")
version("5.1.3", sha256="c70fc9e2a6d47356a612e24f5757bf16fdf26e671bd53a0975c1a0978da740b6")
version("5.1.0", sha256="e2b20cdc20a745bcb7a554852e6b4bd39274c7dcc13fc19a81a282fb4dfa475f")
version(
"5.0.2",
sha256="64a6bf7c902af63d85563e29361763e9daa1fd3699490a91c222b057673612cc",
deprecated=True,
)
version(
"5.0.0",
sha256="122cfb4e79476092e84f73f48540701c90fb87e0dc20cdf39f202d92e9ff5544",
deprecated=True,
)
version(
"4.5.2",
sha256="e778e0ccb123cd637ac459b2aecdf0fdead158580479bc0adfc9a28879e1d1c9",
deprecated=True,
)
version(
"4.5.0",
sha256="54ec908109a91f9022b61e63e3a1b9706cdcf133ba6fb3b39a65ca0e79be7747",
deprecated=True,
)
version(
"4.3.1",
sha256="0aee2281d9b8c625e9bda8efff3067237d6155a53f6c720dcb4e3b3ec8bf8d14",
deprecated=True,
)
version(
"4.3.0",
sha256="d32b3b98e695b7db2fd2faa6587a57728d1252d6d649dcb2db3102f98cd5930e",
deprecated=True,
)
version(
"4.2.0",
sha256="a11fa063248ed339fe897ab4c5d338b7279035fa37fcbe0909e2c4c352aaefb1",
deprecated=True,
)
version(
"4.1.0",
sha256="389328eb4a16565853691bd5b01a0eab978d99e3217329236ddc63a38b8dd4eb",
deprecated=True,
)
version(
"4.0.0",
sha256="366d03facb1ec5f6f4894aa88859df1d7fea00fee0cbac5173d7577e9a8ba799",
deprecated=True,
)
version(
"3.10.0",
sha256="66d844a17729ab25c1c2a243667d9714eb89fd51e42bfc014e2faf54a8642064",
deprecated=True,
)
version(
"3.9.0",
sha256="8e1273c35d50e9fd92e303d9bcbdd42ddbfda20844b3248428e16b54928f6dc2",
deprecated=True,
)
version(
"3.8.0",
sha256="d76f5b4b3b9d1e3589a92f667f39eab5b5ab54ec3c4e04d412035be3ec623547",
deprecated=True,
)
version(
"3.7.0",
sha256="392b280ca564b120f6b24ec1fe8782cba08a8a5fb52938e8bc3dc887d3fd08fa",
deprecated=True,
)
version(
"1.1.6",
sha256="9ab04903794c6a59432928eaec92c687d51e2b4fd29630cf227cbc49d56dc69b",
deprecated=True,
)
variant(
"build_type",
default="Release",
values=("Release", "Debug", "RelWithDebInfo"),
description="CMake build type",
)
depends_on("cmake@3:", type="build")
depends_on("rocm-cmake@3.5.0", type="build", when="@1.1.6")
depends_on("rocm-opencl@3.5.0", when="@1.1.6")
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",
"5.3.0",
"5.3.3",
"5.4.0",
"5.4.3",
]:
depends_on("rocm-cmake@" + ver, type="build", when="@" + ver)
depends_on("rocm-opencl@" + ver, when="@" + ver)
@classmethod
def determine_version(cls, lib):
match = re.search(r"lib\S*\.so\.\d+\.\d+\.(\d)(\d\d)(\d\d)", lib)
if match:
ver = "{0}.{1}.{2}".format(
int(match.group(1)), int(match.group(2)), int(match.group(3))
)
else:
ver = None
return ver