This script generates a deployment file for the PMM 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.
+second (optional) 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.
EOH
;
}
my $input = shift @ARGV || usage();
-my $nb_hosts = shift @ARGV || usage();
-my $source = shift || "";
+my $nb_hosts = shift @ARGV || "";
+# my $source = shift || "";
my @host;
die "No host found in $input. Is it really a SimGrid platform file?\nCheck that you didn't pass a deployment file, for example.\n"
unless (scalar @host);
+if (! $nb_hosts) {
+ $nb_hosts = scalar @host;
+}
#
# generate the file. Master first (quite logical, indeed)
+my $port_num = 4000;
+my $master = $host[0];
+
print "<?xml version='1.0'?>\n";
print "<!DOCTYPE platform_description SYSTEM \"surfxml.dtd\">\n";
print "<platform_description version=\"1\">\n\n";
-print " <!-- The master, arguments :: all others nodes -->\n";
-print " <process host=\"$host[0]\" function=\"master\">\n";
-
-# put the slaves as argument of the master
-
-my $it_host=0; # iterator
-my $it_port=4000; # iterator, in case we have so much processes to add that we must change it
-for (my $i=0; $i<$nb_hosts; $i++) {
- print " <argument value=\"$host[$it_host]:$it_port\"/>\n";
- $it_host ++;
- if ($it_host == scalar @host) {
- $it_host=0;
- $it_port++;
- }
-}
+print " <!-- The master, argument :: port number -->\n";
+print " <process host=\"$master\" function=\"master\">\n";
+print " <argument value=\"$port_num\"/>\n";
print " </process>\n";
# Start the slaves also
# reset iterators
-$it_port=4000;
-$it_host=0;
+my $it_host=1;
for (my $i=0; $i<$nb_hosts; $i++) {
- print " <process host=\"".$host[$it_host]."\" function=\"slave\"><argument value=\"$it_port\"/></process>\n";
+ print " <process host=\"".$host[$it_host]."\" function=\"slave\"><argument value=\"$master:$port_num\"/></process>\n";
$it_host ++;
if ($it_host == scalar @host) {
- $it_host=0;
- $it_port++;
+ $it_host=1;
}
}
i++) {
xbt_dynar_get_cpy(peers,i,&grid[i]);
+ INFO2("Connecting to %s:%d.",grid[i]->name,grid[i]->port);
socket[i]=gras_socket_client(grid[i]->name,grid[i]->port);
INFO2("Connected to %s:%d.",grid[i]->name,grid[i]->port);
}
xbt_peer_t h;
xbt_dynar_get_cpy(peers,i,&h);
+ INFO2("Killing %s:%d", h->name, h->port);
amok_pm_kill_hp(h->name,h->port);
free(h);
}