Changeset 43 for XMLIO_SERVER


Ignore:
Timestamp:
10/30/09 18:11:29 (14 years ago)
Author:
ymipsl
Message:

Correction de bug lorsque le serveur accumule trop de requÚtes et ne passe pas en mode bloquant.
YM

Location:
XMLIO_SERVER/trunk/src/IOSERVER
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_SERVER/trunk/src/IOSERVER/mod_mpi_buffer_client.f90

    r37 r43  
    2222  LOGICAL,SAVE :: is_last_request 
    2323 
    24   INTEGER      :: mpi_buffer_size 
     24  INTEGER,SAVE      :: mpi_buffer_size 
     25  INTEGER,SAVE      :: aggregated_request 
    2526 
    2627CONTAINS 
     
    4546    ok_new_request=.TRUE. 
    4647    is_last_request=.FALSE. 
     48    aggregated_request=0 
    4749     
    4850    CALL set_pack_buffer(MPI_Buffer,buffer_begin) 
     
    8789    pack_buffer(start_pos)=request_size 
    8890    message_size=pack_pos-Pending_request(Request_pos)%Pos 
     91    aggregated_request=aggregated_request+1 
    8992 
    9093 
     
    105108!      PRINT *,"Request_pos",request_pos 
    106109!      PRINT *,"Pos in Buffer",Pending_request(Request_pos)%Pos,"pack_pos",pack_pos 
    107       IF ( nb_request_pending==1 .AND. ( (buffer_free < MPI_buffer_size * 0.4) .OR. is_last_request ) ) THEN 
     110      IF ( nb_request_pending==1 .AND. ( (buffer_free < MPI_buffer_size * 0.4) .OR. is_last_request .OR. (aggregated_request>=max_request/2) )) THEN 
    108111        ok_out=.FALSE. 
    109112        CALL Wait_us(10) 
     
    124127   ENDDO 
    125128    
    126    IF (nb_request_pending==0 .OR. (buffer_free < MPI_buffer_size* 0.4 )) THEN 
     129   IF (nb_request_pending==0 .OR. (buffer_free < MPI_buffer_size* 0.4 ) .OR. (aggregated_request> max_request/2) ) THEN 
    127130       
    128131     CALL MPI_ISSEND(MPI_Buffer(Pending_request(Request_pos)%Pos),message_size,MPI_INTEGER8,     & 
     
    143146     
    144147      ok_new_request=.TRUE. 
    145     
     148      aggregated_request=0 
    146149    ENDIF 
    147150    CALL VTe(VTprocess_event)     
  • XMLIO_SERVER/trunk/src/IOSERVER/mod_mpi_buffer_server.f90

    r37 r43  
    110110            ENDIF 
    111111             
    112             IF (buffer_space < message_size .OR. buffers(n)%request_free==0) THEN 
     112            IF (buffer_space < message_size .OR. buffers(n)%request_free<=max_request/2) THEN 
    113113              ok_out=.TRUE. 
    114114!              PRINT *,"BUFFER FULL !!!!" 
Note: See TracChangeset for help on using the changeset viewer.