New package: SLATE (#10434)
This commit is contained in:
		 G-Ragghianti
					G-Ragghianti
				
			
				
					committed by
					
						 Peter Scheibel
						Peter Scheibel
					
				
			
			
				
	
			
			
			 Peter Scheibel
						Peter Scheibel
					
				
			
						parent
						
							c698384216
						
					
				
				
					commit
					9630d732d6
				
			
							
								
								
									
										63
									
								
								var/spack/repos/builtin/packages/slate/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								var/spack/repos/builtin/packages/slate/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | |||||||
|  | # Copyright 2013-2019 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) | ||||||
|  |  | ||||||
|  | from spack import * | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Slate(Package): | ||||||
|  |     """The Software for Linear Algebra Targeting Exascale (SLATE) project is | ||||||
|  |     to provide fundamental dense linear algebra capabilities to the US | ||||||
|  |     Department of Energy and to the high-performance computing (HPC) community | ||||||
|  |     at large. To this end, SLATE will provide basic dense matrix operations | ||||||
|  |     (e.g., matrix multiplication, rank-k update, triangular solve), linear | ||||||
|  |     systems solvers, least square solvers, singular value and eigenvalue | ||||||
|  |     solvers.""" | ||||||
|  |  | ||||||
|  |     homepage = "https://icl.utk.edu/slate/" | ||||||
|  |     hg      = "https://bitbucket.org/icl/slate" | ||||||
|  |     maintainers = ['G-Ragghianti'] | ||||||
|  |  | ||||||
|  |     version('develop', hg=hg) | ||||||
|  |  | ||||||
|  |     variant('cuda',   default=True, description='Build with CUDA support.') | ||||||
|  |     # SLATE will eventually be buildable without intel-mkl by using other | ||||||
|  |     # providers of cblas and scalapack. | ||||||
|  |     # variant('mkl',  default=True, description='Build using Intel MKL.') | ||||||
|  |     variant('mpi',    default=True, description='Build with MPI support.') | ||||||
|  |     variant('openmp', default=True, description='Build with OpenMP support.') | ||||||
|  |  | ||||||
|  |     depends_on('cuda@9:', when='+cuda') | ||||||
|  |     depends_on('intel-mkl') | ||||||
|  |     # The cblas and scalapack dependencies are provided by MKL only for now. | ||||||
|  |     # depends_on('cblas') | ||||||
|  |     # depends_on('scalapack') | ||||||
|  |     depends_on('mpi', when='+mpi') | ||||||
|  |  | ||||||
|  |     conflicts('%gcc@:5') | ||||||
|  |  | ||||||
|  |     def setup_environment(self, spack_env, run_env): | ||||||
|  |         if('+cuda' in self.spec): | ||||||
|  |             spack_env.prepend_path('CPATH', self.spec['cuda'].prefix.include) | ||||||
|  |         spack_env.prepend_path('CPATH', self.spec['intel-mkl'].prefix | ||||||
|  |                                + '/mkl/include') | ||||||
|  |  | ||||||
|  |     def install(self, spec, prefix): | ||||||
|  |         f_cuda = "1" if spec.variants['cuda'].value else "0" | ||||||
|  |         f_mpi = "1" if spec.variants['mpi'].value else "0" | ||||||
|  |         f_openmp = "1" if spec.variants['openmp'].value else "0" | ||||||
|  |         f_mkl = "1" if spec.variants['mkl'].value else "0" | ||||||
|  |  | ||||||
|  |         compiler = 'mpicxx' if spec.variants['mpi'].value else '' | ||||||
|  |  | ||||||
|  |         make('mpi=' + f_mpi, 'mkl=1', 'cuda=' + f_cuda, 'openmp=' + f_openmp, | ||||||
|  |              'mkl=' + f_mkl, 'CXX=' + compiler) | ||||||
|  |         install_tree('lib', prefix.lib) | ||||||
|  |         install_tree('test', prefix.test) | ||||||
|  |         mkdirp(prefix.include) | ||||||
|  |         install('slate.hh', prefix.include) | ||||||
|  |         install('lapack_api/lapack_slate.hh', | ||||||
|  |                 prefix.include + "/slate_lapack_api.hh") | ||||||
|  |         install('scalapack_api/scalapack_slate.hh', | ||||||
|  |                 prefix.include + "/slate_scalapack_api.hh") | ||||||
		Reference in New Issue
	
	Block a user