mpi安装
dowload
./configure --prefix=/opt/mpich
make
make install
sudo ln -s /opt/mpich/include /usr/local/include/mpi
petsc 安装:
./configure --with-mpi-dir=/opt/mpich
make
make install DESTDIR=/opt/petsc (安装往后路径为/opt/petsc/home/ofeli/petsc)
sudo ln -s /opt/petsc/home/petsc/include /usr/local/include/petsc
ofeli安装:
export CC=mpicc
export CXX=mpicxx
export PETSC_LIBS=/opt/petsc/home/petsc/lib/libpetsc.so
export MPI_LIBS=/opt/mpich/lib/libmpi.so
./configure --with-petsc --prefix=/usr/local(这里指include/petsc去哪里找,/usr/local/include/petsc里找,这里为软链接,指向 /opt/petsc/home/petsc/include)
make
------------------------
遇到问题:
1)运行时找不到libpetsc_real.so ,可以安装libpet3.7.7(包含libopenmpi,dmumps,..)
2)运行时MPI_abort,可能是编译时用的mpich的mpicc(/opt/mpich中),而运行时调用的时libopenmpi的库
3)先统一编译petsc采用mpich和相关编辑器:
./configure --download-fblaslapack --with-mpi-dir=/opt/mpich --download-hdf5=yes
(有mpi的dir就不需要--with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90)
或者
./configure --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 --download-fblaslapack --download-mpich --download-hdf5=yes
或者
./configure --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 --download-fblaslapack --download-mpich=/home/ofeli/mpich-3.0.4.tar.gz --download-hdf5=yes
4)为了统一,可以考虑同意用一个petsc的编译结果,可以从petsc-docker中提取,安装统一放到/opt/installpetsc
然后建立连接:
ln -s /opt/installpetsc/include /usr/lcoal/include/petsc
ln -s /opt/installpetsc/include /usr/lcoal/include/mpi
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/installpetsc/lib
export PETSC_LIBS=/opt/installpetsc/lib/libpetsc.so
export MPI_LIBS=/opt/installpetsc/lib/libmpi.so
export CC=mpicc
export CXX=mpicxx
./configure --with-petsc