- /* 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 row=1, col=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.myrow=row; // My row
- mydata.mycol=col; // My column
- row++;
- if (row > PROC_MATRIX_SIZE) {
- row=1;
- col++;
- }
-
- mydata.a=A.data[(mydata.myrow-1)*PROC_MATRIX_SIZE+(mydata.mycol-1)];
- mydata.b=B.data[(mydata.myrow-1)*PROC_MATRIX_SIZE+(mydata.mycol-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++;
+ /* 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 */
+ if (gras_if_RL()) {
+ init_delay = 5;
+ } else {
+ init_delay = 15; /* no idea why I have to wait that long in simulation */
+ }
+ INFO1("Wait for peers for %.0f sec",init_delay);
+ gras_msg_handleall(init_delay);
+ INFO1("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]);
+ INFO2("Connecting to %s:%d.",grid[i]->name,grid[i]->port);
+ socket[i]=gras_socket_client(grid[i]->name,grid[i]->port);
+ INFO2("Connected to %s:%d.",grid[i]->name,grid[i]->port);
+ }
+ xbt_assert2(i==SLAVE_COUNT,
+ "Not enough slaves for this setting (got %d of %d). Change the deployment file",
+ i,SLAVE_COUNT);
+
+ /* Kill surnumerous slaves */
+ for (i=SLAVE_COUNT; i<xbt_dynar_length(peers); ) {
+ xbt_peer_t h;
+
+ xbt_dynar_remove_at(peers,i,&h);
+ INFO2("Too much slaves. Killing %s:%d", h->name, h->port);
+ amok_pm_kill_hp(h->name,h->port);
+ free(h);