diff --git a/cfg/packages.yaml b/cfg/packages.yaml index 4854708..4d62e75 100644 --- a/cfg/packages.yaml +++ b/cfg/packages.yaml @@ -88,11 +88,15 @@ packages: externals: - spec: zlib@1.2.11 prefix: /usr - bzip2: - externals: - - spec: bzip2@1.0.6 - prefix: / + #bzip2: + # externals: + # - spec: bzip2@1.0.6 + # prefix: / tar: externals: - spec: tar@1.29 prefix: / + cpio: + externals: + - spec: cpio@2.12 + prefix: / diff --git a/packages/compss/package.py b/packages/compss/package.py index cc949d9..9637403 100644 --- a/packages/compss/package.py +++ b/packages/compss/package.py @@ -37,7 +37,7 @@ class Compss(Package): version('2.10', sha256='0795ca7674f1bdd0faeac950fa329377596494f64223650fe65a096807d58a60', preferred=True) # dependencies. - depends_on('python') + depends_on('python@3.6') depends_on('openjdk') depends_on('boost') depends_on('libxml2') diff --git a/packages/fesom2/package.py b/packages/fesom2/package.py index 81e1d18..1bea1ba 100644 --- a/packages/fesom2/package.py +++ b/packages/fesom2/package.py @@ -43,21 +43,33 @@ class Fesom2(CMakePackage): depends_on('blas') variant('hecuba', default=False, description='Builds a MPI version of the library') - def setup_build_environment(self, env): - env.set('CC', self.spec['mpi'].mpicc) - env.set('FC',self.spec['mpi'].mpifc) - env.set('CXX', self.spec['mpi'].mpicxx) - env.set('F77', self.spec['mpi'].mpif77) + + #def setup_build_environment(self, env): + #env.set('CC', self.spec['mpi'].mpicc) + #env.set('FC',self.spec['mpi'].mpifc) + #env.set('CXX', self.spec['mpi'].mpicxx) + #env.set('F77', self.spec['mpi'].mpif77) + #env.prepend_path('LD_LIBRARY_PATH', str(self.spec['blas'].libs.directories[0])) + #env.prepend_path('C_INCLUDE_PATH', str(self.spec['blas'].headers.directories[0])) + #env.append_flags('LD_FLAGS',self.spec['blas'].libs.ld_flags) @run_after('install') def copy_fesom(self): - #print("***** Calling super install ****") + #pmrint("***** Calling super install ****") #super().install(spec, prefix) print("***** Coping fesom binary to bin ****") mkdirp(self.prefix.bin) install(self.stage.source_path+'/bin/fesom.x', self.prefix.bin) + def patch(self): + microarch = self.spec.target + comp = self.spec.compiler + filter_file("-march=native", microarch.optimization_flags(comp.name, str(comp.version)), + "Makefile.in_gnu_impi") + filter_file("-march=native", microarch.optimization_flags(comp.name, str(comp.version)), + "src/CMakeLists.txt") def cmake_args(self): + spec = self.spec # FIXME: Add arguments other than # FIXME: CMAKE_INSTALL_PREFIX and CMAKE_BUILD_TYPE # FIXME: If not needed delete this function @@ -66,4 +78,37 @@ def cmake_args(self): args.append('-DUSE_HECUBA=ON') else: args.append('-DUSE_HECUBA=OFF') + args.append(self.define('CMAKE_C_COMPILER', spec['mpi'].mpicc)) + args.append(self.define('CMAKE_CXX_COMPILER', spec['mpi'].mpicxx)) + args.append(self.define('CMAKE_Fortran_COMPILER', spec['mpi'].mpifc)) + if ('^intel-mkl' in spec or '^intel-parallel-studio+mkl' in spec): + args.extend([self.define("BLA_VENDOR", "Intel10_64ilp")]) + elif '^netlib-lapack' in spec: + args.extend([self.define("BLA_VENDOR", "Generic")]) + elif '^openblas' in spec: + args.extend([self.define("BLA_VENDOR", "OpenBLAS")]) + microarch = self.spec.target + comp = self.spec.compiler + math_libs = self.spec['blas'].libs + args.extend([self.define("CMAKE_C_FLAGS",microarch.optimization_flags(comp.name, str(comp.version)) +" "+self.spec['blas'].headers.include_flags)]) + args.extend([self.define("CMAKE_CXX_FLAGS",microarch.optimization_flags(comp.name, str(comp.version))+ " "+self.spec['blas'].headers.include_flags)]) + args.extend([self.define("CMAKE_Fortran_FLAGS",microarch.optimization_flags(comp.name, str(comp.version))+" "+self.spec['blas'].headers.include_flags)]) + #args.append('-DBLA_VENDOR=Intel10_64ilp') + #args.append('-DBLA_STATIC=ON') + #args.append('-DBLA_VENDOR=OpenBLAS') + """ + blas = self.spec['blas'].libs + args.extend([ + '-DBLAS_LIBRARY_NAMES={0}'.format(';'.join(blas.names)), + '-DBLAS_LIBRARY_DIRS={0}'.format(';'.join(blas.directories))]) + math_libs = self.spec['blas'].libs + args.append( + '-DMATH_LIBS:STRING={0}'.format(math_libs.ld_flags) + ) + """ + + args.append( + '-DBLAS_LIBRARIES={0}'.format("-L"+self.spec['blas'].libs.directories[0]+" -Wl,--no-as-needed -lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm -ldl") + ) return args + diff --git a/packages/kratos/fom.json b/packages/kratos/fom.json new file mode 100644 index 0000000..9cb1d95 --- /dev/null +++ b/packages/kratos/fom.json @@ -0,0 +1,14 @@ +{ + "execution" : { + "type":"task" + }, + "constraints" : { + "computing_units": "$KRATOS_CUS" + }, + "parameters" : { + "returns" : 1, + "model" : "IN", + "parameters" : "IN", + "sample" : "IN" + } +} diff --git a/packages/kratos/model.json b/packages/kratos/model.json new file mode 100644 index 0000000..6030976 --- /dev/null +++ b/packages/kratos/model.json @@ -0,0 +1,13 @@ +{ + "execution" : { + "type":"task" + }, + "constraints" : { + "computing_units": "$KRATOS_CUS" + }, + "parameters" : { + "returns" : 2, + "model_file" : "FILE_IN", + "parameters" : "IN" + } +} diff --git a/packages/kratos/package.py b/packages/kratos/package.py index b4fe4db..20d5c11 100644 --- a/packages/kratos/package.py +++ b/packages/kratos/package.py @@ -40,14 +40,17 @@ class Kratos(CMakePackage): # FIXME: Add dependencies if required. depends_on('boost') - depends_on('python@3:') - + depends_on('python@3.6:') + depends_on('blas') + #variant variant('mpi', default=False, description='Builds a MPI version of the library') depends_on('mpi', when='+mpi') variant('mmg', default=False, description='Builds a MMG version of the library') depends_on('mmg', when='+mmg') variant('apps', default='none', multi=True, description='Builds apps version of the library') + variant('eigen_mkl', default=False, description='Builds a Eigen_mkl version of the library') + depends_on('intel-mkl', when='+eigen_mkl') def url_for_version(self, version): url = "https://github.com/KratosMultiphysics/Kratos/archive/refs/tags/v{0}.tar.gz" @@ -61,20 +64,25 @@ def setup_build_environment(self, env): for app in apps: kratos_apps = kratos_apps + os.path.join(applications_path, app) + ";" env.set('KRATOS_APPLICATIONS', kratos_apps) + print("PYTHON_EXECUTABLE:" + str(self.spec['python'].prefix.bin + "/python3")) + env.set('PYTHON_EXECUTABLE',self.spec['python'].prefix.bin + "/python3") def setup_run_environment(self, env): env.prepend_path('LD_LIBRARY_PATH', self.prefix.lib) env.prepend_path('PYTHONPATH', self.prefix) + def cmake_args(self): # Add arguments other than # CMAKE_INSTALL_PREFIX and CMAKE_BUILD_TYPE args = [] if self.spec.variants['mpi'].value == True: - args.append('USE_MPI=ON') + args.append('-DUSE_MPI=ON') else: - args.append('USE_MPI=OFF') + args.append('-DUSE_MPI=OFF') if self.spec.variants['mmg'].value == True: - args.append('USE_MMG=ON') + args.append('-DUSE_MMG=ON') + if self.spec.variants['eigen_mkl'].value == True: + args.append('-DUSE_EIGEN_MKL=ON') return args diff --git a/packages/kratos/rom.json b/packages/kratos/rom.json new file mode 100644 index 0000000..a9ee6c4 --- /dev/null +++ b/packages/kratos/rom.json @@ -0,0 +1,15 @@ +{ + "execution" : { + "type":"task" + }, + "constraints" : { + "computing_units": "$KRATOS_CUS" + }, + "parameters" : { + "returns" : 1, + "model" : "IN", + "parameters" : "IN", + "sample": "IN", + "rom" : "FILE_IN" + } +} diff --git a/packages/py-dislib/dislib.json b/packages/py-dislib/dislib.json new file mode 100644 index 0000000..dd1580e --- /dev/null +++ b/packages/py-dislib/dislib.json @@ -0,0 +1,7 @@ + +{ + "execution": { + "type":"workflow" + } +} + diff --git a/packages/py-dislib/package.py b/packages/py-dislib/package.py index c579bbc..d038b2c 100644 --- a/packages/py-dislib/package.py +++ b/packages/py-dislib/package.py @@ -42,9 +42,9 @@ class PyDislib(PythonPackage): # FIXME: Add dependencies if required. Only add the python dependency # if you need specific versions. A generic python dependency is # added implicity by the PythonPackage class. - depends_on('python@3:', type=('build', 'run')) + depends_on('python@3.6', type=('build', 'run')) #depends_on('py-setuptools', type='build') - depends_on('py-scikit-learn@0.23^py-scipy@1.5.0^py-numpy@1.19', type=('run')) + depends_on('py-scikit-learn@0.23.2^py-scipy@1.5.0^py-numpy@1.19.5', type=('run')) #depends_on('py-scikit-learn', type=('run')) #depends_on('py-cvxpy', type=('run'))