Adding OpenMP variant to Trilinos. Also building NetCDF with PNetCDF directly, for Trilinos. (#4687)
* Adding OpenMP variant to Trilinos. Also building NetCDF with PNetCDF in Trilinos when necessary. * Adding runtime error for PNetCDF variant in Trilinos when necessary. Omitting unnecessary openmp variant for Trilinos in Nalu. * Changing variant checks to conflicts statements. * Adding comments to Trilinos package.
This commit is contained in:
		
				
					committed by
					
						
						Adam J. Stewart
					
				
			
			
				
	
			
			
			
						parent
						
							bde58a319b
						
					
				
				
					commit
					47fe9e7aad
				
			@@ -151,6 +151,8 @@ class Trilinos(CMakePackage):
 | 
			
		||||
            description='Enable DataTransferKit')
 | 
			
		||||
    variant('fortrilinos',  default=False,
 | 
			
		||||
            description='Enable ForTrilinos')
 | 
			
		||||
    variant('openmp',       default=False,
 | 
			
		||||
            description='Enable OpenMP')
 | 
			
		||||
 | 
			
		||||
    resource(name='dtk',
 | 
			
		||||
             git='https://github.com/ornl-cees/DataTransferKit',
 | 
			
		||||
@@ -167,6 +169,13 @@ class Trilinos(CMakePackage):
 | 
			
		||||
    conflicts('+fortrilinos', when='~fortran')
 | 
			
		||||
    conflicts('+fortrilinos', when='@:99')
 | 
			
		||||
    conflicts('+fortrilinos', when='@master')
 | 
			
		||||
    # Can only use one type of SuperLU
 | 
			
		||||
    conflicts('+superlu-dist', when='+superlu')
 | 
			
		||||
    # For Trilinos v11 we need to force SuperLUDist=OFF, since only the
 | 
			
		||||
    # deprecated SuperLUDist v3.3 together with an Amesos patch is working.
 | 
			
		||||
    conflicts('+superlu-dist', when='@:11.14.3')
 | 
			
		||||
    # PnetCDF was only added after v12.10.1
 | 
			
		||||
    conflicts('+pnetcdf', when='@:12.10.1')
 | 
			
		||||
 | 
			
		||||
    # ###################### Dependencies ##########################
 | 
			
		||||
 | 
			
		||||
@@ -183,9 +192,9 @@ class Trilinos(CMakePackage):
 | 
			
		||||
 | 
			
		||||
    # MPI related dependencies
 | 
			
		||||
    depends_on('mpi')
 | 
			
		||||
    depends_on('netcdf+mpi')
 | 
			
		||||
    depends_on('parallel-netcdf', when="+pnetcdf@master")
 | 
			
		||||
    depends_on('parallel-netcdf', when="+pnetcdf@12.10.2:")
 | 
			
		||||
    depends_on('netcdf+mpi', when="~pnetcdf")
 | 
			
		||||
    depends_on('netcdf+mpi+parallel-netcdf', when="+pnetcdf@master")
 | 
			
		||||
    depends_on('netcdf+mpi+parallel-netcdf', when="+pnetcdf@12.10.2:")
 | 
			
		||||
    depends_on('parmetis', when='+metis')
 | 
			
		||||
    # Trilinos' Tribits config system is limited which makes it very tricky to
 | 
			
		||||
    # link Amesos with static MUMPS, see
 | 
			
		||||
@@ -218,23 +227,8 @@ def url_for_version(self, version):
 | 
			
		||||
        url = "https://github.com/trilinos/Trilinos/archive/trilinos-release-{0}.tar.gz"
 | 
			
		||||
        return url.format(version.dashed)
 | 
			
		||||
 | 
			
		||||
    # check that the combination of variants makes sense
 | 
			
		||||
    def variants_check(self):
 | 
			
		||||
        if ('+superlu-dist' in self.spec and
 | 
			
		||||
            self.spec.satisfies('@11.14.1:11.14.3')):
 | 
			
		||||
            # For Trilinos v11 we need to force SuperLUDist=OFF, since only the
 | 
			
		||||
            # deprecated SuperLUDist v3.3 together with an Amesos patch is
 | 
			
		||||
            # working.
 | 
			
		||||
            raise RuntimeError('The superlu-dist variant can only be used' +
 | 
			
		||||
                               ' with Trilinos @12.0.1:')
 | 
			
		||||
        if '+superlu-dist' in self.spec and '+superlu' in self.spec:
 | 
			
		||||
            # Only choose one type of superlu
 | 
			
		||||
            raise RuntimeError('The superlu-dist and superlu variant' +
 | 
			
		||||
                               ' cannot be used together')
 | 
			
		||||
 | 
			
		||||
    def cmake_args(self):
 | 
			
		||||
        spec = self.spec
 | 
			
		||||
        self.variants_check()
 | 
			
		||||
 | 
			
		||||
        cxx_flags = []
 | 
			
		||||
        options = []
 | 
			
		||||
@@ -346,7 +340,8 @@ def cmake_args(self):
 | 
			
		||||
                '-DTrilinos_ENABLE_SEACASEpu:BOOL=ON',
 | 
			
		||||
                '-DTrilinos_ENABLE_SEACASExodiff:BOOL=ON',
 | 
			
		||||
                '-DTrilinos_ENABLE_SEACASNemspread:BOOL=ON',
 | 
			
		||||
                '-DTrilinos_ENABLE_SEACASNemslice:BOOL=ON'
 | 
			
		||||
                '-DTrilinos_ENABLE_SEACASNemslice:BOOL=ON',
 | 
			
		||||
                '-DTrilinos_ENABLE_SEACASIoss:BOOL=ON'
 | 
			
		||||
            ])
 | 
			
		||||
        else:
 | 
			
		||||
            options.extend([
 | 
			
		||||
@@ -527,6 +522,17 @@ def cmake_args(self):
 | 
			
		||||
 | 
			
		||||
        # ################# Miscellaneous Stuff ######################
 | 
			
		||||
 | 
			
		||||
        # OpenMP
 | 
			
		||||
        if '+openmp' in spec:
 | 
			
		||||
            options.extend([
 | 
			
		||||
                '-DTrilinos_ENABLE_OpenMP:BOOL=ON',
 | 
			
		||||
                '-DKokkos_ENABLE_OpenMP:BOOL=ON'
 | 
			
		||||
            ])
 | 
			
		||||
            if '+tpetra' in spec:
 | 
			
		||||
                options.extend([
 | 
			
		||||
                    '-DTpetra_INST_OPENMP:BOOL=ON'
 | 
			
		||||
                ])
 | 
			
		||||
 | 
			
		||||
        # Fortran lib
 | 
			
		||||
        if '+fortran' in spec:
 | 
			
		||||
            if spec.satisfies('%gcc') or spec.satisfies('%clang'):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user