- TRY {
- gras_msg_wait(200,gras_msgtype_by_name("step"),&from,&step);
- } CATCH(e) {
- RETHROW0("Can't get a Next Step message from master : %s");
- }
- INFO1("Receive a step message from master: step = %d ",step);
-
- if (step < PROC_MATRIX_SIZE ){
- /* a line brodcast */
- gras_os_sleep(3); // IL FAUT EXPRIMER LE TEMPS D'ATTENTE EN FONCTION DE "SLAVE_COUNT"
- if(myline==step){
- INFO2("step(%d) = Myline(%d)",step,myline);
- for (l=1;l < PROC_MATRIX_SIZE ;l++){
- gras_msg_send(socket_row[l-1], gras_msgtype_by_name("dataB"), &mydataB);
- bB=mydataB;
- INFO1("send my data B (%.3g) to my (vertical) neighbors",bB);
- }
- }
- if(myline != step){
- INFO2("step(%d) <> Myline(%d)",step,myline);
- TRY {
- gras_msg_wait(600,gras_msgtype_by_name("dataB"),
- &from,&bB);
- } CATCH(e) {
- RETHROW0("I Can't get a data message from line : %s");
- }
- INFO2("Receive data B (%.3g) from my neighbor: %s",bB,gras_socket_peer_name(from));
- }
- /* a row brodcast */
- if(myrow==step){
- for (l=1;l < PROC_MATRIX_SIZE ;l++){
- gras_msg_send(socket_line[l-1],gras_msgtype_by_name("dataA"), &mydataA);
- bA=mydataA;
- INFO1("send my data A (%.3g) to my (horizontal) neighbors",bA);
- }
+ /* a line brodcast */
+ 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++) {
+ 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,
+ submatrix_size,submatrix_size,
+ 0,0,NULL);
+ } else {
+ TRY {
+ xbt_matrix_free(bB);
+ gras_msg_wait(600,gras_msgtype_by_name("dataB"),&from,&bB);
+ } CATCH(e) {
+ RETHROW0("Can't get a data message from line : %s");