123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- #!/bin/bash
- # StarPU --- Runtime system for heterogeneous multicore architectures.
- #
- # Copyright (C) 2014,2016 Inria
- # Copyright (C) 2013-2017 CNRS
- # Copyright (C) 2013-2017,2020 Université de Bordeaux
- # Copyright (C) 2013 Thibaut Lambert
- #
- # StarPU is free software; you can redistribute it and/or modify
- # it under the terms of the GNU Lesser General Public License as published by
- # the Free Software Foundation; either version 2.1 of the License, or (at
- # your option) any later version.
- #
- # StarPU is distributed in the hope that it will be useful, but
- # WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- #
- # See the GNU Lesser General Public License in COPYING.LGPL for more details.
- #
- ROOT_DIR=$(dirname $0)
- cat > ./mic-config.log << EOF
- This file was created by StarPU mic-configure
- $ $0 $*
- EOF
- prefix="/usr/local"
- coi_dir="/opt/intel/mic/coi"
- scif_dir="/opt/intel/mic/scif"
- mic_host="x86_64-k1om-linux"
- declare -a host_params
- declare -a mic_params
- unset host_params
- unset mic_params
- native_mic=0
- mpi=0
- for arg in "$@"
- do
- case $arg in
- --prefix=*)
- prefix="${arg#--prefix=}"
- ;;
- --with-coi-dir=*)
- coi_dir="${arg#--with-coi-dir=}"
- ;;
- --with-scif-dir=*)
- scif_dir="${arg#--with-scif-dir=}"
- ;;
- --mic-host=*)
- mic_host="${arg#--mic-host=}"
- ;;
- --enable-native-mic)
- native_mic=1
- ;;
- --with-compiler=*)
- compiler="${arg#--with-compiler=}"
- ;;
- --with-mic-param=*)
- mic_params+=("${arg#--with-mic-param=}")
- ;;
- --with-host-param=*)
- host_params+=("${arg#--with-host-param=}")
- ;;
- --with-mpi*)
- mpi=1
- ;;
- --help)
- cat << EOF
- mic-configure specific options:
- --with-coi-dir=DIR Specify directory that contains
- device-linux-release/lib/libcoi_device and
- host-linux-release/lib/libcoi_host and
- --with-scif-dir=DIR Specify directory that contains
- device-linux-release/lib/libscif_device and
- host-linux-release/lib/libscif_host and
- --mic-host=HOST Specify the precise Phi host to build for
- (default: k1om)
- --with-compiler=[icc|gcc]
- Specify whether to build with icc or with gcc
- --enable-native-mic Only build the Phi binaries
- --with-mic-param=--OPTION
- Pass --OPTION to the Phi configure script
- --with-host-param=--OPTION
- Pass --OPTION to the host configure script
- EOF
- ;;
- esac
- done
- if [ -z "$compiler" ]
- then
- # Test gcc compiler
- x=$(type -t ${mic_host}-gcc)
- if [ -z "$x" ]
- then
- # Test icc compiler
- echo "int main(int argc, char **argv) { return 0; }" > /tmp/icc_$USER_$$.c
- icc -mmic /tmp/icc_$USER_$$.c > /dev/null 2>/tmp/icc_$USER_$$.err
- l=$(grep -c "invalid argument" /tmp/icc_$USER_$$.err)
- if [ "$l" != "0" ]
- then
- echo "[error] no compiler found. please add path to either ${mic_host}-gcc or to an enabled mic icc compiler in your PATH"
- exit 1
- else
- compiler="icc"
- fi
- else
- compiler="gcc"
- fi
- fi
- dev_list="host mic"
- if [ "$native_mic" -eq "1" ]
- then
- dev_list="mic"
- fi
- # prepend mic_params with "--with-mpicc=mpicc -mmic", to allow possible override by the user
- if [ $mpi = 1 ]
- then
- mic_params=("--with-mpicc=mpicc -mmic" "${mic_params[@]}")
- mic_params=("--with-mpifort=mpifort -mmic" "${mic_params[@]}")
- fi
- for arch in $dev_list #host mic
- do
- # We call the configure script from a build directory further in the
- # arborescence
- case $ROOT_DIR in
- /*) command="${ROOT_DIR}/configure";;
- *) command="../${ROOT_DIR}/configure";;
- esac
- declare -a params
- params=("--prefix=$prefix/$arch" "--disable-fstack-protector-all")
- if [ "$arch" = mic ] ; then
- if [ $compiler = "icc" ] ; then
- export CC="icc -mmic"
- export CXX="icc -mmic"
- export LD="icc -mmic"
- export CXXLD="icc -mmic"
- export F77="ifort -mmic"
- export FC="ifort -mmic"
- else
- # let configure auto-detect GNU cross-building tools
- unset CC
- unset CXX
- unset LD
- unset CXXLD
- unset F77
- unset FC
- params+=(--disable-fortran)
- fi
- fi
- if [ "$native_mic" -eq "0" ]
- then
- params+=(--enable-mic "--with-coi-dir=$coi_dir" "--with-scif-dir=$scif_dir")
- fi
- if test x$arch = xmic ; then
- params+=(--host=$mic_host --disable-build-doc)
- if [ "$native_mic" -eq "1" ]
- then
- params+=(--enable-maxcpus=250)
- else
- params+=("--with-coi-lib-dir=$coi_dir/device-linux-release/lib" "--with-scif-lib-dir=$scif_dir/device-linux-release/lib")
- fi
- else
- params+=("--with-coi-lib-dir=$coi_dir/host-linux-release/lib" "--with-scif-lib-dir=$scif_dir/host-linux-release/lib")
- fi
- # If the build directory doesn't exist yet, create it
- if [ ! -d "build_${arch}" ] ; then
- mkdir "build_${arch}"
- fi
- cd "build_${arch}"
- if test x$arch = xmic ; then
- LIBRARY_PATH=$SINK_LIBRARY_PATH:$MIC_LIBRARY_PATH \
- INCLUDE=$SINK_INCLUDE \
- C_INCLUDE_PATH=$SINK_C_INCLUDE_PATH \
- CPLUS_INCLUDE_PATH=$SINK_CPLUS_INCLUDE_PATH \
- PKG_CONFIG_PATH=$SINK_PKG_CONFIG_PATH \
- $command "$@" "${params[@]}" "${mic_params[@]}"
- MIC_BUILD_ENV="\
- LIBRARY_PATH=$SINK_LIBRARY_PATH:$MIC_LIBRARY_PATH \\
- INCLUDE=$SINK_INCLUDE \\
- C_INCLUDE_PATH=$SINK_C_INCLUDE_PATH \\
- CPLUS_INCLUDE_PATH=$SINK_CPLUS_INCLUDE_PATH \\
- PKG_CONFIG_PATH=$SINK_PKG_CONFIG_PATH \\\
- "
- else
- $command "$@" "${params[@]}""${host_params[@]}"
- fi
- if [ "$?" != 0 ]
- then
- exit $?
- fi
- cd ..
- done
- if [ "$native_mic" -eq "1" ]
- then
- cat > Makefile << EOF
- all:
- $MIC_BUILD_ENV
- \$(MAKE) \$(MFLAGS) -C build_mic
- clean:
- \$(MAKE) \$(MFLAGS) -C build_mic clean
- distclean: clean
- rm -f Makefile
- check:
- $MIC_BUILD_ENV
- \$(MAKE) \$(MFLAGS) -C build_mic check
- showfailed:
- @\$(MAKE) \$(MFLAGS) -C build_mic showfailed
- showcheck:
- \$(MAKE) \$(MFLAGS) -C build_mic showcheck
- install:
- $MIC_BUILD_ENV
- \$(MAKE) \$(MFLAGS) -C build_mic install
- ln -sf "${prefix}/mic/lib/pkgconfig/starpu-1.3.pc" "${prefix}/mic/lib/pkgconfig/starpu-1.3-mic.pc"
- EOF
- else
- cat > Makefile << EOF
- all:
- \$(MAKE) \$(MFLAGS) -C build_host
- $MIC_BUILD_ENV
- \$(MAKE) \$(MFLAGS) -C build_mic
- clean:
- \$(MAKE) \$(MFLAGS) -C build_host clean
- \$(MAKE) \$(MFLAGS) -C build_mic clean
- distclean: clean
- rm -f Makefile
- check:
- \$(MAKE) \$(MFLAGS) -C build_host check
- $MIC_BUILD_ENV
- \$(MAKE) \$(MFLAGS) -C build_mic check ; \
- RET=\$\$? ; \
- STARPU_NCPUS=0 \$(MAKE) \$(MFLAGS) -C build_mic check && [ \$\$RET == 0 ]
- showfailed:
- @\$(MAKE) \$(MFLAGS) -C build_host showfailed
- @\$(MAKE) \$(MFLAGS) -C build_mic showfailed
- showcheck:
- \$(MAKE) \$(MFLAGS) -C build_host showcheck
- \$(MAKE) \$(MFLAGS) -C build_mic showcheck
- install:
- \$(MAKE) \$(MFLAGS) -C build_host install
- $MIC_BUILD_ENV
- \$(MAKE) \$(MFLAGS) -C build_mic install
- ln -sf "${prefix}/mic/lib/pkgconfig/starpu-1.3.pc" "${prefix}/mic/lib/pkgconfig/starpu-1.3-mic.pc"
- EOF
- fi
|