X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7854ea73be3445ce2e61f94eff25a17f319649c0..5970a2578992ed4bc926a2e46efa532015ec4a4d:/examples/gras/pmm/pmm.c 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,