From: mquinson Date: Thu, 6 Jul 2006 19:17:35 +0000 (+0000) Subject: Works both in RL and SG. Those processes are as stupid as lemmings. They we blocking... X-Git-Tag: v3.3~2861 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/5970a2578992ed4bc926a2e46efa532015ec4a4d Works both in RL and SG. Those processes are as stupid as lemmings. They we blocking trying to speak to themselves when all deployed on the same host (the case in RL) git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@2497 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/examples/gras/pmm/pmm.c b/examples/gras/pmm/pmm.c index 45f427e39b..ae51e8a134 100755 --- a/examples/gras/pmm/pmm.c +++ b/examples/gras/pmm/pmm.c @@ -11,6 +11,7 @@ #include "gras.h" #include "xbt/matrix.h" #define PROC_MATRIX_SIZE 2 +#define NEIGHBOR_COUNT PROC_MATRIX_SIZE - 1 #define SLAVE_COUNT (PROC_MATRIX_SIZE*PROC_MATRIX_SIZE) #define DATA_MATRIX_SIZE 8 @@ -30,8 +31,8 @@ typedef struct s_result result_t; GRAS_DEFINE_TYPE(s_assignment,struct s_assignment { int linepos; int rowpos; - xbt_host_t line[PROC_MATRIX_SIZE]; - xbt_host_t row[PROC_MATRIX_SIZE]; + xbt_host_t line[NEIGHBOR_COUNT]; + xbt_host_t row[NEIGHBOR_COUNT]; xbt_matrix_t A GRAS_ANNOTE(subtype,double); xbt_matrix_t B GRAS_ANNOTE(subtype,double); }); @@ -42,7 +43,7 @@ static void register_messages(void) { gras_datadesc_type_t result_type; gras_datadesc_type_t assignment_type; - gras_datadesc_set_const("PROC_MATRIX_SIZE",PROC_MATRIX_SIZE); + gras_datadesc_set_const("NEIGHBOR_COUNT",NEIGHBOR_COUNT); result_type=gras_datadesc_by_symbol(s_result); assignment_type=gras_datadesc_by_symbol(s_assignment); @@ -144,15 +145,23 @@ int master (int argc,char *argv[]) { INFO0("XXXXXXXXXXXXXXXXXXXXXX begin Multiplication"); for(i=0 ; iname)) { - socket_line[j]=gras_socket_client(assignment.line[i]->name, - assignment.line[i]->port); - j++; - } + for (i=0 ; iname, + assignment.line[i]->port); xbt_host_free(assignment.line[i]); } - for (i=0,j=0 ; iname)) { - socket_row[j]=gras_socket_client(assignment.row[i]->name, - assignment.row[i]->port); - j++; - } + for (i=0 ; iname, + assignment.row[i]->port); xbt_host_free(assignment.row[i]); } @@ -284,10 +286,15 @@ int slave(int argc,char *argv[]) { if(myline==step){ INFO3("LINE: step(%d) = Myline(%d). Broadcast my data (myport=%d).", step,myline,gras_os_myport()); - for (l=0;l < PROC_MATRIX_SIZE-1 ;l++) + for (l=0;l < PROC_MATRIX_SIZE-1 ;l++) { + INFO2("LINE: Send to %s:%d", + gras_socket_peer_name(socket_row[l]), + gras_socket_peer_port(socket_row[l])); gras_msg_send(socket_row[l], gras_msgtype_by_name("dataB"), &mydataB); + } + xbt_matrix_free(bB); bB = xbt_matrix_new_sub(mydataB, @@ -307,8 +314,12 @@ int slave(int argc,char *argv[]) { /* a row brodcast */ if (myrow==step) { INFO2("ROW: step(%d)=myrow(%d). Broadcast my data",step,myrow); - for (l=1;l < PROC_MATRIX_SIZE ;l++) - gras_msg_send(socket_line[l-1],gras_msgtype_by_name("dataA"), &mydataA); + for (l=1;l < PROC_MATRIX_SIZE ; l++) { + INFO2("ROW: Send to %s:%d", + gras_socket_peer_name(socket_line[l-1]), + gras_socket_peer_port(socket_line[l-1])); + gras_msg_send(socket_line[l-1],gras_msgtype_by_name("dataA"), &mydataA); + } xbt_matrix_free(bA); bA = xbt_matrix_new_sub(mydataA, submatrix_size,submatrix_size,