Changeset 2566 for XIOS3/trunk/src


Ignore:
Timestamp:
09/14/23 09:32:36 (10 months ago)
Author:
jderouillat
Message:

Clean implementation of the request ordering management

Location:
XIOS3/trunk/src/transport
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • XIOS3/trunk/src/transport/one_sided_context_server.cpp

    r2561 r2566  
    102102      { 
    103103        int rank=status.MPI_SOURCE ; 
    104         requests_[rank].push_back(new CRequest(interCommMerged_, status)) ; 
     104        auto& rankRequests = requests_[rank]; 
     105        rankRequests.push_back(new CRequest(interCommMerged_, status)) ; 
    105106        // Test 1st request of the list, request treatment must be ordered  
    106         if (requests_[rank].front()->test())  
     107        if (rankRequests.front()->test())  
    107108        { 
    108           processRequest(*(requests_[rank].front())) ; 
    109           delete requests_[rank].front(); 
    110           requests_[rank].pop_front() ; 
     109          processRequest(*(rankRequests.front())) ; 
     110          delete rankRequests.front(); 
     111          rankRequests.pop_front() ; 
    111112        } 
    112113      } 
     
    119120    { 
    120121      int rank = it_rank->first; 
    121       while ( (!requests_[rank].empty()) && (requests_[rank].front()->test()) ) 
    122       { 
    123         processRequest( *(requests_[rank].front()) ); 
    124         delete requests_[rank].front(); 
    125         requests_[rank].pop_front() ; 
     122      auto& rankRequests = it_rank->second; 
     123      while ( (!rankRequests.empty()) && (rankRequests.front()->test()) ) 
     124      { 
     125        processRequest( *(rankRequests.front()) ); 
     126        delete rankRequests.front(); 
     127        rankRequests.pop_front() ; 
    126128      } 
    127129    } 
  • XIOS3/trunk/src/transport/p2p_context_server.cpp

    r2563 r2566  
    9898      traceOff(); 
    9999      MPI_Iprobe(MPI_ANY_SOURCE, 20,interCommMerged_, &flag, &status); 
     100 
    100101      traceOn(); 
    101102      if (flag==true) 
    102103      { 
    103104        int rank=status.MPI_SOURCE ; 
    104         requests_[rank].push_back(new CRequest(interCommMerged_, status)) ; 
     105        auto& rankRequests = requests_[rank]; 
     106        rankRequests.push_back(new CRequest(interCommMerged_, status)) ; 
    105107        // Test 1st request of the list, request treatment must be ordered  
    106         if (requests_[rank].front()->test()) 
     108        if (rankRequests.front()->test()) 
    107109        { 
    108           processRequest( *(requests_[rank].front()) ); 
    109           delete requests_[rank].front(); 
    110           requests_[rank].pop_front() ; 
     110          processRequest( *(rankRequests.front()) ); 
     111          delete rankRequests.front(); 
     112          rankRequests.pop_front() ; 
    111113        } 
    112114      } 
     
    119121    { 
    120122      int rank = it_rank->first; 
    121       while ( (!requests_[rank].empty()) && (requests_[rank].front()->test()) ) 
    122       { 
    123         processRequest( *(requests_[rank].front()) ); 
    124         delete requests_[rank].front(); 
    125         requests_[rank].pop_front() ; 
     123      auto& rankRequests = it_rank->second; 
     124      while ( (!rankRequests.empty()) && (rankRequests.front()->test()) ) 
     125      { 
     126        processRequest( *(rankRequests.front()) ); 
     127        delete rankRequests.front(); 
     128        rankRequests.pop_front() ; 
    126129      } 
    127130    } 
Note: See TracChangeset for help on using the changeset viewer.