Ignore:
Timestamp:
09/10/18 17:18:33 (6 years ago)
Author:
oabramkina
Message:

Adding a check on the client side if all servers have data to receive. If servers have no data to receive the master process will send empty data to such servers. This ensures that all servers participate in collective calls.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_olga/src/node/axis.cpp

    r1571 r1576  
    657657         // Even if a client has no index, it must connect to at least one server and  
    658658         // send an "empty" data to this server 
    659 //         if (connectedServerRank_[nbServer].empty()) 
    660 //          connectedServerRank_[nbServer].push_back(client->clientRank % client->serverSize); 
    661         // Send empty data to all servers 
    662         if (connectedServerRank_[nbServer].empty()) 
    663           for (int i=0; i<nbServer; ++i) 
    664             connectedServerRank_[nbServer].push_back(i); 
    665  
    666  
    667          nbSenders[nbServer] = CClientServerMapping::computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerRank_[nbServer]); 
     659         if (connectedServerRank_[nbServer].empty()) 
     660          connectedServerRank_[nbServer].push_back(client->clientRank % client->serverSize); 
     661 
     662        nbSenders[nbServer] = CClientServerMapping::computeConnectedClients(client->serverSize, client->clientSize, client->intraComm, connectedServerRank_[nbServer]); 
    668663 
    669664        delete clientServerMap; 
Note: See TracChangeset for help on using the changeset viewer.