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) (ben@decadent.org.uk) (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:

	/users/ghansen/ompi-gcc/bin/ompi_info

Building GCC 7.1.0

	cd /fasttmp/ghansen
	wget http://www.netgull.com/gcc/releases/gcc-7.1.0/gcc-7.1.0.tar.bz2
	tar -xvf gcc-7.1.0.tar.bz2
	cd gcc-7.1.0
	./contrib/download_prerequisites
	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
	wget https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.0.tar.bz2
	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
      wget http://zlib.net/zlib-1.2.11.tar.gz
      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

      wget https://support.hdfgroup.org/ftp/HDF5/current18/src/hdf5-1.8.18.tar.bz2
      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:

      wget http://cucis.ece.northwestern.edu/projects/PNETCDF/Release/parallel-netcdf-1.8.1.tar.gz
      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 4.4.1.1

  • 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 libpnetcdf.so "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
      ./bootstrap.sh --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
      wget http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis/parmetis-4.0.3.tar.gz
      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
    

SuperLU

  • Version 4.3

      wget http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_4.3.tar.gz
      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 make.inc 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		
    

Build HWLOC

  • 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

      wget https://www.open-mpi.org/software/hwloc/v1.11/downloads/hwloc-1.11.7.tar.bz2
      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 git@github.com:jbeder/yaml-cpp.git

      GCC_MPI_DIR=/users/ghansen/ompi-gcc
    
      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 \
          -DBUILD_SHARED_LIBS:BOOL=ON \
          -DYAML_CPP_BUILD_TOOLS:BOOL=OFF \
      ..
    
      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

      ./do-configure
      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:

      ./do-configure
      make -j 4
      ctest
    
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.