[mpich-discuss] mpirun script and the SYNCLOC option

Rajeev Thakur thakur at mcs.anl.gov
Sun Apr 6 21:35:22 CDT 2008


The file mpirun.ch_p4 has the following lines:
 
#
# On nfs systems, it is possible that a recently created executable may 
# not be visible yet to other systems, causing problems when you attempt
# to start a job.  As a partial fix for this, we do a sync.  It would help,
# of course, if NFS worked correctly.
#
$SYNCLOC > /dev/null 2>&1
#
#
 
Rajeev


  _____  

From: owner-mpich-discuss at mcs.anl.gov
[mailto:owner-mpich-discuss at mcs.anl.gov] On Behalf Of brian janus
Sent: Sunday, April 06, 2008 3:59 PM
To: mpich-discuss at mcs.anl.gov
Subject: [mpich-discuss] mpirun script and the SYNCLOC option




Hello,

I'm new here (this is my first post), so forgive me if I ask any dumb
questions. But the first question I have concerns the mpirun script below.

My question is, what does the SYNCLOC=/bin/sync line for in the script below
do, and what complications could arise (if any), from disabling this option
by commenting out the line like #SYNCLOC=/bin/sync. In some code we are
running, we have found that disabling this option allows high priority jobs
to complete in only a couple of seconds, whereas before they would take
several minutes.

What does SYNCLOC do, and if its disabled, what kind of problems might that
cause?

Thanks for any help you can provide.
Brian Janus.

#! /bin/sh 

# MPIRUN for MPICH
# (Don't change the above line - we use it to identify MPICH mpirun as




# opposed to others (e.g., SGI's mpirun)


#
# This script tries to start jobs on whatever kind of machine you're on.
# Strategy - This program is built with a default device it uses in
# certain ways. The user can override this default from the command line.






#
# This sh script is designed to use other scripts to provide the commands
# to run each system, using the . filename.sh mechanism
#
# Debuggers should be handled by running 
# mpirun.db.<debugger_name>






# e.g., mpirun.db.gdb or mpirun.db.xxgdb.
# This will allow users to add there own debuggers 
# (with -debug=<debugger_name>)
#
# Set default variables
AUTOMOUNTFIX="sed -e s@/tmp_mnt/@/@g"






DEFAULT_DEVICE=ch_p4
RSHCOMMAND="/usr/bin/ssh"
SYNCLOC=/bin/sync     # <---------- WE DISABLED THIS WITH A #COMMENT#
CC="cc"



COMM=


GLOBUSDIR=@GLOBUSDIR@

CLINKER="cc"
prefix=/cluster/cairo/software/mpich-1.2.5.2
bindir=/cluster/cairo/software/mpich-1.2.5.2/bin
# This value for datadir is the default value setup by configure





datadir=/cluster/cairo/software/mpich-1.2.5.2/share

DEFAULT_MACHINE=ch_p4
DEFAULT_ARCH=LINUX

# Derived variables
MPIRUN_BIN=$bindir
MPIRUN_HOME=$MPIRUN_BIN
MPIVERSION="1.2.5 (release) of : 2003/01/13 16:21:53"






#set verbose
#
# Local routines

#
# End of routine

#
#
# Special, system specific values
#
# polling_mode is for systems that can select between polling and 
# interrupt-driven operation.  Currently, only IBM POE is so supported






# (TMC CMMD has some support for this choice of mode)
polling_mode=1

# Parse command line arguments
# The ultimate goal is to determine what kind of parallel machine this
# is we are running on. Then we know how to start jobs...






#
# Process common arguments (currently does ALL, but should pass unrecognized
# ones to called files)
#
hasprinthelp=1
. $MPIRUN_HOME/mpirun.args
argsset=1

#
# Jump to the correct code for the device (by pseudo machine)






#
mpirun_version=""
case $machine in
    ch_cmmd)
	mpirun_version=$MPIRUN_HOME/mpirun.ch_cmmd
	;;
    ibmspx|ch_eui|ch_mpl)
	mpirun_version=$MPIRUN_HOME/mpirun.ch_mpl
	;;


    anlspx)




	mpirun_version=$MPIRUN_HOME/mpirun.anlspx
	;;
    ch_meiko|meiko)
	mpirun_version=$MPIRUN_HOME/mpirun.meiko
	;;
    cray_t3d|t3d)
	mpirun_version=$MPIRUN_HOME/mpirun.t3d


	;;
    ch_nc)


	mpirun_version=$MPIRUN_HOME/mpirun.ch_nc


	;;
    paragon|ch_nx|nx)
	mpirun_version=$MPIRUN_HOME/mpirun.paragon
	;;
    inteldelta)
	mpirun_version=$MPIRUN_HOME/mpirun.delta


	;;
    i860|ipsc860)


	mpirun_version=$MPIRUN_HOME/mpirun.i860


	;;
    p4|ch_p4|sgi_mp)
	mpirun_version=$MPIRUN_HOME/mpirun.ch_p4
	;;
    gm|ch_gm|myrinet)
        mpirun_version=$MPIRUN_HOME/mpirun.ch_gm


	;;

    execer)

	mpirun_version=$MPIRUN_HOME/mpirun.execer


	;;
    ch_shmem|ch_spp|smp|convex_spp)
	# sgi_mp is reserved for the p4 version
	mpirun_version=$MPIRUN_HOME/mpirun.ch_shmem


    	;;

    ksr|symm_ptx)

	mpirun_version=$MPIRUN_HOME/mpirun.p4shmem

	;;

    ch_tcp|tcp)
	mpirun_version=$MPIRUN_HOME/mpirun.ch_tcp
	;;
    globus)
	mpirun_version=$MPIRUN_HOME/mpirun.globus


	;;

    *)    
	#

	# This allows us to add a device without changing the base mpirun


	# code
	if [ -x $MPIRUN_HOME/mpirun.$device ] ; then
	    mpirun_version=$MPIRUN_HOME/mpirun.$device


	elif [ -x $MPIRUN_HOME/mpirun.$default_device ] ; then


	    mpirun_version=$MPIRUN_HOME/mpirun.$default_device


	    device=$default_device
	else
	    echo "Cannot find MPIRUN machine file for machine $machine"


	    echo "and architecture $arch ."


            if [ -n "$device" ] ; then

	        echo "(Looking for $MPIRUN_HOME/mpirun.$device)"

	    else
	        echo "(No device specified.)"


            fi
	    # . $MPIRUN_HOME/mpirun.default


	    exit 1
	fi
  	;;

esac
exitstatus=1
if [ -n "$mpirun_version" ] ; then

    if [ -x $mpirun_version ] ; then
        # The mpirun script *must* set exitstatus (or exit itself)




        . $mpirun_version
    else

       	echo "$mpirun_version is not available."
	    exit 1

    fi
else
    echo "No mpirun script for this configuration!"
    exit 1




fi
exit $exitstatus

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/mpich-discuss/attachments/20080406/d0b7318f/attachment.htm>


More information about the mpich-discuss mailing list