# IT4Innovations 2019 # kompilovat na cn easyblock = 'ConfigureMake' name = 'PETSc' version = '3.12.2' versionsuffix = '-it4i' homepage = 'http://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': 'intel', 'version': '2018a'} # build is still parallel, PETSc make doesnt support -j opt maxparallel = 0 source_urls = ['http://ftp.mcs.anl.gov/pub/petsc/release-snapshots'] sources = [SOURCELOWER_TAR_GZ] # (build) dependencies provided through EasyBuild builddependencies = [('CMake', '3.16.0', '-rc3', True)] # configure installs dependencies -> remove installdir before configure keeppreviousinstall = True preconfigopts = 'rm -rf %(installdir)s;' petscArch = 'intel-opt' petscDir = '%(builddir)s/%(namelower)s-%(version)s' # config options configopts = '--CFLAGS=-O3 -xHost --CXXFLAGS=-O3 -xHost --FFLAGS=-O3 -xHost --with-c++-support --with-pic=1 ' configopts += '--with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 --with-debugging=0 --with-gnu-compilers=0 ' configopts += '--with-mpi=1 --with-x=0 ' configopts += '--download-metis --download-parmetis --download-mumps --download-superlu --download-superlu_dist ' configopts += '--with-blas-lapack-lib=[$EBROOTIMKL/mkl/lib/intel64_lin/libmkl_intel_lp64.a,libmkl_sequential.a,libmkl_core.a] ' configopts += '--with-scalapack-include=$EBROOTIMKL/mkl/include ' configopts += '--with-scalapack-lib=[$EBROOTIMKL/mkl/lib/intel64_lin/libmkl_scalapack_lp64.a,libmkl_blacs_intelmpi_lp64.a,libmkl_intel_lp64.a,libmkl_sequential.a,libmkl_core.a] ' configopts += '--with-scalapack=1 ' configopts += 'PETSC_ARCH=%s' % petscArch installopts = 'PETSC_DIR=%s PETSC_ARCH=%s' % (petscDir, petscArch) buildopts = installopts + ' all' modextravars = {'PETSC_DIR': '%(installdir)s'} modextrapaths = {'PATH': 'lib/petsc/bin'} moduleclass = 'numlib' # sanity checks runtest = 'test' # run make test after make sanity_check_paths = { 'files': ['include/petscconf.h', 'lib/libpetsc.so'], 'dirs': [] } sanity_check_commands = [('petscmpiexec', '-h')]