Debian GCC 7.1

Glen Hansen edited this page Jul 6, 2017 · 2 revisions

This set of build instructions builds the master branch of Albany on a Debian machine, using GCC 7.1.0

This is the jenga server at RPI:

	cat /proc/version

	Linux version 2.6.32-5-amd64 (Debian 2.6.32-48squeeze20) ( (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Mon Feb 29 00:33:51 UTC 2016

The compilers are gcc 7.1.0, OpenMPI 2.1.0, and Debian linux.

General info

To determine the version of open mpi that you are using, type:


Building GCC 7.1.0

	cd /fasttmp/ghansen
	tar -xvf gcc-7.1.0.tar.bz2
	cd gcc-7.1.0
	mkdir ../gcc-build
	cd ../gcc-build
	../gcc-7.1.0/configure --prefix=/users/ghansen --disable-multilib --enable-languages=c,c++,fortran
	make -j 8
	< go have a coffee >
	make -j 8 install

Building OpenMPI 2.1.0

	cd /fasttmp/ghansen
	tar -xvf openmpi-2.1.0.tar.bz2
	cd openmpi-2.1.0
	./configure --prefix=/users/ghansen/ompi-gcc CC=/users/ghansen/bin/gcc CXX=/users/ghansen/bin/g++ FC=/users/ghansen/bin/gfortran
	make -j 8
	make -j 8 install

Build supporting packages

Trilinos requires a set of "third party libraries" (TPLs) to support Albany. The actual libraries needed depends on the final Albany configuration desired. These instructions build a superset, all the libraries needed to support any Albany configuration.

Notes: In this example

  • The TPLs are installed in /users/ghansen

Building ZLib

  • Version 1.2.11

      cd /fasttmp/ghansen
      tar -xvf zlib-1.2.11.tar.gz
      cd zlib-1.2.11
      mkdir build
      cd build
      cmake \
      -DCMAKE_C_COMPILER=/users/ghansen/ompi-gcc/bin/mpicc \
      -DCMAKE_C_FLAGS='-O3 --64 --archs="-arch x86_64"' \
      -DCMAKE_INSTALL_PREFIX=/users/ghansen \
      make -j 8
      make install

Building HDF5

  • Version 1.8.18

      tar -xvf hdf5-1.8.18.tar.gz
      cd hdf5-1.8.18
      ./configure --prefix=/users/ghansen CC=/users/ghansen/ompi-gcc/bin/mpicc \
      CXX=/users/ghansen/ompi-gcc/bin/mpicxx FC=/users/ghansen/ompi-gcc/bin/mpif90 \
      CXXFLAGS="-fPIC -O3 -march=native" CFLAGS="-fPIC -O3 -march=native" FFLAGS="-fPIC -O3 -march=native" \
      --enable-parallel --enable-shared --with-zlib=/users/ghansen
      make -j 4
      make install

Building parallel-netcdf

  • Version 1.8.1

  • Configure and build:

      tar -xvf parallel-netcdf-1.8.1.tar.gz
      cd parallel-netcdf-1.8.1/
      ./configure --prefix=/users/ghansen CC=/users/ghansen/ompi-gcc/bin/mpicc \
      FC=/users/ghansen/ompi-gcc/bin/mpif90 CXX=/users/ghansen/ompi-gcc/bin/mpicxx \
      CXXFLAGS="-O3 -march=native -fPIC" CFLAGS="-O3 -march=native -fPIC" FFLAGS="-O3 -march=native -fPIC" \
      FCLAGS="-O3 -march=native -fPIC"
      make -j 8 
      make install

Building Netcdf

  • Version

  • Edit the file include/netcdf.h. Make the following edits near line 265:

      #define NC_MAX_DIMS    65536    /* max dimensions per file */
      #define NC_MAX_ATTRS    8192    
      #define NC_MAX_VARS   524288    /* max variables per file */
      #define NC_MAX_NAME   256 
      #define NC_MAX_VAR_DIMS      8     /* max per variable dimensions */
  • Now, configure and build:

      LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/users/ghansen/lib:/users/ghansen/lib64 \
      ./configure --prefix=/users/ghansen CC=/users/ghansen/ompi-gcc/bin/mpicc \
      FC=/users/ghansen/ompi-gcc/bin/mpif90 CXX=/users/ghansen/ompi-gcc/bin/mpicxx \
      CXXFLAGS="-I/users/ghansen/include -O3 -march=native -fPIC" \
      CFLAGS="-I/users/ghansen/include -O3 -march=native -fPIC" LDFLAGS="-L/users/ghansen/lib -O3 -march=native -fPIC" \
      --disable-fsync --enable-shared --disable-doxygen --enable-netcdf-4 --enable-pnetcdf
      make -j 4 
      make install

Note: Need to have "visible" to the above configure script or the configure command will disable the --enable-pnetcdf option.

Building boost

  • Version 1.64.0

  • Build boost with the commands

      rm ~/user-config.jam
      echo "using gcc : 7.1.0 : /users/ghansen/bin/g++ : <compileflags>"-O3 -march=native" <library-path>/users/ghansen/ompi-gcc/lib <find-shared-library>mpi ;" >> ~/user-config.jam
      echo "using mpi : /users/ghansen/ompi-gcc/bin/mpicxx : <cxxflags>"-O3 -DNDEBUG -march=native" <include>/users/ghansen/ompi-gc/include <library-path>/users/ghansen/ompi-gcc/lib <find-shared-library>mpi ;" >> ~/user-config.jam
      ./ --with-libraries=signals,regex,filesystem,system,mpi,serialization,thread,program_options,exception --prefix=/users/ghansen
      ./b2 -j 4
      ./b2 -j 4 install

Building ParMetis

  • Version 4.0.3

      cd /fasttmp/ghansen
      tar -xvf parmetis-4.0.3.tar.gz
      cd parmetis-4.0.3
  • Edit metis.h to use an IDXTYPEWIDTH of 64

      cd metis/include
      vi metis.h
      #define IDXTYPEWIDTH 64
  • Run CMake to build parmetis

      cd /fasttmp/ghansen/parmetis-4.0.3
      mkdir build2
      cd build2
      export metis=/fasttmp/ghansen/parmetis-4.0.3/metis
      cmake \
      -DCMAKE_INSTALL_PREFIX=/users/ghansen \
      -DMETIS_PATH=$metis \
      -DGKLIB_PATH=$metis/GKlib \
      -DCMAKE_C_COMPILER=mpicc \
      -DCMAKE_CXX_COMPILER=mpicxx \
      make -j 4
      make install
      cp libmetis/libmetis.a /users/ghansen/lib
      cp $metis/include/metis.h /users/ghansen/include


  • Version 4.3

      tar -xvf superlu_4.3.tar.gz
      cd SuperLU_4.3
  • Build paths

      mkdir /users/ghansen/SuperLU_4.3
      mkdir /users/ghansen/SuperLU_4.3/include
      mkdir /users/ghansen/SuperLU_4.3/lib
  • Edit for your machine and environment

      PLAT = _linux
      SuperLUroot = /users/ghansen/SuperLU_4.3
      SUPERLULIB      = $(SuperLUroot)/lib/libsuperlu_4.3.a
      TMGLIB          = libtmglib.a
      MKLHOME         = /usr/local/intel/11.1/069/mkl/lib/em64t
      BLASLIB     = -L${MKLHOME} -lmkl_intel_lp64 -lmkl_sequential -lmkl_core
      LIBS        = $(SUPERLULIB) $(BLASLIB)
      ARCH         = ar
      ARCHFLAGS    = cr
      RANLIB       = ranlib
      CC           = /users/ghansen/ompi-gcc/bin/mpicc -fPIC -O3 -march=native
      CFLAGS       = -DPRNTlevel=0
      NOOPTS       =
      FORTRAN      = /users/ghansen/ompi-gcc/bin/mpif90
      FFLAGS       = -O3 fPIC -march=native
      LOADER       = $(CC)
      LOADOPTS     =
      CDEFS        = -DAdd_
      MATLAB       = /usr/sww/matlab
  • Build SuperLU

      make -j 4
      cd SRC
      cp *.h /users/ghansen/SuperLU_4.3/include		


  • HWLOC is an optional package that can be used for thread pinning by Kokkos. If you are not building Kokkos, or if you don't care about thread pinning, please skip.

  • Version 1.11.7

      tar -xvf hwloc-1.11.7.tar.gz
      cd hwloc-1.11.7
      ./configure CC=/users/ghansen/ompi-gcc/bin/mpicc CXX=/users/ghansen/ompi-gcc/bin/mpicxx --prefix=/users/ghansen
      make -j 4
      make install

Building Yaml

  • git clone

      cmake \
          -DCMAKE_CXX_COMPILER:STRING=${GCC_MPI_DIR}/bin/mpicxx \
          -DCMAKE_CXX_FLAGS:STRING='-march=native -O3 -DNDEBUG' \
          -DCMAKE_C_COMPILER:STRING=${GCC_MPI_DIR}/bin/mpicc \
          -DCMAKE_C_FLAGS:STRING='-march=native -O3 -DNDEBUG' \
          -DCMAKE_INSTALL_PREFIX:PATH=/users/ghansen \
          -DCMAKE_BUILD_TYPE:STRING=Release \
      make -j 4
      make install

Build Trilinos

  • do-configure script in the Albany Repo

  • Make a build directory at the top level of your Trilinos repo clone

      cd Trilinos
      mkdir build
      cd build
  • Download the above file as "do-configure" in the above build directory, then make it executable

      chmod +x ./do-configure
  • Edit the do-configure script to match your system and above TPL builds

  • Configure and build Trilinos

      make -j 4
      make -j 4 install

Build Albany

  • CMake configure script in the Albany Repo

  • Make a "build" directory at the top level of the Albany repo clone, download the "do-configure" file, and edit as appropriate

  • Do the build:

      make -j 4
Clone this wiki locally
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.