0403 Compilation PETSc Linux

Kirill Terekhov edited this page Sep 22, 2015 · 7 revisions

Compiling INMOST with PETSc on Linux

INMOST may be configured with optional PETSc support. In this case INMOST will support calling linear solvers from PETSc package, i.e. you will be able to activate Solver::PETSc package in Solver::Solver constructor.

INMOST requires PETSc version 3.5.0 or higher.

Compiling PETSc

PETSc installer can also install a lot of other dependencies for you. The following instructions assume that MPI is already installed and functional. You can use option --download-openmpi to install Open MPI with PETSc.

These steps can take some time.

cd "$INMOST_ROOT"
wget http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.5.2.tar.gz
tar zxf petsc-lite-3.5.2.tar.gz
cd petsc-3.5.2
export PETSC_DIR="`pwd`"
export PETSC_ARCH=linux-gnu-debug
./configure --download-f2cblaslapack --with-mpi=1
make all

You may as well compile optimized version of PETSc for timing and production runs.

PETSC_ARCH=linux-gnu-opt ./configure --download-f2cblaslapack --with-mpi=1 --with-debugging=0 -CFLAGS="-O2" -CXXFLAGS="-O2"
make PETSC_ARCH=linux-gnu-opt all

Once you are ready to switch to optimized version run

export PETSC_ARCH=linux-gnu-opt

and reconfigure and recompile INMOST.

Compiling INMOST with PETSc support

Make sure the environment variables PETSC_DIR and PETSC_ARCH are initialized correctly. CMake will detect your PETSc installation if both variables are present.

cd "$INMOST_ROOT"
mkdir -p INMOST-build
cd INMOST-build
cmake -DUSE_SOLVER_PETSC=ON ../INMOST-0.1
make all

Changing default compilers

The simplest way to use different compilers is to provide specific MPI wrappers to this compilers. This highly depends on you MPI installation. Below you will find several examples of using Intel Compilers with different MPI libraries.

If you use MPICH, you can set environment variables MPICH_CC, MPICH_CXX and MPICH_F77 to override default compilers.

cd "$PETSC_DIR"
export PETSC_ARCH=linux-intel-debug
export MPICH_CC=icc
export MPICH_CXX=icpc
export MPICH_F77=ifort
./configure --download-f2cblaslapack --with-mpi=1
make all

cd "$INMOST_ROOT"
mkdir -p INMOST-build-intel
cd INMOST-build-intel
cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DUSE_SOLVER_PETSC=ON ../INMOST-0.1
make all

If you use Intel MPI, then usually you will have separate mpiicc, mpiicpc and mpiifort wrappers.

cd "$PETSC_DIR"
export PETSC_ARCH=linux-intel-debug
./configure --with-cc=mpiicc --with-cxx=mpiicpc --with-fc=mpiifort --download-f2cblaslapack --with-mpi=1
make all

cd "$INMOST_ROOT"
mkdir -p INMOST-build-intel
cd INMOST-build-intel
cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DMPI_C_COMPILER=mpiicc -DMPI_CXX_COMPILER=mpiicpc -DUSE_SOLVER_PETSC=ON ../INMOST-0.1
make all

Note, that you can also use PETSc installer to download and compile Open MPI using your desired compilers.

cd "$PETSC_DIR"
export PETSC_ARCH=linux-intel-debug
./configure --with-cc=icc --with-cxx=icpc --with-fc=ifort --download-f2cblaslapack --download-openmpi=1
make all

cd "$INMOST_ROOT"
mkdir -p INMOST-build-intel
cd INMOST-build-intel
cmake -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc -DMPI_C_COMPILER="$PETSC_DIR/$PETSC_ARCH/bin/mpicc" -DMPI_CXX_COMPILER="$PETSC_DIR/$PETSC_ARCH/bin/mpic++" -DMPIEXEC="$PETSC_DIR/$PETSC_ARCH/bin/mpiexec" -DUSE_SOLVER_PETSC=ON ../INMOST-0.1
make all

Refer to your MPI manual and compiler documentation for further information.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.