X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e5d2cf32d83cdf0a1fd56e0ead70c5ba3e56e406..9bfc53cc59cae28067100a5c8b377d64f6b95a8d:/examples/gras/pmm/pmm.c diff --git a/examples/gras/pmm/pmm.c b/examples/gras/pmm/pmm.c index 4fc4b41bbc..101ab30c06 100755 --- a/examples/gras/pmm/pmm.c +++ b/examples/gras/pmm/pmm.c @@ -10,7 +10,7 @@ #include "gras.h" #include "xbt/matrix.h" -#include "amok/hostmanagement.h" +#include "amok/peermanagement.h" #define PROC_MATRIX_SIZE 3 #define NEIGHBOR_COUNT PROC_MATRIX_SIZE - 1 @@ -33,8 +33,8 @@ typedef struct s_result result_t; GRAS_DEFINE_TYPE(s_pmm_assignment,struct s_pmm_assignment { int linepos; int rowpos; - xbt_host_t line[NEIGHBOR_COUNT]; - xbt_host_t row[NEIGHBOR_COUNT]; + xbt_peer_t line[NEIGHBOR_COUNT]; + xbt_peer_t row[NEIGHBOR_COUNT]; xbt_matrix_t A GRAS_ANNOTE(subtype,double); xbt_matrix_t B GRAS_ANNOTE(subtype,double); }); @@ -80,19 +80,20 @@ typedef struct { int master (int argc,char *argv[]) { int i; + double init_delay; xbt_matrix_t A,B,C; result_t result; gras_socket_t from; - xbt_dynar_t hosts; /* group of slaves */ - xbt_host_t grid[SLAVE_COUNT]; /* The slaves as an array */ + xbt_dynar_t peers; /* group of slaves */ + xbt_peer_t grid[SLAVE_COUNT]; /* The slaves as an array */ gras_socket_t socket[SLAVE_COUNT]; /* sockets for brodcast to slaves */ /* Init the GRAS's infrastructure */ gras_init(&argc, argv); - amok_hm_init(); + amok_pm_init(); register_messages(); /* Initialize data matrices */ @@ -101,17 +102,26 @@ int master (int argc,char *argv[]) { C = xbt_matrix_double_new_zeros(DATA_MATRIX_SIZE,DATA_MATRIX_SIZE); /* Create the connexions */ + xbt_assert0(argc>1, "Usage: master "); gras_socket_server(atoi(argv[1])); - hosts=amok_hm_group_new("pmm"); - INFO0("Wait for peers for 10 sec"); - gras_msg_handleall(10); /* friends, we're ready. Come and play */ - INFO1("Got %ld pals",xbt_dynar_length(hosts)); + peers=amok_pm_group_new("pmm"); + + /* friends, we're ready. Come and play */ + if (gras_if_RL()) { + init_delay = 5; + } else { + init_delay = 15; /* no idea why I have to wait that long in simulation */ + } + INFO1("Wait for peers for %.0f sec",init_delay); + gras_msg_handleall(init_delay); + INFO1("Got %ld pals",xbt_dynar_length(peers)); for (i=0; - iname,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); } @@ -120,11 +130,12 @@ int master (int argc,char *argv[]) { i,SLAVE_COUNT); /* Kill surnumerous slaves */ - for (i=SLAVE_COUNT; iname,h->port); + xbt_dynar_remove_at(peers,i,&h); + INFO2("Too much slaves. Killing %s:%d", h->name, h->port); + amok_pm_kill_hp(h->name,h->port); free(h); } @@ -193,7 +204,7 @@ int master (int argc,char *argv[]) { INFO1("Matrix size too big (%d>30) to be displayed here",DATA_MATRIX_SIZE); } - amok_hm_group_shutdown ("pmm"); /* Ok, we're out of here */ + amok_pm_group_shutdown ("pmm"); /* Ok, we're out of here */ for(i=0; iname, assignment.line[i]->port); - xbt_host_free(assignment.line[i]); + xbt_peer_free(assignment.line[i]); } for (i=0 ; iname, assignment.row[i]->port); - xbt_host_free(assignment.row[i]); + xbt_peer_free(assignment.row[i]); } for (step=0; step