#!/bin/bash -e # # 2014/01/06 gabriel function oar_fixldpath () { if [ -n "${LD_LIBRARY_PATH:+x}" ] then for ldpath in $(for lib in $(/sbin/ldconfig -p | awk 'BEGIN { FS = "=> " } ; {print $2}'); do dirname ${lib}; done | sort -u) do LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${ldpath}" done fi } declare -fx oar_fixldpath exists_np='' exists_mf='' exists_vb='' for opt in $* do [ "${opt}" == "-np" ] && exists_np='y' [ "${opt}" == "-machinefile" ] && exists_mf='y' [ "${opt}" == "--machinefile" ] && exists_mf='y' [ "${opt}" == "-hostfile" ] && exists_mf='y' [ "${opt}" == "--hostfile" ] && exists_mf='y' [ "${opt}" == "--host" ] && exists_mf='y' [ "${opt}" == "-host" ] && exists_mf='y' [ "${opt}" == "-H" ] && exists_mf='y' [ "${opt}" == "--verbose" ] && exists_vb='y' [ "${opt}" == "-v" ] && exists_vb='y' [ "${opt}" == "--" ] && break done [ -n "${VERBOSE:+x}" ] && exists_vb='y' mpi_option='' # NODEFILE to use. By default specialized one nodefile="${OAR_NODE_FILE}" [ -n "${OAR_MSG_NODEFILE:+x}" -a -e "${OAR_MSG_NODEFILE}" ] && nodefile="${OAR_MSG_NODEFILE}" if [ -z ${exists_mf} ] then [ -e "${nodefile}" ] && mpi_option="-machinefile ${nodefile} ${mpi_option}" fi # Number of MPI parallel run. By default MAX. nbcpus='' [ -e "${nodefile}" ] && nbcpus=$(cat ${nodefile} | wc -l) [ -n "${OAR_NP:+x}" ] && nbcpus=${OAR_NP} if [ -z ${exists_np} ] then [ -z ${nbcpus} ] || mpi_option="-np ${nbcpus} ${mpi_option}" fi # VARIABLE to define in other MPI parallel run for varenv in $(env \ | grep "^[ABCDEFGHIJKLMNOPQRSTUVWXYZ]" \ | egrep -v "^USER=|^TERM=|^OAR|^SGE_|^LS_COLORS=\ |^ENV=|^BASH_ENV=|^BASH_FUNC_|^HOSTNAME=|^LOGNAME=|^MAIL=\ |^MANPATH=|^PWD=\ |^OMPI_MCA_orte_rsh_agent=|^OMPI_MCA_plm_rsh_agent=\ |^SHELL=|^SSH_|^SUDO_COMMAND=|^HOME=|^DISPLAY=\ |^SHLVL=" \ | cut -f 1 -d '=' \ | sort ) do mpi_option="${mpi_option} -x ${varenv}" done # Special case of LD_LIBRARY_PATH and system path oar_fixldpath [ ! -z ${exists_vb} ] && echo mpirun ${mpi_option} $* exec mpirun ${mpi_option} $*