From e5d2cf32d83cdf0a1fd56e0ead70c5ba3e56e406 Mon Sep 17 00:00:00 2001 From: mquinson Date: Mon, 10 Jul 2006 01:15:13 +0000 Subject: [PATCH] Convert to amok/hostmanagement (it helps avoiding port number clashes between test directories when running make check) git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2521 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- examples/gras/pmm/pmm.c | 159 ++++++++++++++------------- examples/gras/pmm/pmm_deployment.xml | 30 ++--- examples/gras/pmm/test_rl.in | 21 ++-- 3 files changed, 103 insertions(+), 107 deletions(-) diff --git a/examples/gras/pmm/pmm.c b/examples/gras/pmm/pmm.c index a61618b3ec..4fc4b41bbc 100755 --- a/examples/gras/pmm/pmm.c +++ b/examples/gras/pmm/pmm.c @@ -10,6 +10,8 @@ #include "gras.h" #include "xbt/matrix.h" +#include "amok/hostmanagement.h" + #define PROC_MATRIX_SIZE 3 #define NEIGHBOR_COUNT PROC_MATRIX_SIZE - 1 #define SLAVE_COUNT (PROC_MATRIX_SIZE*PROC_MATRIX_SIZE) @@ -28,7 +30,7 @@ GRAS_DEFINE_TYPE(s_result,struct s_result { typedef struct s_result result_t; /* struct to send initial data to slave */ -GRAS_DEFINE_TYPE(s_assignment,struct s_assignment { +GRAS_DEFINE_TYPE(s_pmm_assignment,struct s_pmm_assignment { int linepos; int rowpos; xbt_host_t line[NEIGHBOR_COUNT]; @@ -36,22 +38,22 @@ GRAS_DEFINE_TYPE(s_assignment,struct s_assignment { xbt_matrix_t A GRAS_ANNOTE(subtype,double); xbt_matrix_t B GRAS_ANNOTE(subtype,double); }); -typedef struct s_assignment s_assignment_t; +typedef struct s_pmm_assignment s_pmm_assignment_t; /* register messages which may be sent (common to client and server) */ static void register_messages(void) { gras_datadesc_type_t result_type; - gras_datadesc_type_t assignment_type; + gras_datadesc_type_t pmm_assignment_type; gras_datadesc_set_const("NEIGHBOR_COUNT",NEIGHBOR_COUNT); result_type=gras_datadesc_by_symbol(s_result); - assignment_type=gras_datadesc_by_symbol(s_assignment); + pmm_assignment_type=gras_datadesc_by_symbol(s_pmm_assignment); /* receive a final result from slave */ gras_msgtype_declare("result", result_type); /* send from master to slave to assign a position and some data */ - gras_msgtype_declare("assignment", assignment_type); + gras_msgtype_declare("pmm_slave", pmm_assignment_type); /* send data between slaves */ gras_msgtype_declare("dataA", gras_datadesc_matrix(gras_datadesc_by_name("double"),NULL)); @@ -75,76 +77,63 @@ typedef struct { } master_data_t; -/*** Function Scatter Sequentiel ***/ - -static void scatter(){ - -}/* end_of_Scatter */ - -/*** Function: Scatter // ***/ - -static void scatter_parl(){ - -}/* end_of_Scatter // */ - -/*** Function: multiplication ***/ - -static void multiplication(){ - -}/* end_of_multiplication */ - -/*** Function: gather ***/ - -static void gather(){ - -}/* end_of_gather */ - int master (int argc,char *argv[]) { - int i,port; + int i; xbt_matrix_t A,B,C; result_t result; gras_socket_t from; - - xbt_host_t grid[SLAVE_COUNT]; /* The slaves */ + xbt_dynar_t hosts; /* group of slaves */ + xbt_host_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 */ + /* Init the GRAS's infrastructure */ gras_init(&argc, argv); + amok_hm_init(); register_messages(); - /* Initialize Matrices */ + /* Initialize data matrices */ A = xbt_matrix_double_new_id(DATA_MATRIX_SIZE,DATA_MATRIX_SIZE); B = xbt_matrix_double_new_seq(DATA_MATRIX_SIZE,DATA_MATRIX_SIZE); C = xbt_matrix_double_new_zeros(DATA_MATRIX_SIZE,DATA_MATRIX_SIZE); - /* Get arguments and create sockets */ - port=atoi(argv[1]); - //scatter(); - //scatter_parl(); - //multiplication(); - //gather(); - /************************* Init Data Send *********************************/ - gras_os_sleep(2); - - for( i=0; i+1name,grid[i]->port); - INFO2("Connected to %s:%d.",grid[i]->name,grid[i]->port); } xbt_assert2(i==SLAVE_COUNT, "Not enough slaves for this setting (got %d of %d). Change the deployment file", i,SLAVE_COUNT); - /* FIXME: let the surnumerous slave die properly */ - + + /* Kill surnumerous slaves */ + for (i=SLAVE_COUNT; iname,h->port); + free(h); + } + + + /* Assign job to slaves */ int row=0, line=0; INFO0("XXXXXXXXXXXXXXXXXXXXXX begin Multiplication"); for(i=0 ; i30) to be displayed here",DATA_MATRIX_SIZE); } + amok_hm_group_shutdown ("pmm"); /* Ok, we're out of here */ + for(i=0; i>>>>>>> Result sent to %s:%d <<<<<<<<", gras_socket_peer_name(master),gras_socket_peer_port(master)); @@ -359,18 +338,44 @@ int slave(int argc,char *argv[]) { xbt_matrix_free(mydataA); xbt_matrix_free(mydataB); - gras_socket_close(sock); gras_socket_close(master); gras_socket_close(from); - /* FIXME: some are said to be unknown + /* FIXME: some are said to be unknown for (l=0; l < PROC_MATRIX_SIZE-1; l++) { if (socket_line[l]) gras_socket_close(socket_line[l]); if (socket_row[l]) gras_socket_close(socket_row[l]); }*/ - + + return 1; +} + +int slave(int argc,char *argv[]) { + gras_socket_t mysock; + gras_socket_t master; + + /* Init the GRAS's infrastructure */ + gras_init(&argc, argv); + amok_hm_init(); + + /* Register the known messages and my callback */ + register_messages(); + gras_cb_register(gras_msgtype_by_name("pmm_slave"),pmm_worker_cb); + + /* Create the connexions */ + mysock = gras_socket_server_range(3000,9999,0,0); + INFO1("Sensor starting (on port %d)",gras_os_myport()); + gras_os_sleep(0.5); /* let the master get ready */ + master = gras_socket_client_from_string(argv[1]); + + /* Join and run the group */ + amok_hm_group_join(master,"pmm"); + amok_hm_mainloop(600); + + /* housekeeping */ + gras_socket_close(mysock); + // gras_socket_close(master); Unknown gras_exit(); - INFO0("Done."); return 0; } /* end_of_slave */ diff --git a/examples/gras/pmm/pmm_deployment.xml b/examples/gras/pmm/pmm_deployment.xml index db7d415f19..3a25a66ab6 100644 --- a/examples/gras/pmm/pmm_deployment.xml +++ b/examples/gras/pmm/pmm_deployment.xml @@ -1,26 +1,18 @@ - + - - - - - - - - - + - - - - - - - - - + + + + + + + + + diff --git a/examples/gras/pmm/test_rl.in b/examples/gras/pmm/test_rl.in index 0d1290e2bb..33c10d4771 100755 --- a/examples/gras/pmm/test_rl.in +++ b/examples/gras/pmm/test_rl.in @@ -6,14 +6,13 @@ else exenv=wine fi -$exenv ./pmm_slave@EXEEXT@ 4001 $@ & -$exenv ./pmm_slave@EXEEXT@ 4002 $@ & -$exenv ./pmm_slave@EXEEXT@ 4003 $@ & -$exenv ./pmm_slave@EXEEXT@ 4004 $@ & -$exenv ./pmm_slave@EXEEXT@ 4005 $@ & -$exenv ./pmm_slave@EXEEXT@ 4006 $@ & -$exenv ./pmm_slave@EXEEXT@ 4007 $@ & -$exenv ./pmm_slave@EXEEXT@ 4008 $@ & -$exenv ./pmm_slave@EXEEXT@ 4009 $@ & -sleep 1 -exec $exenv ./pmm_master@EXEEXT@ 127.0.0.1:4001 127.0.0.1:4002 127.0.0.1:4003 127.0.0.1:4004 127.0.0.1:4005 127.0.0.1:4006 127.0.0.1:4007 127.0.0.1:4008 127.0.0.1:4009 $@ +$exenv ./pmm_slave@EXEEXT@ 127.0.0.1:4242 $@ & +$exenv ./pmm_slave@EXEEXT@ 127.0.0.1:4242 $@ & +$exenv ./pmm_slave@EXEEXT@ 127.0.0.1:4242 $@ & +$exenv ./pmm_slave@EXEEXT@ 127.0.0.1:4242 $@ & +$exenv ./pmm_slave@EXEEXT@ 127.0.0.1:4242 $@ & +$exenv ./pmm_slave@EXEEXT@ 127.0.0.1:4242 $@ & +$exenv ./pmm_slave@EXEEXT@ 127.0.0.1:4242 $@ & +$exenv ./pmm_slave@EXEEXT@ 127.0.0.1:4242 $@ & +$exenv ./pmm_slave@EXEEXT@ 127.0.0.1:4242 $@ & +exec $exenv ./pmm_master@EXEEXT@ 4242 $@ -- 2.20.1