Follow the guide @ https://github.com/mcovalt/FEniCS-MKL/blob/master/Dockerfile HPC command https://info.hpc.sussex.ac.uk/hpc-guide/resource.html
#Using node for faster compile
qsub -I -l nodes=1:ppn=16,walltime=04:00:00 -q workq -A hpc_hpc_cdss01
#Enter a node
ssh mike012
export FENICS_ROOT=/project/cs16/tma5/fenics
#export FENICS_ROOT=/project/cs16/tma5/fenics_bigmemt
cd $FENICS_ROOT
module purge
module load git/2.17
module load python/3.6.4-anaconda
#module load boost/1.63.0/INTEL-18.0.0
#module load gcc/6.4.0
module load intel/18.0.0
module load cmake/3.7.2/INTEL-18.0.0
module load impi/2018.0.128
source /home/compilers/Intel/parallel_studio_xe_2018.0/compilers_and_libraries/linux/bin/compilervars.sh intel64
source /home/compilers/Intel/parallel_studio_xe_2018.0/impi/2018.0.128/bin64/mpivars.sh
wget -P download https://www.cmake.org/files/v3.9/cmake-3.9.0.tar.gz
tar -xzf download/cmake-3.9.0.tar.gz
env CC=mpiicc CXX=mpiicpc ./bootstrap
wget -P download "https://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.14.0.tar.gz"
tar -zxf download/petsc-3.14.0.tar.gz
cd petsc-3.14.0
export PETSC_DIR=$PWD
export PETSC_ARCH=centos-intelmkl
./configure \
--with-cc=mpiicc \
--with-cxx=mpiicpc \
--with-fc=mpiifort \
--with-shared-libraries \
--with-debugging=0 \
--with-c-support \
--with-cxx-dialect=C++11 \
--known-mpi-shared-libraries=1 \
--COPTFLAGS="-O3 -xHost -ip -std=gnu11" \
--CXXOPTFLAGS="-O3 -xHost -ip" \
--FOPTFLAGS="-O3 -xHost -ip" \
--with-blas-include=$MKLROOT/include \
--with-blas-lib="-L$MKLROOT/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lmkl_blacs_intelmpi_lp64 -liomp5 -lpthread -lm -ldl" \
--with-lapack-include=$MKLROOT/include \
--with-lapack-lib="-L$MKLROOT/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lmkl_blacs_intelmpi_lp64 -liomp5 -lpthread -lm -ldl" \
--with-blacs-include=$MKLROOT/include \
--with-blacs-lib="-L$MKLROOT/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lmkl_blacs_intelmpi_lp64 -liomp5 -lpthread -lm -ldl" \
--with-scalapack-include=$MKLROOT/include \
--with-scalapack-lib="-L$MKLROOT/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lmkl_blacs_intelmpi_lp64 -liomp5 -lpthread -lm -ldl" \
--with-mkl_pardiso-dir=$MKLROOT/ \
--with-mkl_cpardiso-dir=$MKLROOT/ \
--download-mumps \
--download-hypre \
--download-metis \
--download-parmetis \
--download-suitesparse \
--download-ptscotch \
--prefix=petsc-lib
make PETSC_DIR=$PWD PETSC_ARCH=centos-intelmkl all
make PETSC_DIR=$PWD PETSC_ARCH=centos-intelmkl install
export PETSC_DIR=$FENICS_ROOT/petsc-3.14.0/petsc-lib
export PETSC_ARCH=""
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$FENICS_ROOT/petsc-3.14.0/petsc-lib/
cd $FENICS_ROOT
wget -P download "https://www.zlib.net/zlib-1.2.11.tar.gz"
wget -P download "https://support.hdfgroup.org/ftp/lib-external/szip/2.1.1/src/szip-2.1.1.tar.gz"
wget -P download "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.21/src/hdf5-1.8.21.tar.gz"
wget -P download "https://gitlab.com/libeigen/eigen/-/archive/3.3.8/eigen-3.3.8.tar.bz2"
tar -zxf download/zlib-1.2.11.tar.gz
tar -zxf download/szip-2.1.1.tar.gz
tar -zxf download/hdf5-1.8.21.tar.gz
tar -xvf download/eigen-3.3.8.tar.bz2
Build zlib
cd $FENICS_ROOT/zlib-1.2.11
export CC=icc
export CFLAGS='-O3 -xHost -ip -fPIC'
./configure --prefix=$PWD/zlib-lib
make -j 8 && make install
export ZLIB_DIR=$FENICS_ROOT/zlib-1.2.11/zlib-lib
Build szlib
cd $FENICS_ROOT/szip-2.1.1
export CC=icc
export CFLAGS='-O3 -xHost -ip'
./configure --prefix=$PWD/szlib-lib
make -j 8 && make install
export SZIP_DIR=$FENICS_ROOT/szip-2.1.1/szlib-lib
Build hdf5
cd $FENICS_ROOT/hdf5-1.8.21/
CC=mpiicc ./configure \
--enable-parallel \
--with-zlib=${ZLIB_DIR} \
--with-szlib=${SZIP_DIR} \
--enable-build-mode=production \
--prefix=$PWD/hdf5-lib
make -j 8 && make install
export HDF5_DIR=$FENICS_ROOT/hdf5-1.8.21/hdf5-lib
cd $FENICS_ROOT
wget -P download "https://sourceforge.net/projects/boost/files/boost/1.60.0/boost_1_60_0.tar.gz"
tar -zxf download/boost_1_60_0.tar.gz
cd boost_1_60_0/tools/build
./bootstrap.sh --with-toolset=intel-linux
./b2 install --prefix=$FENICS_ROOT/boost_1_60_0
export PATH=$FENICS_ROOT/boost_1_60_0/bin:${PATH}
cd $FENICS_ROOT/boost_1_60_0
b2 -j 16 \
--with-filesystem \
--with-iostreams \
--with-math \
--with-program_options \
--with-system \
--with-thread \
--with-timer \
--with-regex \
--build-dir=boost-build \
threading=multi \
variant=release \
address-model=64 \
toolset=intel \
stage
export BOOST_DIR=$FENICS_ROOT/boost_1_60_0/
export BOOST_ROOT=$FENICS_ROOT/boost_1_60_0/
export PATH=$FENICS_ROOT/boost_1_60_0/bin:${PATH}
export FENICS_VERSION=2019.1.0
export FENICS_INSTALL=$FENICS_ROOT/fenics$FENICS_VERSION
rm -rf $FENICS_INSTALL
mkdir -p $FENICS_INSTALL && cd $FENICS_INSTALL
git clone --branch=$FENICS_VERSION https://bitbucket.org/fenics-project/fiat.git
git clone --branch=$FENICS_VERSION https://bitbucket.org/fenics-project/dijitso.git
git clone --branch=$FENICS_VERSION https://bitbucket.org/fenics-project/ufl.git
git clone --branch=$FENICS_VERSION.post0 https://bitbucket.org/fenics-project/ffc.git
git clone --branch=$FENICS_VERSION.post0 https://bitbucket.org/fenics-project/dolfin.git
git clone --branch=$FENICS_VERSION https://bitbucket.org/fenics-project/mshr.git
chmod u+w ./*/.git/objects/pack/*
mkdir -p $FENICS_INSTALL/dolfin/build
mkdir -p $FENICS_INSTALL/mshr/build
Install python virtual env and fenics python packages
cd $FENICS_INSTALL
python3 -m pip install --user virtualenv
python3 -m virtualenv --no-download $FENICS_INSTALL
source $FENICS_INSTALL/bin/activate
pip install ply
pip install numpy
LDSHARED='icc -shared' \
CC=icc \
pip3 --no-cache-dir install matplotlib --no-binary :all:
pip3 --no-cache-dir install \
fenics==${FENICS_VERSION} \
mpi4py==3.0.1 \
petsc4py==3.13.0 \
sympy==1.1.1 \
--no-binary :all:
Build pybind11
cd /project/cs16/tma5/fenics
wget -P download "https://github.com/pybind/pybind11/archive/v2.2.3.tar.gz"
tar -xvf download/v2.2.3.tar.gz
cd $FENICS_ROOT/pybind11-2.2.3/
mkdir build && cd build
source $FENICS_INSTALL/bin/activate
cmake -DPYBIND11_TEST=off \
-DCMAKE_INSTALL_PREFIX=../pybind11-lib \
-DPYBIND11_CPP_STANDARD=-std=c++11 ..
make -j 8 && make install
cd ..
export PYBIND11_DIR=$FENICS_ROOT/pybind11-2.2.3/pybind11-lib
Build dolfin
export FENICS_VERSION=2019.1.0
export FENICS_INSTALL=$FENICS_ROOT/fenics$FENICS_VERSION
cd $FENICS_INSTALL/dolfin/build
source $FENICS_INSTALL/bin/activate
export EIGEN3_DIR=$FENICS_ROOT/eigen-3.3.8/
export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$EIGEN3_DIR
#May need to run follwoing script 2 times
CC=MPIICC cmake .. \
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_INSTALL_PREFIX=../fenics-lib \
-DCMAKE_CXX_COMPILER=mpiicpc \
-DCMAKE_CXX_FLAGS="-O3 -xHost -ip -mkl -std=c++11 -gxx-name=$( which g++ )" \
-DCMAKE_C_COMPILER=mpiicc \
-DCMAKE_C_FLAGS="-O3 -xHost -ip -mkl -std=gnu11" \
-DCMAKE_Fortran_COMPILER=mpiifort \
-DCMAKE_VERBOSE_MAKEFILE=ON \
-DHDF5_C_COMPILER_EXECUTABLE=${HDF5_DIR}/bin/h5pcc \
-DHDF5_hdf5_LIBRARY_RELEASE=${HDF5_DIR}/lib/libhdf5.so \
-DDOLFIN_ENABLE_UMFPACK=ON \
-DDOLFIN_ENABLE_CHOLMOD=ON \
-DZLIB_LIBRARY=${ZLIB_DIR}/lib/libz.a \
-DZLIB_INCLUDE_DIR=${ZLIB_DIR}/include \
-DDOLFIN_ENABLE_TRILINOS=OFF \
-DDOLFIN_ENABLE_BENCHMARKS=ON \
-DDOLFIN_AUTO_DETECT_MPI=ON \
-DMPI_CXX_COMPILER=$( which mpiicpc ) \
-DMPI_C_COMPILER=$( which mpiicc ) \
-DHDF5_LIBRARIES=${HDF5_DIR}/lib/libhdf5.so \
-DHDF5_C_COMPILER_EXECUTABLE=${HDF5_DIR}/bin/h5pcc \
-DHDF5_hdf5_LIBRARY_RELEASE=${HDF5_DIR}/lib/libhdf5.so \
-DPYTHON_EXECUTABLE:FILEPATH=$( which python3 ) \
-DBOOST_ROOT=${BOOST_DIR}
make -j 16 && make install
export DOLFIN_DIR=$FENICS_INSTALL/dolfin/fenics-lib/
cd ../python
CC=icc \
CXX=icpc \
pip3 --no-cache-dir install . --no-binary :all:
Build mshr
cd $FENICS_INSTALL/mshr/build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=../mshr-lib \
-DCMAKE_CXX_COMPILER=mpiicpc \
-DCMAKE_CXX_FLAGS="-O3 -xHost -ip -mkl -std=c++11 -gxx-name=$( which g++ )" \
-DCMAKE_C_COMPILER=mpiicc \
-DCMAKE_C_FLAGS="-O3 -xHost -ip -mkl -std=gnu11"
make -j 16 && make install
export MSHR_DIR=$FENICS_INSTALL/mshr/mshr-lib/
cd ../python
CC=icc \
CXX=icpc \
pip3 --no-cache-dir install . --no-binary :all:
#!/bin/bash
export FENICS_ROOT=/project/cs16/tma5/fenics
export FENICS_VERSION=2019.1.0
export FENICS_INSTALL=$FENICS_ROOT/fenics$FENICS_VERSION
module purge
module load git/2.17
module load python/3.6.4-anaconda
module load boost/1.63.0/INTEL-18.0.0
module load gcc/6.4.0
module load intel/18.0.0
module load cmake/3.7.2/INTEL-18.0.0
module load impi/2018.0.128
source /home/compilers/Intel/parallel_studio_xe_2018.0/compilers_and_libraries/linux/bin/compilervars.sh intel64
source /home/compilers/Intel/parallel_studio_xe_2018.0/impi/2018.0.128/bin64/mpivars.sh
source $FENICS_INSTALL/dolfin/fenics-lib/share/dolfin/dolfin.conf
source $FENICS_INSTALL/bin/activate
export PETSC_DIR=$FENICS_ROOT/petsc-3.14.0/petsc-lib
export PETSC_ARCH=""
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$FENICS_ROOT/petsc-3.14.0/petsc-lib/
export ZLIB_DIR=$FENICS_ROOT/zlib-1.2.11/zlib-lib
export SZIP_DIR=$FENICS_ROOT/szip-2.1.1/szlib-lib
export HDF5_DIR=$FENICS_ROOT/hdf5-1.8.21/hdf5-lib
export PYBIND11_DIR=$FENICS_ROOT/pybind11-2.2.3/pybind11-lib
export EIGEN3_DIR=$FENICS_ROOT/eigen-3.3.8/
export BOOST_DIR=/home/packages/boost/1.63.0/INTEL-18.0.0/
export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$EIGEN3_DIR
export DOLFIN_DIR=$FENICS_INSTALL/dolfin/fenics-lib/
export MSHR_DIR=$FENICS_INSTALL/mshr/mshr-lib/