Ignore:
Timestamp:
11/13/14 15:09:14 (9 years ago)
Author:
mhnguyen
Message:

Implementing buffer size auto-detection for mode client -server

+) Process xml tree in client side then send all the information to server
+) Only information enabled fields in enabled files are sent to server
+) Some important change in structure of code which must be refactored

Test
+) On Curie
+) Only mode client-server
+) Passed for all tests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/buffer_client.cpp

    r501 r509  
    1010namespace xios 
    1111{ 
    12   
     12 
    1313  size_t maxRequestSize=0 ; 
    14    
    15   CClientBuffer::CClientBuffer(MPI_Comm interComm_,int serverRank_) 
     14 
     15  CClientBuffer::CClientBuffer(MPI_Comm interComm_,int serverRank_, StdSize bfSize) 
    1616  { 
    17     bufferSizeByServer=CXios::bufferSize ; 
     17    bufferSizeByServer=bfSize; //CXios::bufferSize ; 
    1818    info(10)<<"bufferSizeByServer "<<bufferSizeByServer<<endl ; 
    1919    interComm=interComm_ ; 
    2020    serverRank=serverRank_ ; 
    21     bufferSize=bufferSizeByServer/2 ; 
     21    bufferSize=bufferSizeByServer/2; //2 ; 
    2222    buffer[0]=new char[bufferSize] ; // transform it with MPI_ALLOC_MEM later 
    2323    buffer[1]=new char[bufferSize] ; 
     
    2727    retBuffer=new CBufferOut(buffer[current],bufferSize) ; 
    2828  } 
    29    
     29 
    3030  CClientBuffer::~CClientBuffer() 
    3131  { 
     
    3434   delete retBuffer ; 
    3535  } 
    36    
     36 
    3737  int CClientBuffer::remain(void) 
    3838  { 
    3939    return bufferSize-count ; 
    4040  } 
    41    
     41 
    4242  bool CClientBuffer::isBufferFree(int size) 
    4343  { 
    4444    if (size>maxRequestSize) maxRequestSize=size ; 
    45      
     45 
    4646    if (size>bufferSize) ERROR("CClientBuffer::hasSpace(int size)", 
    4747                               <<"request size is too big for buffer, increase buffer client size"<<endl 
    4848                               <<"Current buffer_size : "<<CXios::bufferSize<<endl 
    4949                               <<"buffer_size must be > "<<size*2<<endl) 
    50   
     50 
    5151    if (size<=remain()) return true ; 
    5252    else return false ; 
    5353  } 
    54      
    55    
     54 
     55 
    5656  CBufferOut*  CClientBuffer::getBuffer(int size) 
    5757  { 
     
    6868       return NULL ; 
    6969    } 
    70   
    71   }   
    72    
     70 
     71  } 
     72 
    7373  bool CClientBuffer::checkBuffer(void) 
    7474  { 
    7575    MPI_Status status ; 
    7676    int flag ; 
    77      
     77 
    7878    if (pending) 
    7979    { 
     
    9797    return pending ; 
    9898  } 
    99    
     99 
    100100  bool CClientBuffer::hasPendingRequest(void) 
    101101  { 
     
    104104    else return false ; 
    105105  } 
    106      
    107    
    108    
    109 }     
    110      
     106 
     107 
     108 
     109} 
     110 
Note: See TracChangeset for help on using the changeset viewer.