[petsc-dev] updates to handling of external packages
Barry Smith
bsmith at mcs.anl.gov
Wed Sep 10 17:16:20 CDT 2014
PETSc developers,
As many of you know I have been cleaning up the PETSc handling of external packages including the support for —download-xxxx. I am close to being done, the major changes are
1) there is no distinction between “PETSc” and BuildSystem packages, they are now all in config/BuildSystem/config/packages
2) the PETSc.package.NewPackage is gone
3) All external packages that configure with GNU configure are now derived off the GNUPackage class and
those that configure with CMake are derived off the CMakePackage class; this eliminated a bunch of redundant cute and pasted code
4) I simplified the GNUPackage, removing a bunch of unneeded methods
5) I removed a bunch of dead packages
6) When installing to a —prefix location the external packages install directly there instead of first too PETSC_ARCH and then getting moved there when PETSc is installed; this means —prefix works for all packages now including MPICH and OpenMP. When —prefix is in a system location, the person installing will be prompted for the sudo password for the installs; this is not ideal but seems the lessor evil
7) the consistency checking is not as good as before but can be improved per package as we find issues.
If all goes well with next for a while, this will go into master and be, more or less transparent except for bugs that come up. I am hoping these changes will make maintenance and support easier in the future.
Barry
For fun I’ve listed below the “configure” options needed by the various packages for just two items: MPI and 64 bit integers. This is a little peephole into why the HPC software ecosystem is so dang frustrating.
--------------------------
Configuring package for MPI
--------------------------
GNU configure packages
PETSc -with-mpi-dir OR --with-mpi-lib --with-mpi-include
Sundials --with-mpi-root OR --with-mpi-incdir --with-mpi-libdir --with-mpi-libs
Zoltan same
MOAB --with-mpi=directory
hypre --with-MPI-include --with-MPI-lib-dirs --with-MPI-libs
fftw MPICC=
hdf5 --enable-parallel
Netcfd Just knows?
ml --enable-mpi --with-mpi-libs and pass -I/MPI includes through --with-cflags and --with-cxxflags
mpe MPI_CFLAGS= MPI_CC=
CMake packages
ParMetis just assumes compiler is MPICC?
Elemental -DMPI_C_COMPILER= -DMPI_CXX_COMPILER=
Other packages
SuperLU_dist IMPI= MPILIB=
MUMPS INCPAR=-I/MPI includes LIBPAR=MPI libraries
PTScotch CFLAGS=-I/MPI includes LDFLAGS=MPI libraries
PasTix CCFOPT=-I/MPI include MPCCPROG=mpicc compiler
----------------------------------------
Configuring packages for 64 bit integers
----------------------------------------
GNU configure packages
PETSc -with-64-bit-indices
Sundials NO SUPPORT
Zoltan --with-id-type=ulonglong
MOAB ???
hypre --enable-bigint
fftw ???
hdf5 Hardwired to be size_t
Netcfd
ml NO SUPPORT
CMake packages
ParMetis -DMETIS_USE_LONGINDEX=1
Elemental -DUSE_64BIT_INTS=ON
Other packages
SuperLU_dist -D_LONGINT
MUMPS NO PROPER SUPPORT
PTScotch -DINTSIZE64
PasTix VERSIONINT=_int64 CCTYPES=-DFORCE_INT64
More information about the petsc-dev
mailing list