sub usage {
print STDERR <<EOH
-Usage: all2all_make_deployment.pl platform_file.xml nb_host
+Usage: all2all_make_deployment.pl platform_file.xml nb_host (bcast source?)
This script generates a deployment file for the all2all program. It takes
a SimGrid platform file as first argument and the number of wanted peers as
second argument. If the amount of peers exceeds the amount of available
-hosts in the deployment file, several peers will be placed on the same host.
+hosts in the deployment file, several peers will be placed on the same host.
+
+If a third argument is passed, this is the source of the broadcast
+(given as a number between 0 and nb_host-1).
EOH
;
die "\n";
my $input = shift @ARGV || usage();
my $nb_hosts = shift @ARGV || usage();
+my $source = shift;
my @host;
}
#
-# and now, really generate the file
+# and now, really generate the file. Receiver first.
print "<?xml version='1.0'?>\n";
print "<!DOCTYPE platform_description SYSTEM \"surfxml.dtd\">\n";
$it_host=0;
for (my $i=0; $i<$nb_hosts; $i++) {
- print " <process host=\"".$host[$it_host]."\" function=\"sender\">\n";
- print $receivers;
- print " </process>\n";
-
print " <process host=\"".$host[$it_host]."\" function=\"receiver\">\n";
- print " <argument value=\"$it_port\"/><argument value=\"$nb_hosts\"/>\n";
+ print " <argument value=\"$it_port\"/><argument value=\"".(undef($source)?$nb_hosts:1)."\"/>\n";
print " </process>\n\n";
$it_host ++;
}
}
+#
+# Here come the sender(s)
+
+# reset iterators
+$it_port=4000;
+$it_host=0;
+
+for (my $i=0; $i<$nb_hosts; $i++) {
+ if (undef($source) || $source == $i) {
+ print " <process host=\"".$host[$it_host]."\" function=\"sender\">\n";
+ print $receivers;
+ print " </process>\n";
+ }
+
+ $it_host ++;
+ if ($it_host == scalar @host) {
+ $it_host=0;
+ $it_port++;
+ }
+}
+
print "</platform_description>\n";
#! /bin/bash
#
-# USAGE: run.sh plaform nb_host
+# USAGE: run.sh plaform nb_host (broadcast source?)
#
# This script takes a platform file and a number of hosts as argument.
+# if a third argument is passed, this is the source of the broadcast
+# (given as a number between 0 and nb_host-1).
#
# It generates the right deployment platform and run the experiment,
# only showing the last line of the run, showing the resulting time.
plat=$1
nb_host=$2
+bcast=$3
set -e
if [ -z $plat -o -z $nb_host ] ; then
fi
echo "Generating the deployment"
-./make_deployment.pl $plat $nb_host > tmp_deployment_$nb_host
+./make_deployment.pl $plat $nb_host $bcast > tmp_deployment_$nb_host
echo "Running the experiment"
./all2all_simulator $plat tmp_deployment_$nb_host 2>&1 |tee run.log|grep "Congrat"
rm tmp_deployment_$nb_host