- xbt_host_t grid[SLAVE_COUNT]; /* The slaves */
- gras_socket_t socket[SLAVE_COUNT]; /* sockets for brodcast to slaves */
-
- /* Initialize 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(5);
-
- for( i=1;i<argc && i<=SLAVE_COUNT;i++){
- grid[i-1]=xbt_host_from_string(argv[i]);
- socket[i-1]=gras_socket_client(grid[i-1]->name,grid[i-1]->port);
-
- INFO2("Connected to %s:%d.",grid[i-1]->name,grid[i-1]->port);
+ /* 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);
+
+ /* Create the connexions */
+ xbt_assert0(argc > 1, "Usage: master <port>");
+ gras_socket_server(atoi(argv[1]));
+ peers = amok_pm_group_new("pmm");
+
+ /* friends, we're ready. Come and play */
+ INFO0("Wait for peers for 2 sec");
+ gras_msg_handleall(2);
+ do {
+ INFO2("Got only %ld pals (of %d). Wait 2 more seconds",
+ xbt_dynar_length(peers),SLAVE_COUNT);
+ gras_msg_handleall(2);
+ } while (xbt_dynar_length(peers) < SLAVE_COUNT);
+ INFO1("Good. Got %ld pals", xbt_dynar_length(peers));
+
+ for (i = 0; i < xbt_dynar_length(peers) && i < SLAVE_COUNT; i++) {
+ xbt_dynar_get_cpy(peers, i, &grid[i]);
+ socket[i] = gras_socket_client(grid[i]->name, grid[i]->port);