# IT4Innovations # LK JK name = 'PETSc' version = '3.17.2' homepage = 'https://www.mcs.anl.gov/petsc' description = """PETSc, pronounced PET-see (the S is silent), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations.""" toolchain = {'name': 'foss', 'version': '2021a'} import os if os.environ.get("CLUSTERNAME") in ["KAROLINA"]: toolchainopts = {'openmp': True, 'usempi': True, 'optarch': 'march=core-avx2', 'pic': True} else: toolchainopts = {'openmp': True, 'usempi': True, 'pic': True} source_urls = [ 'https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/', 'ftp://ftp.mcs.anl.gov/pub/petsc/release-snapshots/', ] sources = [SOURCELOWER_TAR_GZ] patches = [ 'PETSc_ranlib-fix.patch', ] checksums = [ '2313dd1ca41bf0ace68671ea6f8d4abf90011ed899f5e1e08658d3f18478359d', # petsc-3.17.2.tar.gz '64cf9d5008d5e92117e65bdec5316d991b6a6b8c8ecf7ea46eb790a498266297', # PETSc_ranlib-fix.patch ] builddependencies = [('CMake', '3.20.1')] dependencies = [ ('Python', '3.9.5'), ('SciPy-bundle', '2021.05'), ('Boost', '1.76.0'), ('METIS', '5.1.0'), ('SCOTCH', '6.1.0'), ('MUMPS', '5.4.0', '-metis'), # ('SuiteSparse', '5.10.1', '-METIS-5.1.0'), ('Hypre', '2.24.0'), ] # enabling --with-mpi4py seems to be totally broken, leads to make errors like: # No rule to make target 'mpi4py-build' configopts = ' CC=$CC CXX=$CXX FC=$FC F77=$F77 F90=$F90 ' configopts += ' CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS FFLAGS=$FFLAGS F90FLAGS=$F90FLAGS ' configopts += ' CPPFLAGS=$CPPFLAGS LDFLAGS=$LDFLAGS ' configopts += ' --LIBS="$LIBS -lrt" --with-mpi4py=0 ' #configopts = '--LIBS="$LIBS -lrt" --with-mpi4py=0 --with-fortran=1 --download-scalapack ' #configopts += '--download-parmetis --download-metis --download-mumps=yes' shared_libs = 1 # only required when building PETSc in a SLURM job environment # configopts += '--with-batch=1 --known-mpi-shared-libraries=1 --known-64-bit-blas-indices=0 ' # prebuildopts = "srun ./conftest-arch-linux2-c-opt && ./reconfigure-arch-linux2-c-opt.py && " moduleclass = 'numlib'