- gras_socket_t socket[SLAVE_COUNT]; /* sockets for brodcast to slaves */
-
- /* Initialize Matrixs */
-
- A.lines=A.rows=DATA_MATRIX_SIZE;
- B.lines=B.rows=DATA_MATRIX_SIZE;
- C.lines=C.rows=DATA_MATRIX_SIZE;
-
- A.data=xbt_malloc0(sizeof(double)*DATA_MATRIX_SIZE*DATA_MATRIX_SIZE);
- B.data=xbt_malloc0(sizeof(double)*DATA_MATRIX_SIZE*DATA_MATRIX_SIZE);
- C.data=xbt_malloc0(sizeof(double)*DATA_MATRIX_SIZE*DATA_MATRIX_SIZE);
-
- initmatrix(&A);
- initmatrix(&B);
-
- /* Get arguments and create sockets */
- port=atoi(argv[1]);
- //scatter();
- //scatter_parl();
- //multiplication();
- //gather();
- //display(A);
- /************************* Init Data Send *********************************/
- int step_ack,j=0;
- init_data_t mydata;
- gras_os_sleep(60); // MODIFIER LES TEMPS D'ATTENTE 60 c trop normalement
-
- int line=1, row=1;
- for( i=2;i< argc;i++){
- TRY {
- socket[j]=gras_socket_client(argv[i],port);
- } CATCH(e) {
- RETHROW0("Unable to connect to the server: %s");
- }
- INFO2("Connected to %s:%d.",argv[i],port);
-
- mydata.myline=line; // My line
- mydata.myrow=row; // My row
- line++;
- if (line > PROC_MATRIX_SIZE) {
- line=1;
- row++;
- }
-
- mydata.a=A.data[(mydata.myline-1)*PROC_MATRIX_SIZE+(mydata.myrow-1)];
- mydata.b=B.data[(mydata.myline-1)*PROC_MATRIX_SIZE+(mydata.myrow-1)];;
-
- gras_msg_send(socket[j],gras_msgtype_by_name("init_data"),&mydata);
- INFO3("Send Init Data to %s : data A= %.3g & data B= %.3g",
- gras_socket_peer_name(socket[j]),mydata.a,mydata.b);
- j++;
- }
- // end init Data Send
-
- /******************************* multiplication ********************************/
- INFO0("XXXXXXXXXXXXXXXXXXXXXX begin Multiplication");
-
- for (step=1; step <= PROC_MATRIX_SIZE; step++){
- // gras_os_sleep(50);
- for (i=0; i< SLAVE_COUNT; i++){
- TRY {
- gras_msg_send(socket[i], gras_msgtype_by_name("step"), &step);
- } CATCH(e) {
- gras_socket_close(socket[i]);
- RETHROW0("Unable to send the msg : %s");