Difference between revisions of "Building on CentOS6"
(Created page with "This build was done on a VirtualBox instance with a clean install of [https://www.centos.org/ CentOS 6.9]. The compiler and library packages on [https://www.centos.org/ CentO...") |
|||
Line 1: | Line 1: | ||
− | This build was done on a VirtualBox | + | This build was done on a [https://www.virtualbox.org/ VirtualBox] virtual machine with a clean install of [https://www.centos.org/ CentOS 6.9]. The compiler and library packages on [https://www.centos.org/ CentOS 6.9] are quite old, so it is necessary to build GridPACK prerequisites from source and newer versions need to be avoided. This build was done with the stock compiler (GNU 4.4), but, it at least one other case, GridPACK was built using [https://www.softwarecollections.org/en/scls/rhscl/devtoolset-4/ Devtoolset-4] (GNU 5.3). |
− | In this description, | + | In this description, prerequisite software is installed in an arbitrary path stored in the shell variable `$prefix`. |
== Requisite System Software == | == Requisite System Software == | ||
− | Some | + | Some needed software can be installed with system packages: |
<pre class="example">sudo yum install openmpi-1.10 openmpi-1.10-devel gcc-c++ cmake bzip2-devel git</pre> | <pre class="example">sudo yum install openmpi-1.10 openmpi-1.10-devel gcc-c++ cmake bzip2-devel git</pre> | ||
Line 16: | Line 16: | ||
== Boost, version 1.54.0 == | == Boost, version 1.54.0 == | ||
− | + | Modern versions of Boost will probably not work here (especially Serialization and MPI). So, an old version is needed. | |
<pre class="example">prefix="$HOME/gridpack" | <pre class="example">prefix="$HOME/gridpack" | ||
Line 31: | Line 31: | ||
./b2 -a -d+2 link=static install</pre> | ./b2 -a -d+2 link=static install</pre> | ||
− | == | + | == Global Arrays, version 5.6.5 == |
+ | |||
+ | Modern versions of [http://hpc.pnl.gov/globalarrays/ Global Arrays] work fine. | ||
<pre class="example">prefix="$HOME/gridpack" | <pre class="example">prefix="$HOME/gridpack" | ||
Line 114: | Line 116: | ||
-D CMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \ | -D CMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \ | ||
-D CMAKE_INSTALL_PREFIX:PATH="${prefix}" \ | -D CMAKE_INSTALL_PREFIX:PATH="${prefix}" \ | ||
− | ..</pre> | + | .. |
+ | make | ||
+ | make test</pre> |
Revision as of 16:04, 3 April 2018
This build was done on a VirtualBox virtual machine with a clean install of CentOS 6.9. The compiler and library packages on CentOS 6.9 are quite old, so it is necessary to build GridPACK prerequisites from source and newer versions need to be avoided. This build was done with the stock compiler (GNU 4.4), but, it at least one other case, GridPACK was built using Devtoolset-4 (GNU 5.3).
In this description, prerequisite software is installed in an arbitrary path stored in the shell variable `$prefix`.
Contents
Requisite System Software
Some needed software can be installed with system packages:
sudo yum install openmpi-1.10 openmpi-1.10-devel gcc-c++ cmake bzip2-devel git
OpenMPI is installed as a "module". In order to use the compiler wrappers the OpenMPI "module" needs to be "loaded":
module load openmpi-1.10-x86_64
Boost, version 1.54.0
Modern versions of Boost will probably not work here (especially Serialization and MPI). So, an old version is needed.
prefix="$HOME/gridpack" module load openmpi-1.10-x86_64 rm -f ~/user-config.jam rm -f ./tools/build/v2/user-config.jam echo "using mpi : mpicxx ;" >> ./tools/build/v2/user-config.jam sh ./bootstrap.sh \ --prefix="$prefix" \ --without-icu \ --with-toolset=gcc \ --without-libraries=python,log ./b2 -a -d+2 link=static stage ./b2 -a -d+2 link=static install
Global Arrays, version 5.6.5
Modern versions of Global Arrays work fine.
prefix="$HOME/gridpack" module load openmpi-1.10-x86_64 sh autogen.sh ./configure \ --enable-cxx \ --disable-f77 \ --enable-i4 \ --with-mpi \ --with-mpi-ts \ --enable-autodetect=yes \ --prefix=$prefix \ --without-blas \ --without-lapack \ --without-scalapack \ --enable-shared=no \ --enable-static=yes \ MPICC=mpicc MPICXX=mpicxx MPIF77=mpif90 \ MPIEXEC=mpiexec MPIRUN=mpirun NPROCS=4 make make -k check make install
PETSc, version 3.6.4
For some reason, more recent PETSc versions were not recognized by the GridPACK CMake configuration, possibly because of the old compiler. This version appears to work.
prefix="$HOME/gridpack" module load openmpi-1.10-x86_64 PETSC_DIR="$prefix/petsc-3.6.4" export PETSC_DIR python ./config/configure.py \ python ./config/configure.py \ PETSC_ARCH=linux-gnu44-real-opt \ --with-prefix="$prefix/" \ --with-mpi=1 \ --with-cc="mpicc" \ --with-fc="mpif90" \ --with-cxx="mpicxx" \ --with-c++-support=1 \ --with-c-support=0 \ --with-fortran=1 \ --with-scalar-type=real \ --with-precision=double \ --with-clanguage=c++ \ --with-fortran-kernels=generic \ --with-valgrind=0 \ --download-superlu_dist \ --download-parmetis \ --download-metis \ --download-f2cblaslapack=1 \ --download-mumps=0 \ --download-scalapack=0 \ --with-shared-libraries=0 \ --with-x=0 \ --with-mpirun=mpiexec \ --with-mpiexec=mpiexec \ --with-debugging=0 make PETSC_DIR=/files0/perksoft/petsc-3.6.4 PETSC_ARCH=linux-gnu48-real-opt all make PETSC_DIR=/files0/perksoft/petsc-3.6.4 PETSC_ARCH=linux-gnu48-real-opt test
GridPACK
prefix="$HOME/gridpack" module load openmpi-1.10-x86_64 cmake -Wdev --debug-trycompile \ -D GA_DIR:PATH="${prefix}" \ -D BOOST_ROOT:PATH="${prefix}" \ -D USE_PROGRESS_RANKS:BOOL=OFF \ -D PETSC_DIR:PATH="${prefix}/petsc-3.6.4" \ -D PETSC_ARCH:STRING="linux-gnu44-real-opt" \ -D MPI_CXX_COMPILER:STRING="mpicxx" \ -D MPI_C_COMPILER:STRING="mpicc" \ -D MPIEXEC:STRING="mpiexec" \ -D USE_GLPK:BOOL=OFF \ -D MPIEXEC_MAX_NUMPROCS:STRING="4" \ -D GRIDPACK_TEST_TIMEOUT:STRING=10 \ -D BUILD_SHARED_LIBS:BOOL=OFF \ -D CMAKE_BUILD_TYPE:STRING=Debug \ -D CMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \ -D CMAKE_INSTALL_PREFIX:PATH="${prefix}" \ .. make make test