diff --git a/BUILD.md b/BUILD.md index 81598cf74eeeed4cc313da4e6d421657dfbd3fb8..5340378955ca977ed7353ae85fd2ed2fa7d782af 100644 --- a/BUILD.md +++ b/BUILD.md @@ -3,7 +3,7 @@ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | | - | \\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd. | + | \\ / A nd | Copyright (C) 2016-2019 OpenCFD Ltd. | | \\/ M anipulation | | |--------------------------------------------------------------------------| --> @@ -504,6 +504,12 @@ that clang compiler for building the newer llvm/clang version. [link openmpi]: https://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.7.tar.bz2 [newer openmpi]: https://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.bz2 +[page mpich]: http://www.mpich.org/ +[link mpich]: http://www.mpich.org/static/downloads/3.3/mpich-3.3.tar.gz + +[page mvpapich]: http://mvapich.cse.ohio-state.edu/ +[link mvpapich]: http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-2.3.tar.gz + <!-- general --> [page cmake]: http://www.cmake.org/ diff --git a/makeMPICH b/makeMPICH index f283d137f238fbf0d0f0f7cc95a0ea9bbcd13a6e..207b61c915f665151971f2dd24a9b0ce65983742 100755 --- a/makeMPICH +++ b/makeMPICH @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | -# \\ / A nd | Copyright (C) 2017-2018 OpenCFD Ltd. +# \\ / A nd | Copyright (C) 2017-2019 OpenCFD Ltd. # \\/ M anipulation | #------------------------------------------------------------------------------ # License @@ -14,7 +14,7 @@ # makeMPICH # # Description -# Build script for mpich - legacy (unmaintained) build code! +# Build script for mpich [unmaintained] # # ---------------------------------------------- # NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE @@ -27,11 +27,11 @@ if [ "$1" = "-test" ] then [ "$#" -eq 2 ] || { echo "${0##*/} -test : needs 1 argument"; exit 1; } dir="$2" # <- MPI_ARCH_PATH - if [ -r "$dir/lib$WM_COMPILER_LIB_ARCH/libmpich.$SO" ] + if [ -r "$dir/lib$WM_COMPILER_LIB_ARCH/libmpi.$SO" ] then echo "Have mpich shared library (${dir##*/})" exit 0 - elif [ -r "$dir/lib$WM_COMPILER_LIB_ARCH/libmpich.a" ] + elif [ -r "$dir/lib$WM_COMPILER_LIB_ARCH/libmpi.a" ] then echo "Have mpich static library (${dir##*/})" exit 0 @@ -125,10 +125,10 @@ fi MPI_SOURCE_DIR=$sourceBASE/$mpiPACKAGE MPI_ARCH_PATH=$installBASE/$mpiPACKAGE -if [ -r "$MPI_ARCH_PATH/lib_ARCH/libmpi.$SO" ] +if [ -r "$MPI_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libmpi.$SO" ] then echo "Already has shared library" -elif [ -r "$MPI_ARCH_PATH/lib/libmpi.a" ] +elif [ -r "$MPI_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libmpi.a" ] then echo "Already has static library" else @@ -149,6 +149,8 @@ else # End of configuration options # ---------------------------- + buildDIR=$buildBASE/$mpiPACKAGE + cd $MPI_SOURCE_DIR || exit 1 export GIT_DIR=$PWD/.git # Mask seeing our own git-repo [ -e Makefile ] && make distclean 2>/dev/null diff --git a/makeMVAPICH b/makeMVAPICH new file mode 100755 index 0000000000000000000000000000000000000000..1da072c737b670f6d6612ee0b96855bdc05a9d82 --- /dev/null +++ b/makeMVAPICH @@ -0,0 +1,185 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 2019 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM, licensed under GNU General Public License +# <http://www.gnu.org/licenses/>. +# +# Script +# makeMVAPICH2 +# +# Description +# Build script for mvapich2 [unmaintained] +# +# ---------------------------------------------- +# NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE +#------------------------------------------------------------------------------ +# Dynamic library endings (default is .so) +[ "$(uname -s)" = Darwin ] && SO=dylib || SO=so + +# Short-circuit test for an installation +if [ "$1" = "-test" ] +then + [ "$#" -eq 2 ] || { echo "${0##*/} -test : needs 1 argument"; exit 1; } + dir="$2" # <- MPI_ARCH_PATH + if [ -r "$dir/lib$WM_COMPILER_LIB_ARCH/libmpi.$SO" ] + then + echo "Have mpich shared library (${dir##*/})" + exit 0 + elif [ -r "$dir/lib$WM_COMPILER_LIB_ARCH/libmpi.a" ] + then + echo "Have mpich static library (${dir##*/})" + exit 0 + else + echo "No mpich libraries found: ${dir:-not-specified}" + exit 2 + fi +fi +#------------------------------------------------------------------------------ +# Run from third-party directory only +cd ${0%/*} && wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { + echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" + echo " Check your OpenFOAM environment and installation" + exit 1 +} +. etc/tools/ThirdPartyFunctions +# Transition +# ~~~~~~~~~~ +_foamAddLib() { true; } +_foamAddMan() { true; } +_foamAddPath() { true; } +#------------------------------------------------------------------------------ + +WM_MPLIB=MV2MPI # Ensure we get the correct MPI + +# mvapich2 version from OpenFOAM etc/config.sh file: +_foamConfig mpi + +mpiPACKAGE=${FOAM_MPI:-mvapich2-system} + +#------------------------------------------------------------------------------ +usage() { + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat<<USAGE + +usage: ${0##*/} [OPTION] [mvapich2-VERSION] [-- configure-options] +options: + -gcc Force gcc/g++ instead of the values from \$WM_CC, \$WM_CXX + -help + +* build mvapich2 with + ${mpiPACKAGE:-'unspecified mpich version'} + +The additional configure-options could include, for example, + + ${0##*/} -- --disable-mcast + +USAGE + exit 1 +} +#------------------------------------------------------------------------------ +exportCompiler # Compiler info for CMake/configure + +# Parse options +while [ "$#" -gt 0 ] +do + case "$1" in + '') ;; # Ignore empty + --) break;; # Extra configure options (leave on $@ for later detection) + -h | -help) usage ;; + -gcc) useGcc ;; + + mvapich*) + mpiPACKAGE="${1%%/}" + ;; + + *) + die "unknown option/argument: '$1'" + ;; + esac + shift +done + +[ -n "$mpiPACKAGE" ] || die "The mvapich-VERSION was not specified" + +# Nothing to build +if _foamIsNone "$mpiPACKAGE" +then + echo "Using mvapich-none (skip ThirdParty build of mvapich)" + exit 0 +elif _foamIsSystem "$mpiPACKAGE" +then + echo "Using mvapich-system (skip ThirdParty build of mvapich)" + exit 0 +fi + +#------------------------------------------------------------------------------ +# +# Build mvapich +# +# MPI_SOURCE_DIR : location of the original sources +# MPI_ARCH_PATH : installation directory + +MPI_SOURCE_DIR=$sourceBASE/$mpiPACKAGE +MPI_ARCH_PATH=$installBASE/$mpiPACKAGE + +if [ -r "$MPI_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libmpi.$SO" ] +then + echo "Already has shared library" +elif [ -r "$MPI_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libmpi.a" ] +then + echo "Already has static library" +else + echo "Starting build: $WM_MPLIB ($mpiPACKAGE)" + echo + + ( + # Configuration options: + unset configOpt + + # Additional configure options + if [ "$1" = "--" ] + then + shift + configOpt="$configOpt $@" + fi + + # End of configuration options + # ---------------------------- + + buildDIR=$buildBASE/$mpiPACKAGE + + cd $MPI_SOURCE_DIR || exit 1 + export GIT_DIR=$PWD/.git # Mask seeing our own git-repo + [ -e Makefile ] && make distclean 2>/dev/null + + rm -rf $MPI_ARCH_PATH + rm -rf $buildDIR + mkdir -p $buildDIR + cd $buildDIR + + set -x + $MPI_SOURCE_DIR/configure \ + --prefix=$MPI_ARCH_PATH \ + --disable-fortran --disable-g \ + --libdir=$MPI_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH \ + --enable-shared --disable-static \ + $configOpt \ + && set +x \ + && make -j $WM_NCOMPPROCS \ + && make install \ + && echo "Built: $mpiPACKAGE" \ + && pkgconfigAdjust $MPI_ARCH_PATH + ) || { + echo "Error building: $mpiPACKAGE" + exit 1 + } +fi + +#------------------------------------------------------------------------------