From: velho Date: Tue, 25 Nov 2008 16:18:18 +0000 (+0000) Subject: Generate a deployment where each host is used at most once. X-Git-Tag: v3.3~82 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/1bc135296b0aca104cb00957f463e5e3e611d403?ds=sidebyside Generate a deployment where each host is used at most once. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6097 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/examples/msg/gtnets/generate_random_deployment.pl b/examples/msg/gtnets/generate_random_deployment.pl index ceb98aa3c3..32476b036c 100755 --- a/examples/msg/gtnets/generate_random_deployment.pl +++ b/examples/msg/gtnets/generate_random_deployment.pl @@ -1,6 +1,17 @@ #!/usr/bin/perl -w use strict; +sub melange { + my $tableau=shift; + my($i,$j); + + for($i = @$tableau ; --$i; ) { + $j = int rand ($i+1); + next if $i==$j; + @$tableau[$i,$j] = @$tableau[$j,$i]; + } +} + sub read_file { my($filename)=shift; my($line); @@ -22,6 +33,7 @@ sub generate_random_deployment{ my($host_list,$nflows,$filename)=@_; my(%pairs); my($nhost) = scalar(@$host_list); + my(%taken); $nflows< $nhost*$nhost-$nhost or die "Too much flows! I can't do it\n"; @@ -32,9 +44,61 @@ sub generate_random_deployment{ if($src!=$dst && !defined($pairs{"$$host_list[$src] $$host_list[$dst]"})) { $pairs{"$$host_list[$src] $$host_list[$dst]"}=1; + $taken{"$$host_list[$src]"}=1; + $taken{"$$host_list[$dst]"}=1; +# && !$taken{$$host_list[$src]} && !$taken{$$host_list[$dst]} } } my($p); + + my($count)=0; + + print OUTPUT < + + +EOF + + foreach $p (keys %pairs) { + my($src,$dst)=split(/ /,$p); + print OUTPUT " \n"; + print OUTPUT " \n"; + print OUTPUT " \n"; + print OUTPUT " \n"; + print OUTPUT " \n"; + print OUTPUT " \n"; + print OUTPUT " \n"; + print OUTPUT " \n"; + $count++; + } + + print OUTPUT < +EOF + close(OUTPUT); +} + + +sub generate_random_deployment2{ + my($host_list,$nflows,$filename)=@_; + my(%pairs); + my($nhost) = scalar(@$host_list); + my(%taken); + + melange($host_list); + $nflows< $nhost/2 or die "Too much flows! I can't do it\n"; + + open(OUTPUT,"> $filename"); + foreach (0..$nflows-1) { + my($src)=shift(@$host_list); + my($dst)=shift(@$host_list); + + $pairs{"$src $dst"}=1; + } + my($p); + + my($count)=0; + print OUTPUT < @@ -44,11 +108,16 @@ EOF foreach $p (keys %pairs) { my($src,$dst)=split(/ /,$p); print OUTPUT " \n"; - print OUTPUT " \n"; + print OUTPUT " \n"; print OUTPUT " \n"; + print OUTPUT " \n"; print OUTPUT " \n"; - print OUTPUT " \n"; + print OUTPUT " \n"; + print OUTPUT " \n"; + print OUTPUT " \n"; + $count++; } + print OUTPUT < EOF @@ -65,7 +134,7 @@ sub main { $filename =~ s/-p$//g; $host_list = read_file $ARGV[0]; - generate_random_deployment($host_list,$nflows,"$filename-d.xml"); + generate_random_deployment2($host_list,$nflows,"$filename-d.xml"); } main;