AMD Optimized CPU Libraries: add v4.0 (#34681)
What's in AOCL 4.0:
1. amdblis
        LPGEMM variants with post-ops support
        AMD "Zen4" support for BLIS
2. amdlibflame
        Upgrade to LAPACK 3.10.1 specification
        Improvements in a few more variants of SVD and Eigen Value routines
        Multithread support enabled for selected APIs
3. amdfftw
        AVX-512 enablement of DFT kernels
        AVX-512 optimization of copy and transpose routines
5. amdlibm
        Black & Scholes support (logf, expf, erff, both scalar and vector)
        AVX-512 variants of vector functions
6. aocl-sparse
        New Iterative Solver APIs
        AVX-512 support for SPMV API
7. amdscalapack
        Upgrade to Netlib ScaLAPACK 2.2.0
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
			
			
This commit is contained in:
		 AMD Toolchain Support
					AMD Toolchain Support
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							55f71e41d5
						
					
				
				
					commit
					b9048dbee9
				
			| @@ -11,12 +11,20 @@ class AmdAocl(BundlePackage): | |||||||
|     libraries tuned specifically for AMD EPYC processor family. They have a |     libraries tuned specifically for AMD EPYC processor family. They have a | ||||||
|     simple interface to take advantage of the latest hardware innovations. |     simple interface to take advantage of the latest hardware innovations. | ||||||
|     The tuned implementations of industry standard  math libraries enable |     The tuned implementations of industry standard  math libraries enable | ||||||
|     fast development of scientific and high performance computing projects""" |     fast development of scientific and high performance computing projects | ||||||
|  | 
 | ||||||
|  |     LICENSING INFORMATION: By downloading, installing and using this software, | ||||||
|  |     you agree to the terms and conditions of the AMD AOCL license agreement. | ||||||
|  |     You may obtain a copy of this license agreement from | ||||||
|  |     https://www.amd.com/en/developer/aocl/aocl-eula.html | ||||||
|  |     https://www.amd.com/en/developer/aocl/aocl-4-0-eula.html | ||||||
|  |     """ | ||||||
| 
 | 
 | ||||||
|     homepage = "https://developer.amd.com/amd-aocl/" |     homepage = "https://developer.amd.com/amd-aocl/" | ||||||
| 
 | 
 | ||||||
|     maintainers = ["amd-toolchain-support"] |     maintainers = ["amd-toolchain-support"] | ||||||
| 
 | 
 | ||||||
|  |     version("4.0") | ||||||
|     version("3.2") |     version("3.2") | ||||||
|     version("3.1") |     version("3.1") | ||||||
|     version("3.0") |     version("3.0") | ||||||
| @@ -24,7 +32,7 @@ class AmdAocl(BundlePackage): | |||||||
| 
 | 
 | ||||||
|     variant("openmp", default=False, description="Enable OpenMP support.") |     variant("openmp", default=False, description="Enable OpenMP support.") | ||||||
| 
 | 
 | ||||||
|     for vers in ["2.2", "3.0", "3.1", "3.2"]: |     for vers in ["2.2", "3.0", "3.1", "3.2", "4.0"]: | ||||||
|         depends_on("amdblis@{0} threads=openmp".format(vers), when="@{0} +openmp".format(vers)) |         depends_on("amdblis@{0} threads=openmp".format(vers), when="@{0} +openmp".format(vers)) | ||||||
|         depends_on("amdblis@{0} threads=none".format(vers), when="@{0} ~openmp".format(vers)) |         depends_on("amdblis@{0} threads=none".format(vers), when="@{0} ~openmp".format(vers)) | ||||||
|         depends_on("amdfftw@{0} +openmp".format(vers), when="@{0} +openmp".format(vers)) |         depends_on("amdfftw@{0} +openmp".format(vers), when="@{0} +openmp".format(vers)) | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ | |||||||
| # Spack Project Developers. See the top-level COPYRIGHT file for details. | # Spack Project Developers. See the top-level COPYRIGHT file for details. | ||||||
| # | # | ||||||
| # SPDX-License-Identifier: (Apache-2.0 OR MIT) | # SPDX-License-Identifier: (Apache-2.0 OR MIT) | ||||||
|  | 
 | ||||||
| import os | import os | ||||||
| 
 | 
 | ||||||
| from spack.package import * | from spack.package import * | ||||||
| @@ -16,6 +17,12 @@ class Amdblis(BlisBase): | |||||||
|     isolate essential kernels of computation that, when optimized, immediately |     isolate essential kernels of computation that, when optimized, immediately | ||||||
|     enable optimized implementations of most of its commonly used and |     enable optimized implementations of most of its commonly used and | ||||||
|     computationally intensive operations. |     computationally intensive operations. | ||||||
|  | 
 | ||||||
|  |     LICENSING INFORMATION: By downloading, installing and using this software, | ||||||
|  |     you agree to the terms and conditions of the AMD AOCL-BLIS license | ||||||
|  |     agreement.  You may obtain a copy of this license agreement from | ||||||
|  |     https://www.amd.com/en/developer/aocl/blis/blis-4-0-eula.html | ||||||
|  |     https://www.amd.com/en/developer/aocl/blis/blis-eula.html | ||||||
|     """ |     """ | ||||||
| 
 | 
 | ||||||
|     _name = "amdblis" |     _name = "amdblis" | ||||||
| @@ -25,6 +32,7 @@ class Amdblis(BlisBase): | |||||||
| 
 | 
 | ||||||
|     maintainers = ["amd-toolchain-support"] |     maintainers = ["amd-toolchain-support"] | ||||||
| 
 | 
 | ||||||
|  |     version("4.0", sha256="cddd31176834a932753ac0fc4c76332868feab3e9ac607fa197d8b44c1e74a41") | ||||||
|     version("3.2", sha256="5a400ee4fc324e224e12f73cc37b915a00f92b400443b15ce3350278ad46fff6") |     version("3.2", sha256="5a400ee4fc324e224e12f73cc37b915a00f92b400443b15ce3350278ad46fff6") | ||||||
|     version("3.1", sha256="2891948925b9db99eec02a1917d9887a7bee9ad2afc5421c9ba58602a620f2bf") |     version("3.1", sha256="2891948925b9db99eec02a1917d9887a7bee9ad2afc5421c9ba58602a620f2bf") | ||||||
|     version("3.0.1", sha256="dff643e6ef946846e91e8f81b75ff8fe21f1f2d227599aecd654d184d9beff3e") |     version("3.0.1", sha256="dff643e6ef946846e91e8f81b75ff8fe21f1f2d227599aecd654d184d9beff3e") | ||||||
|   | |||||||
| @@ -22,6 +22,12 @@ class Amdfftw(FftwBase): | |||||||
| 
 | 
 | ||||||
|     For single precision build, please use precision value as float. |     For single precision build, please use precision value as float. | ||||||
|     Example : spack install amdfftw precision=float |     Example : spack install amdfftw precision=float | ||||||
|  | 
 | ||||||
|  |     LICENSING INFORMATION: By downloading, installing and using this software, | ||||||
|  |     you agree to the terms and conditions of the AMD AOCL-FFTW license | ||||||
|  |     agreement.  You may obtain a copy of this license agreement from | ||||||
|  |     https://www.amd.com/en/developer/aocl/fftw/fftw-libraries-4-0-eula.html | ||||||
|  |     https://www.amd.com/en/developer/aocl/fftw/fftw-libraries-eula.html | ||||||
|     """ |     """ | ||||||
| 
 | 
 | ||||||
|     _name = "amdfftw" |     _name = "amdfftw" | ||||||
| @@ -31,6 +37,7 @@ class Amdfftw(FftwBase): | |||||||
| 
 | 
 | ||||||
|     maintainers = ["amd-toolchain-support"] |     maintainers = ["amd-toolchain-support"] | ||||||
| 
 | 
 | ||||||
|  |     version("4.0", sha256="5f02cb05f224bd86bd88ec6272b294c26dba3b1d22c7fb298745fd7b9d2271c0") | ||||||
|     version("3.2", sha256="31cab17a93e03b5b606e88dd6116a1055b8f49542d7d0890dbfcca057087b8d0") |     version("3.2", sha256="31cab17a93e03b5b606e88dd6116a1055b8f49542d7d0890dbfcca057087b8d0") | ||||||
|     version("3.1", sha256="3e777f3acef13fa1910db097e818b1d0d03a6a36ef41186247c6ab1ab0afc132") |     version("3.1", sha256="3e777f3acef13fa1910db097e818b1d0d03a6a36ef41186247c6ab1ab0afc132") | ||||||
|     version("3.0.1", sha256="87030c6bbb9c710f0a64f4f306ba6aa91dc4b182bb804c9022b35aef274d1a4c") |     version("3.0.1", sha256="87030c6bbb9c710f0a64f4f306ba6aa91dc4b182bb804c9022b35aef274d1a4c") | ||||||
| @@ -44,9 +51,9 @@ class Amdfftw(FftwBase): | |||||||
|     variant( |     variant( | ||||||
|         "amd-fast-planner", |         "amd-fast-planner", | ||||||
|         default=False, |         default=False, | ||||||
|         description="Option to reduce the planning time without much" |         description="Option to reduce the planning time without much " | ||||||
|         "tradeoff in the performance. It is supported for" |         "tradeoff in the performance. It is supported for " | ||||||
|         "Float and double precisions only.", |         "float and double precisions only.", | ||||||
|     ) |     ) | ||||||
|     variant("amd-top-n-planner", default=False, description="Build with amd-top-n-planner support") |     variant("amd-top-n-planner", default=False, description="Build with amd-top-n-planner support") | ||||||
|     variant( |     variant( | ||||||
| @@ -210,7 +217,7 @@ def configure(self, spec, prefix): | |||||||
| 
 | 
 | ||||||
|         # Specific SIMD support. |         # Specific SIMD support. | ||||||
|         # float and double precisions are supported |         # float and double precisions are supported | ||||||
|         simd_features = ["sse2", "avx", "avx2"] |         simd_features = ["sse2", "avx", "avx2", "avx512"] | ||||||
| 
 | 
 | ||||||
|         simd_options = [] |         simd_options = [] | ||||||
|         for feature in simd_features: |         for feature in simd_features: | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ | |||||||
| # | # | ||||||
| # SPDX-License-Identifier: (Apache-2.0 OR MIT) | # SPDX-License-Identifier: (Apache-2.0 OR MIT) | ||||||
| # ----------------------------------------------------------------------------\ | # ----------------------------------------------------------------------------\ | ||||||
|  | 
 | ||||||
| from spack.package import * | from spack.package import * | ||||||
| from spack.pkg.builtin.libflame import LibflameBase | from spack.pkg.builtin.libflame import LibflameBase | ||||||
| 
 | 
 | ||||||
| @@ -28,6 +29,12 @@ class Amdlibflame(LibflameBase): | |||||||
|     In combination with BLIS library which includes optimizations |     In combination with BLIS library which includes optimizations | ||||||
|     for the AMD EPYC processor family, libFLAME enables running |     for the AMD EPYC processor family, libFLAME enables running | ||||||
|     high performing LAPACK functionalities on AMD platform. |     high performing LAPACK functionalities on AMD platform. | ||||||
|  | 
 | ||||||
|  |     LICENSING INFORMATION: By downloading, installing and using this software, | ||||||
|  |     you agree to the terms and conditions of the AMD AOCL-libFLAME license | ||||||
|  |     agreement.  You may obtain a copy of this license agreement from | ||||||
|  |     https://www.amd.com/en/developer/aocl/blis/libflame-4-0-eula.html | ||||||
|  |     https://www.amd.com/en/developer/aocl/blis/libflame-eula.html | ||||||
|     """ |     """ | ||||||
| 
 | 
 | ||||||
|     _name = "amdlibflame" |     _name = "amdlibflame" | ||||||
| @@ -37,6 +44,7 @@ class Amdlibflame(LibflameBase): | |||||||
| 
 | 
 | ||||||
|     maintainers = ["amd-toolchain-support"] |     maintainers = ["amd-toolchain-support"] | ||||||
| 
 | 
 | ||||||
|  |     version("4.0", sha256="bcb05763aa1df1e88f0da5e43ff86d956826cbea1d9c5ff591d78a3e091c66a4") | ||||||
|     version("3.2", sha256="6b5337fb668b82d0ed0a4ab4b5af4e2f72e4cedbeeb4a8b6eb9a3ef057fb749a") |     version("3.2", sha256="6b5337fb668b82d0ed0a4ab4b5af4e2f72e4cedbeeb4a8b6eb9a3ef057fb749a") | ||||||
|     version("3.1", sha256="4520fb93fcc89161f65a40810cae0fa1f87cecb242da4a69655f502545a53426") |     version("3.1", sha256="4520fb93fcc89161f65a40810cae0fa1f87cecb242da4a69655f502545a53426") | ||||||
|     version("3.0.1", sha256="5859e7b39ffbe73115dd598b035f212d36310462cf3a45e555a5087301710776") |     version("3.0.1", sha256="5859e7b39ffbe73115dd598b035f212d36310462cf3a45e555a5087301710776") | ||||||
|   | |||||||
| @@ -14,21 +14,25 @@ class Amdlibm(SConsPackage): | |||||||
|     many routines from the list of standard C99 math functions. |     many routines from the list of standard C99 math functions. | ||||||
|     Applications can link into AMD LibM library and invoke math functions |     Applications can link into AMD LibM library and invoke math functions | ||||||
|     instead of compiler's math functions for better accuracy and |     instead of compiler's math functions for better accuracy and | ||||||
|     performance.""" |     performance. | ||||||
| 
 | 
 | ||||||
|  |     LICENSING INFORMATION: By downloading, installing and using this software, | ||||||
|  |     you agree to the terms and conditions of the AMD AOCL-FFTW license | ||||||
|  |     agreement.  You may obtain a copy of this license agreement from | ||||||
|  |     https://www.amd.com/en/developer/aocl/libm/libm-4-0-eula.html | ||||||
|  |     https://www.amd.com/en/developer/aocl/libm/libm-eula.html | ||||||
|  |     """ | ||||||
|  | 
 | ||||||
|  |     _name = "amdlibm" | ||||||
|     homepage = "https://developer.amd.com/amd-aocl/amd-math-library-libm/" |     homepage = "https://developer.amd.com/amd-aocl/amd-math-library-libm/" | ||||||
|     git = "https://github.com/amd/aocl-libm-ose.git" |     git = "https://github.com/amd/aocl-libm-ose.git" | ||||||
|  |     url = "https://github.com/amd/aocl-libm-ose/archive/refs/tags/3.0.tar.gz" | ||||||
|     maintainers = ["amd-toolchain-support"] |     maintainers = ["amd-toolchain-support"] | ||||||
| 
 | 
 | ||||||
|     # If a user who doesn't specify a version |     version("4.0", sha256="038c1eab544be77598eccda791b26553d3b9e2ee4ab3f5ad85fdd2a77d015a7d") | ||||||
|     # amdlibm installed for commit ID:4033e02 |     version("3.2", sha256="c75b287c38a3ce997066af1f5c8d2b19fc460d5e56678ea81f3ac33eb79ec890") | ||||||
|     # of master branch. |     version("3.1", sha256="dee487cc2d89c2dc93508be2c67592670ffc1d02776c017e8907317003f48845") | ||||||
|     # To install amdlibm from latest master branch: |     version("3.0", sha256="eb26b5e174f43ce083928d0d8748a6d6d74853333bba37d50057aac2bef7c7aa") | ||||||
|     # spack install amdlibm ^amdlibm@master |  | ||||||
| 
 |  | ||||||
|     version("3.2", branch="aocl-3.2") |  | ||||||
|     version("3.1", branch="aocl-3.1") |  | ||||||
|     version("3.0", branch="aocl-3.0") |  | ||||||
|     version("2.2", commit="4033e022da428125747e118ccd6fdd9cee21c470") |     version("2.2", commit="4033e022da428125747e118ccd6fdd9cee21c470") | ||||||
| 
 | 
 | ||||||
|     variant("verbose", default=False, description="Building with verbosity") |     variant("verbose", default=False, description="Building with verbosity") | ||||||
| @@ -41,13 +45,10 @@ class Amdlibm(SConsPackage): | |||||||
|     patch("0001-libm-ose-Scripts-cleanup-pyc-files.patch", when="@2.2") |     patch("0001-libm-ose-Scripts-cleanup-pyc-files.patch", when="@2.2") | ||||||
|     patch("0002-libm-ose-prevent-log-v3.c-from-building.patch", when="@2.2") |     patch("0002-libm-ose-prevent-log-v3.c-from-building.patch", when="@2.2") | ||||||
| 
 | 
 | ||||||
|     conflicts("%gcc@:9.1.0", msg="Minimum required GCC version is 9.2.0") |     conflicts("%gcc@:9.1.0", msg="Minimum supported GCC version is 9.2.0") | ||||||
|     conflicts("%gcc@11.2.0:", msg="Maximum required GCC version is 11.1.0") |     conflicts("%gcc@12.2.0:", msg="Maximum supported GCC version is 12.1.0") | ||||||
|     conflicts( |     conflicts("%clang@9:", msg="Minimum supported Clang version is 9.0.0") | ||||||
|         "%aocc@3.2.0", |     conflicts("%aocc@3.2.0", msg="dependency on python@3.6.2") | ||||||
|         when="@2.2:3.0", |  | ||||||
|         msg="amdlibm 2.2 and 3.0 versions are not supported with AOCC 3.2.0", |  | ||||||
|     ) |  | ||||||
| 
 | 
 | ||||||
|     def build_args(self, spec, prefix): |     def build_args(self, spec, prefix): | ||||||
|         """Setting build arguments for amdlibm""" |         """Setting build arguments for amdlibm""" | ||||||
| @@ -56,14 +57,14 @@ def build_args(self, spec, prefix): | |||||||
|         # we are circumventing the use of |         # we are circumventing the use of | ||||||
|         # Spacks compiler wrappers because |         # Spacks compiler wrappers because | ||||||
|         # SCons wipes out all environment variables. |         # SCons wipes out all environment variables. | ||||||
|         if spec.satisfies("@:3.0 %aocc"): |         if self.spec.satisfies("@:3.0 %aocc"): | ||||||
|             args.append("--compiler=aocc") |             args.append("--compiler=aocc") | ||||||
| 
 | 
 | ||||||
|         var_prefix = "" if spec.satisfies("@:3.0") else "ALM_" |         var_prefix = "" if self.spec.satisfies("@:3.0") else "ALM_" | ||||||
|         args.append("{0}CC={1}".format(var_prefix, self.compiler.cc)) |         args.append("{0}CC={1}".format(var_prefix, self.compiler.cc)) | ||||||
|         args.append("{0}CXX={1}".format(var_prefix, self.compiler.cxx)) |         args.append("{0}CXX={1}".format(var_prefix, self.compiler.cxx)) | ||||||
| 
 | 
 | ||||||
|         if "+verbose" in spec: |         if "+verbose" in self.spec: | ||||||
|             args.append("--verbose=1") |             args.append("--verbose=1") | ||||||
|         else: |         else: | ||||||
|             args.append("--verbose=0") |             args.append("--verbose=0") | ||||||
| @@ -78,3 +79,6 @@ def create_symlink(self): | |||||||
|         with working_dir(self.prefix.lib): |         with working_dir(self.prefix.lib): | ||||||
|             os.symlink("libalm.a", "libamdlibm.a") |             os.symlink("libalm.a", "libamdlibm.a") | ||||||
|             os.symlink("libalm.so", "libamdlibm.so") |             os.symlink("libalm.so", "libamdlibm.so") | ||||||
|  |             if self.spec.satisfies("@4.0:"): | ||||||
|  |                 os.symlink("libalmfast.a", "libamdlibmfast.a") | ||||||
|  |                 os.symlink("libalmfast.so", "libamdlibmfast.so") | ||||||
|   | |||||||
| @@ -16,6 +16,12 @@ class Amdscalapack(ScalapackBase): | |||||||
|     AMD's optimized version of ScaLAPACK enables using BLIS and |     AMD's optimized version of ScaLAPACK enables using BLIS and | ||||||
|     LibFLAME library that have optimized dense matrix functions and |     LibFLAME library that have optimized dense matrix functions and | ||||||
|     solvers for AMD EPYC processor family CPUs. |     solvers for AMD EPYC processor family CPUs. | ||||||
|  | 
 | ||||||
|  |     LICENSING INFORMATION: By downloading, installing and using this software, | ||||||
|  |     you agree to the terms and conditions of the AMD AOCL-ScaLAPACK license | ||||||
|  |     agreement.  You may obtain a copy of this license agreement from | ||||||
|  |     https://www.amd.com/en/developer/aocl/scalapack/scalapack-libraries-4-0-eula.html | ||||||
|  |     https://www.amd.com/en/developer/aocl/scalapack/scalapack-libraries-eula.html | ||||||
|     """ |     """ | ||||||
| 
 | 
 | ||||||
|     _name = "amdscalapack" |     _name = "amdscalapack" | ||||||
| @@ -24,6 +30,7 @@ class Amdscalapack(ScalapackBase): | |||||||
| 
 | 
 | ||||||
|     maintainers = ["amd-toolchain-support"] |     maintainers = ["amd-toolchain-support"] | ||||||
| 
 | 
 | ||||||
|  |     version("4.0", sha256="f02913b5984597b22cdb9a36198ed61039a1bf130308e778dc31b2a7eb88b33b") | ||||||
|     version("3.2", sha256="9e00979bb1be39d627bdacb01774bc043029840d542fafc934d16fec3e3b0892") |     version("3.2", sha256="9e00979bb1be39d627bdacb01774bc043029840d542fafc934d16fec3e3b0892") | ||||||
|     version("3.1", sha256="4c2ee2c44644a0feec0c6fc1b1a413fa9028f14d7035d43a398f5afcfdbacb98") |     version("3.1", sha256="4c2ee2c44644a0feec0c6fc1b1a413fa9028f14d7035d43a398f5afcfdbacb98") | ||||||
|     version("3.0", sha256="6e6f3578f44a8e64518d276e7580530599ecfa8729f568303ed2590688e7096f") |     version("3.0", sha256="6e6f3578f44a8e64518d276e7580530599ecfa8729f568303ed2590688e7096f") | ||||||
|   | |||||||
| @@ -12,21 +12,28 @@ class AoclSparse(CMakePackage): | |||||||
|     """AOCL-Sparse is a library that contains basic linear algebra subroutines |     """AOCL-Sparse is a library that contains basic linear algebra subroutines | ||||||
|     for sparse matrices and vectors optimized for AMD EPYC family of processors. |     for sparse matrices and vectors optimized for AMD EPYC family of processors. | ||||||
|     It is designed to be used with C and C++. Current functionality of sparse |     It is designed to be used with C and C++. Current functionality of sparse | ||||||
|     library supports SPMV function with CSR and ELLPACK formats.""" |     library supports SPMV function with CSR and ELLPACK formats. | ||||||
| 
 | 
 | ||||||
|  |     LICENSING INFORMATION: By downloading, installing and using this software, | ||||||
|  |     you agree to the terms and conditions of the AMD AOCL-Sparse license agreement. | ||||||
|  |     You may obtain a copy of this license agreement from | ||||||
|  |     https://www.amd.com/en/developer/aocl/sparse/sparse-libraries-4-0-eula.html | ||||||
|  |     https://www.amd.com/en/developer/aocl/sparse/sparse-libraries-eula.html | ||||||
|  |     """ | ||||||
|  | 
 | ||||||
|  |     _name = "aocl-sparse" | ||||||
|     homepage = "https://developer.amd.com/amd-aocl/aocl-sparse/" |     homepage = "https://developer.amd.com/amd-aocl/aocl-sparse/" | ||||||
|     url = "https://github.com/amd/aocl-sparse/archive/3.0.tar.gz" |     url = "https://github.com/amd/aocl-sparse/archive/3.0.tar.gz" | ||||||
|     git = "https://github.com/amd/aocl-sparse.git" |     git = "https://github.com/amd/aocl-sparse.git" | ||||||
| 
 | 
 | ||||||
|     maintainers = ["amd-toolchain-support"] |     maintainers = ["amd-toolchain-support"] | ||||||
| 
 | 
 | ||||||
|  |     version("4.0", sha256="68524e441fdc7bb923333b98151005bed39154d9f4b5e8310b5c37de1d69c2c3") | ||||||
|     version("3.2", sha256="db7d681a8697d6ef49acf3e97e8bec35b048ce0ad74549c3b738bbdff496618f") |     version("3.2", sha256="db7d681a8697d6ef49acf3e97e8bec35b048ce0ad74549c3b738bbdff496618f") | ||||||
|     version("3.1", sha256="8536f06095c95074d4297a3d2910654085dd91bce82e116c10368a9f87e9c7b9") |     version("3.1", sha256="8536f06095c95074d4297a3d2910654085dd91bce82e116c10368a9f87e9c7b9") | ||||||
|     version("3.0", sha256="1d04ba16e04c065051af916b1ed9afce50296edfa9b1513211a7378e1d6b952e") |     version("3.0", sha256="1d04ba16e04c065051af916b1ed9afce50296edfa9b1513211a7378e1d6b952e") | ||||||
|     version("2.2", sha256="33c2ed6622cda61d2613ee63ff12c116a6cd209c62e54307b8fde986cd65f664") |     version("2.2", sha256="33c2ed6622cda61d2613ee63ff12c116a6cd209c62e54307b8fde986cd65f664") | ||||||
| 
 | 
 | ||||||
|     conflicts("%gcc@:9.1", msg="Minimum required GCC version is 9.2.0") |  | ||||||
| 
 |  | ||||||
|     variant( |     variant( | ||||||
|         "build_type", |         "build_type", | ||||||
|         default="Release", |         default="Release", | ||||||
| @@ -35,7 +42,17 @@ class AoclSparse(CMakePackage): | |||||||
|     ) |     ) | ||||||
|     variant("shared", default=True, description="Build shared library") |     variant("shared", default=True, description="Build shared library") | ||||||
|     variant("ilp64", default=False, description="Build with ILP64 support") |     variant("ilp64", default=False, description="Build with ILP64 support") | ||||||
|  |     variant("examples", default=False, description="Build sparse examples") | ||||||
|  |     variant("unit_tests", default=False, description="Build sparse unit tests") | ||||||
|  |     variant("benchmarks", default=False, description="Build Build benchmarks") | ||||||
|  |     variant( | ||||||
|  |         "avx", | ||||||
|  |         default=False, | ||||||
|  |         when="@4.0: target=zen4:", | ||||||
|  |         description="Enable experimental AVX512 support", | ||||||
|  |     ) | ||||||
| 
 | 
 | ||||||
|  |     depends_on("boost", when="+benchmarks") | ||||||
|     depends_on("boost", when="@2.2") |     depends_on("boost", when="@2.2") | ||||||
|     depends_on("cmake@3.5:", type="build") |     depends_on("cmake@3.5:", type="build") | ||||||
| 
 | 
 | ||||||
| @@ -70,15 +87,14 @@ def cmake_args(self): | |||||||
|         else: |         else: | ||||||
|             args.append("-DCMAKE_BUILD_TYPE=Release") |             args.append("-DCMAKE_BUILD_TYPE=Release") | ||||||
| 
 | 
 | ||||||
|         args.extend( |         args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) | ||||||
|             [ |         args.append(self.define_from_variant("BUILD_CLIENTS_SAMPLES", "examples")) | ||||||
|                 self.define_from_variant("BUILD_SHARED_LIBS", "shared"), |         args.append(self.define_from_variant("BUILD_CLIENTS_TESTS", "unit_tests")) | ||||||
|                 "-DBUILD_CLIENTS_BENCHMARKS:BOOL=%s" % ("ON" if self.run_tests else "OFF"), |         args.append(self.define_from_variant("BUILD_CLIENTS_BENCHMARKS", "benchmarks")) | ||||||
|             ] |         args.append(self.define_from_variant("USE_AVX512", "avx")) | ||||||
|         ) |  | ||||||
| 
 | 
 | ||||||
|         if spec.satisfies("@3.0:"): |         if spec.satisfies("@3.0:"): | ||||||
|             args.extend([self.define_from_variant("BUILD_ILP64", "ilp64")]) |             args.append(self.define_from_variant("BUILD_ILP64", "ilp64")) | ||||||
| 
 | 
 | ||||||
|         return args |         return args | ||||||
| 
 | 
 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user