Archives


- Beowulf
- Beowulf Announce
- Scyld-users
- Beowulf on Debian

a shell script to spawn mpi executables on the "free" nodes of a Scyld cluster

Many of your questions may have already been answered in earlier discussions or in the FAQ. The search results page will indicate current discussions as well as past list serves, articles, and papers.

Search

Florent Calvayrac fcalvay at aviion.univ-lemans.fr
Wed Oct 31 12:44:59 PST 2001


to those with the same problem

Since  I couldn't find any free programs to address
easily this issue I include below a dirty bash2 script 
to spawn mpi executables on the "free" nodes of a Scyld cluster

Comments and feedback welcome


-- 
Florent Calvayrac                          
Laboratoire de Physique de l'Etat Condense 
Universite du Maine-Faculte des Sciences
http://www.univ-lemans.fr/~fcalvay
-------------- next part --------------
#!/bin/bash2
#the above must strictly be the first line of the script

#
#	dirty hack to spawn an mpi executable on free nodes of a Beowulf
#       (Scyld) cluster  - this is, with a load below "loadlimit" 
#	specified below
#
#
#       version 0.01 of a quick and dirty hack by Florent.Calvayrac at univ-lemans.fr
#
#
#       problems as of yet : stdout is lost, I do not where yet
#
#
#       usage : ./this_script np executable
#
#
#       (must of course reside in a cluster-readable directory, like /home/...)
#
#
#

ARGS=2        # Number of arguments expected.
E_BADARGS=65  # Exit value if incorrect number of args passed.

test $# -ne $ARGS && echo "Usage: `basename $0` $ARGS argument(s)" && exit $E_BADARGS
# If condition-1 true (wrong number of args passed to script),
# then the rest of the line executes, and script terminates.

np=$1
command=$2
loadlimit=0.7

#generating hopefully unique temp files

file="$PWD"/pg`ps | tail -1 | cut -b 3-5`  
file2="$file"2  
echo "temporary files are " $file $file2

#machine loads 

bpsh -a -p cat /proc/loadavg | cut -b 2-10 > $file2

#process as a function of the number of procs required

count=0
echo "eof" >> $file2

number=""
while [ "$number" != "eof" ]
do 
	read number load
        if [[ load < loadlimit ]] ; then
		let "count += 1"
		if [[ $count -le $np ]] ; then
       	        	j=1
		        if [[ $count -eq 1 ]] ; then
		   		j=0
		   		master=`echo $number | sed --expression="s/\://"`
		   		echo "master is" $master
			fi 
		echo $number $j $command  | sed --expression="s/\://" >> $file 
        fi
fi
done <$file2



#spawn the master

echo "spawning job"
P4_PG=$file NO_INLINE_MPIRUN=true bpsh $master "$command" 
echo "job is ended"

#clean up
rm -f $file
rm -f $file2




More information about the Beowulf mailing list