From b55147c2e4dd39b290611436bbf7007c61bde1c0 Mon Sep 17 00:00:00 2001 From: Brian Barrett Date: Sun, 8 Feb 2004 03:41:56 +0000 Subject: [PATCH] * push out all env variables starting with LAM_MPI or mca_ VERY IMPORTANT NOTE: neither name or value can have a space in it. Sorry, but I'm sick of escape hell. This commit was SVN r664. --- src/tools/mpirun/mpiboot | 9 +++++++ src/tools/mpirun/mpirun | 52 +++++++++++++++++++++++++++++++++++----- 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/src/tools/mpirun/mpiboot b/src/tools/mpirun/mpiboot index c5b66ca55b..c516678a7b 100755 --- a/src/tools/mpirun/mpiboot +++ b/src/tools/mpirun/mpiboot @@ -28,6 +28,7 @@ lam_commdir="" # ###################################################################### args_err=1 + for i ; do case "${i}" in -test) @@ -53,6 +54,14 @@ for i ; do lam_commdir="${1}" shift ;; + -x) + shift + name="${1}" + shift + val="${1}" + shift + export "${name}"="${val}" + ;; -pwd) shift cd "${1}" diff --git a/src/tools/mpirun/mpirun b/src/tools/mpirun/mpirun index 7ac7ecb298..98a18a6f35 100755 --- a/src/tools/mpirun/mpirun +++ b/src/tools/mpirun/mpirun @@ -30,6 +30,7 @@ lam_jobhandle="" lam_app_args="" lam_mydir="" lam_cwd="`pwd`" +lam_prepped="" # Get the dir where this script is dir="`dirname $0`" @@ -96,6 +97,41 @@ debug_echo() { fi } +###################################################################### +# +# prep_environ +# +# make environment push happen +# +###################################################################### +do_add_env() { + str="$*" + name="`echo ${str} | cut -d= -f1`" + val="`echo ${str} | cut -d= -f2-`" + + lam_prepped="${lam_prepped} -x ${name} \"${val}\"" +} + + +do_prep_environ() { + local a="" + local envfile="/tmp/lam_mpirun_env_$$" + + rm -f "${envfile}" + printenv > "${envfile}" + + while IFS= read envpair + do + if test "`echo ${envpair} | grep \"^mca_\"`" != "" ; then + do_add_env "${envpair}" + elif test "`echo ${envpair} | grep \"^LAM_MPI\"`" != "" ; then + do_add_env "${envpair}" + fi + done < "${envfile}" + + rm -f "${envfile}" +} + ###################################################################### # @@ -110,24 +146,24 @@ debug_echo() { # argv argv to start # ###################################################################### -start_proc() { +do_start_proc() { local rmt_hostname=$1 ; shift local rmt_vpid=$1 ; shift local argv="$*" local rmt_boot="${lam_mydir}/mpiboot" + local cmd="" - local cmd="ssh ${rmt_hostname} -f -n ${rmt_boot} -myvpid ${rmt_vpid}" + cmd="ssh ${rmt_hostname} -f -n ${rmt_boot} " + cmd="${cmd} -myvpid ${rmt_vpid}" cmd="${cmd} -numprocs ${lam_numprocs} -jobhandle ${lam_jobhandle}" - cmd="${cmd} -pwd ${lam_cwd}" + cmd="${cmd} -pwd ${lam_cwd} ${lam_prepped}" if test ! -z "${MCA_common_lam_cofs_comm_dir}" ; then cmd="${cmd} -commdir ${MCA_common_lam_cofs_comm_dir}" fi cmd="${cmd} -- ${argv}" - debug_echo "* ${cmd}" ${cmd} } - ###################################################################### # # make_hosts_list @@ -178,8 +214,10 @@ launch_procs() { exit 1 fi + do_prep_environ + for (( i=0 ; i < ${lam_numprocs} ; i++)) ; do - start_proc "${1}" "${i}" "${args}" + do_start_proc "${1}" "${i}" "${args}" shift if test -z "${1}" ; then set -- ${lam_hosts} @@ -201,7 +239,9 @@ lam_jobhandle="pcm-cofs-job-handle-${$}-0" # exit cleanly # ###################################################################### + make_hosts_list + launch_procs "${lam_app_args}" echo ""