diff --git a/src/mpi-start.in b/src/mpi-start.in index 272ab1d44ccc6f4258106f992ea523f0663e2203..9fd159383b5c94714a4c8d8cc9eac209ca84cefa 100755 --- a/src/mpi-start.in +++ b/src/mpi-start.in @@ -392,21 +392,26 @@ mpi_start_dummy_scheduler() { export MPI_START_HOSTFILE=$MPI_START_TEMP_FILE mpi_start_mktemp export MPI_START_HOST_SLOTS_FILE=$MPI_START_TEMP_FILE - local myhost=`hostname` - local slots=1 - if test "x${MPI_DUMMY_SCH_SLOTS}" != "x" ; then - slots=$MPI_DUMMY_SCH_SLOTS + if test "x$MPI_START_DUMMY_SCH_HOSTS" = "x" ; then + MPI_START_DUMMY_SCH_HOSTS=`hostname` fi - local n=$slots - while [ $n -ne 0 ]; do - echo $myhost >> $MPI_START_MACHINEFILE - n=`expr $n - 1` + local nhosts=0 + local slots=0 + MPI_START_DUMMY_SCH_SLOTS=${MPI_START_DUMMY_SCH_SLOTS:-1} + for host in $MPI_START_DUMMY_SCH_HOSTS ; do + local n=$MPI_START_DUMMY_SCH_SLOTS + while [ $n -ne 0 ]; do + echo $host >> $MPI_START_MACHINEFILE + n=`expr $n - 1` + done + echo $host > $MPI_START_HOSTFILE + echo "$host $slots"> $MPI_START_HOST_SLOTS_FILE + nhosts=`expr $nhosts + 1` + slots=`expr $slots + $MPI_START_DUMMY_SCH_SLOTS` done - echo $myhost > $MPI_START_HOSTFILE - echo "$myhost $slots"> $MPI_START_HOST_SLOTS_FILE export MPI_START_NSLOTS=$slots - export MPI_START_NHOSTS=1 - export MPI_START_NSLOTS_PER_HOST=$slots + export MPI_START_NHOSTS=$nhosts + export MPI_START_NSLOTS_PER_HOST=$MPI_START_DUMMY_SCH_SLOTS SCHEDULER_NAME="mpi-start-dummy" export MPI_START_SCHEDULER=$SCHEDULER_NAME } diff --git a/tests/test_dummy.sh b/tests/test_dummy.sh index 3710b6463f5f0e51ac8c443d55737319728a9f9b..86b5cc3ca74577bb85b00b7c210fa1551c5ede5a 100755 --- a/tests/test_dummy.sh +++ b/tests/test_dummy.sh @@ -14,6 +14,8 @@ setUp () { unset I2G_MPI_SINGLE_PROCESS unset I2G_MPI_NP unset I2G_MPI_PER_NODE + unset MPI_START_DUMMY_SCH_SLOTS + unset MPI_START_DUMMY_SCH_HOSTS export MPI_START_SHARED_FS=1 export MPI_START_DUMMY_SCHEDULER=0 } @@ -55,4 +57,81 @@ testSchedulerError () { unset MPI_START_DUMMY_SCHEDULER } +testDummySchedulerNSlots () { + export MPI_START_DUMMY_SCHEDULER=1 + export I2G_MPI_APPLICATION=`$MYMKTEMP` + export MPI_START_DUMMY_SCH_SLOTS=2 + cat > $I2G_MPI_APPLICATION << EOF +#!/bin/sh +echo "\${MPI_START_NSLOTS};\${MPI_START_NHOSTS};\${MPI_START_NSLOTS_PER_HOST};\${MPI_START_NP};\${MPI_START_SCHEDULER}" +EOF + chmod +x $I2G_MPI_APPLICATION + output=`$I2G_MPI_START -npnode 3` + st=$? + slots=`echo $output | cut -f1 -d";"` + hosts=`echo $output | cut -f2 -d";"` + sperhosts=`echo $output | cut -f3 -d";"` + np=`echo $output | cut -f4 -d";"` + sch=`echo $output | cut -f5 -d";"` + assertEquals "mpi-start-dummy" $sch + assertEquals 2 $slots + assertEquals 1 $hosts + assertEquals 2 $sperhosts + assertEquals 3 $np + assertEquals 0 $st + rm -f $I2G_MPI_APPLICATION +} + + +testDummySchedulerNHosts() { + export MPI_START_DUMMY_SCHEDULER=1 + export I2G_MPI_APPLICATION=`$MYMKTEMP` + export MPI_START_DUMMY_SCH_HOSTS="host1 host2 host3" + cat > $I2G_MPI_APPLICATION << EOF +#!/bin/sh +echo "\${MPI_START_NSLOTS};\${MPI_START_NHOSTS};\${MPI_START_NSLOTS_PER_HOST};\${MPI_START_NP};\${MPI_START_SCHEDULER}" +EOF + chmod +x $I2G_MPI_APPLICATION + output=`$I2G_MPI_START -npnode 3` + st=$? + slots=`echo $output | cut -f1 -d";"` + hosts=`echo $output | cut -f2 -d";"` + sperhosts=`echo $output | cut -f3 -d";"` + np=`echo $output | cut -f4 -d";"` + sch=`echo $output | cut -f5 -d";"` + assertEquals "mpi-start-dummy" $sch + assertEquals 3 $slots + assertEquals 3 $hosts + assertEquals 1 $sperhosts + assertEquals 9 $np + assertEquals 0 $st + rm -f $I2G_MPI_APPLICATION +} + + +testDummySchedulerNHostsNSlots() { + export MPI_START_DUMMY_SCHEDULER=1 + export I2G_MPI_APPLICATION=`$MYMKTEMP` + export MPI_START_DUMMY_SCH_SLOTS=2 + export MPI_START_DUMMY_SCH_HOSTS="host1 host2 host3" + cat > $I2G_MPI_APPLICATION << EOF +#!/bin/sh +echo "\${MPI_START_NSLOTS};\${MPI_START_NHOSTS};\${MPI_START_NSLOTS_PER_HOST};\${MPI_START_NP};\${MPI_START_SCHEDULER}" +EOF + chmod +x $I2G_MPI_APPLICATION + output=`$I2G_MPI_START -npnode 3` + st=$? + slots=`echo $output | cut -f1 -d";"` + hosts=`echo $output | cut -f2 -d";"` + sperhosts=`echo $output | cut -f3 -d";"` + np=`echo $output | cut -f4 -d";"` + sch=`echo $output | cut -f5 -d";"` + assertEquals "mpi-start-dummy" $sch + assertEquals 6 $slots + assertEquals 3 $hosts + assertEquals 2 $sperhosts + assertEquals 9 $np + assertEquals 0 $st + rm -f $I2G_MPI_APPLICATION +} . $SHUNIT2