Ignore:
Timestamp:
Sep 11, 2013, 11:45:01 AM (11 years ago)
Author:
Laurent Fairhead
Message:

Création d'une nouvelle testing:

merge des modifications du trunk entre r1796 et r1860


New testing version

merged modifications between r1796 and r1860 from the trunk

i.e.
svn merge -r1796:1860 http://svn.lmd.jussieu.fr/LMDZ/LMDZ5/trunk

Location:
LMDZ5/branches/testing
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/testing

  • LMDZ5/branches/testing/libf/dyn3dmem/mod_hallo.F90

    r1669 r1864  
    11module mod_Hallo
    2 USE parallel
     2USE parallel_lmdz
    33implicit none
    44  logical,save :: use_mpi_alloc
    5   integer, parameter :: MaxRequest=200
    65  integer, parameter :: MaxProc=512
    7   integer, parameter :: MaxBufferSize=1024*1024*100
     6  integer, parameter :: DefaultMaxBufferSize=1024*1024*100
     7  integer, SAVE :: MaxBufferSize=0
    88  integer, parameter :: ListSize=1000
    99 
     
    2828  type request_SR
    2929    integer :: NbRequest=0
     30    integer :: NbRequestMax=0
    3031    integer :: BufferSize
    3132    integer :: Pos
    3233    integer :: Index
    33     type(Hallo),dimension(MaxRequest) :: Hallo
     34    type(Hallo), POINTER :: Hallo(:)
    3435    integer :: MSG_Request
    3536  end type request_SR
     
    6364
    6465  subroutine Init_mod_hallo
    65   USE dimensions
     66  USE dimensions_mod
     67  USE IOIPSL
    6668    implicit none
    6769    integer :: jj_nb_gather(0:mpi_size-1)
     
    7072    Buffer_Pos(Index_Pos)=1
    7173    MaxBufferSize_Used=0
    72 
     74!$OMP MASTER     
     75    MaxBufferSize=DefaultMaxBufferSize
     76    CALL getin("mpi_buffer_size",MaxBufferSize)
     77!$OMP END MASTER
     78!$OMP BARRIER
     79   
    7380    IF (use_mpi_alloc .AND. using_mpi) THEN
    7481      CALL create_global_mpi_buffer
     
    7784    ENDIF
    7885     
     86!$OMP MASTER     
    7987     jj_nb_gather(:)=0
    8088     jj_nb_gather(0)=jjp1
    8189     
    8290     CALL create_distrib(jj_nb_gather,distrib_gather)
     91!$OMP END MASTER
     92!$OMP BARRIER
    8393
    8494  end subroutine init_mod_hallo
     
    176186 
    177187 
    178   subroutine Init_Hallo(Field,Stride,NbLevel,offset,size,NewHallo)
     188  subroutine New_Hallo(Field,Stride,NbLevel,offset,size,Ptr_request)
    179189    integer :: Stride
    180190    integer :: NbLevel
     
    182192    integer :: offset
    183193    real, dimension(Stride,NbLevel),target :: Field
    184     type(Hallo) :: NewHallo
    185    
     194    type(request_SR),pointer :: Ptr_request
     195    type(Hallo),POINTER :: NewHallos(:),HalloSwitch(:), NewHallo
     196   
     197    Ptr_Request%NbRequest=Ptr_Request%NbRequest+1
     198    IF(Ptr_Request%NbRequestMax==0) THEN
     199       Ptr_Request%NbRequestMax=10
     200       ALLOCATE(Ptr_Request%Hallo(Ptr_Request%NbRequestMax))
     201    ELSE IF ( Ptr_Request%NbRequest > Ptr_Request%NbRequestMax) THEN
     202      Ptr_Request%NbRequestMax=INT(Ptr_Request%NbRequestMax*1.2)
     203      ALLOCATE(NewHallos(Ptr_Request%NbRequestMax))
     204      NewHallos(1:Ptr_Request%NbRequest-1)=Ptr_Request%hallo(1:Ptr_Request%NbRequest-1)
     205      HalloSwitch=>Ptr_Request%hallo
     206      Ptr_Request%hallo=>NewHallos
     207      DEALLOCATE(HalloSwitch)
     208    ENDIF
     209   
     210    NewHallo=>Ptr_Request%hallo(Ptr_Request%NbRequest)
     211         
    186212    NewHallo%Field=>Field
    187213    NewHallo%Stride=Stride
     
    190216    NewHallo%offset=offset
    191217   
    192    
    193   end subroutine Init_Hallo
     218  end subroutine New_Hallo
    194219 
    195220  subroutine Register_SendField(Field,ij,ll,offset,size,target,a_request)
    196   USE dimensions
     221  USE dimensions_mod
    197222  implicit none
    198223
     
    204229
    205230      Ptr_Request=>a_request%RequestSend(target)
    206       Ptr_Request%NbRequest=Ptr_Request%NbRequest+1
    207       if (Ptr_Request%NbRequest>=MaxRequest) then
    208         print *,'STOP :: La taille de MaxRequest dans mod_hallo.F90 est trop petite !!!!'
    209         stop
    210       endif     
    211       call Init_Hallo(Field,ij,ll,offset,size,Ptr_request%Hallo(Ptr_Request%NbRequest))
     231
     232      call New_Hallo(Field,ij,ll,offset,size,Ptr_request)
    212233     
    213234   end subroutine Register_SendField     
    214235     
    215236  subroutine Register_RecvField(Field,ij,ll,offset,size,target,a_request)
    216   USE dimensions
     237  USE dimensions_mod
    217238  implicit none
    218239
     
    224245
    225246      Ptr_Request=>a_request%RequestRecv(target)
    226       Ptr_Request%NbRequest=Ptr_Request%NbRequest+1
    227      
    228       if (Ptr_Request%NbRequest>=MaxRequest) then
    229         print *,'STOP :: La taille de MaxRequest dans mod_hallo.F90 est trop petite !!!!'
    230         stop
    231       endif   
    232247           
    233       call Init_Hallo(Field,ij,ll,offset,size,Ptr_request%Hallo(Ptr_Request%NbRequest))
     248      call New_Hallo(Field,ij,ll,offset,size,Ptr_request)
    234249
    235250     
     
    237252 
    238253  subroutine Register_SwapField(FieldS,FieldR,ij,ll,jj_Nb_New,a_request)
    239   USE dimensions
     254  USE dimensions_mod
    240255      implicit none
    241256
     
    285300 
    286301  subroutine Register_SwapFieldHallo(FieldS,FieldR,ij,ll,jj_Nb_New,Up,Down,a_request)
    287   USE dimensions
     302  USE dimensions_mod
    288303 
    289304      implicit none
     
    338353
    339354  SUBROUTINE Register_SwapField1d_u(FieldS,FieldR,new_dist,a_request,old_dist,up,down)
    340   USE parallel
    341   USE dimensions
     355  USE parallel_lmdz
     356  USE dimensions_mod
    342357      IMPLICIT NONE
    343358   
     
    369384
    370385  SUBROUTINE Register_SwapField2d_u1d(FieldS,FieldR,new_dist,a_request,old_dist,up,down)
    371   USE parallel
    372   USE dimensions
     386  USE parallel_lmdz
     387  USE dimensions_mod
    373388    IMPLICIT NONE
    374389   
     
    403418
    404419  SUBROUTINE Register_SwapField3d_u(FieldS,FieldR,new_dist,a_request,old_dist,up,down)
    405   USE parallel
    406   USE dimensions
     420  USE parallel_lmdz
     421  USE dimensions_mod
    407422      IMPLICIT NONE
    408423   
     
    438453
    439454 SUBROUTINE Register_SwapField1d_u2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down)
    440   USE parallel
    441   USE dimensions
     455  USE parallel_lmdz
     456  USE dimensions_mod
    442457
    443458      IMPLICIT NONE
     
    470485
    471486  SUBROUTINE Register_SwapField2d_u2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down)
    472   USE parallel
    473   USE dimensions
     487  USE parallel_lmdz
     488  USE dimensions_mod
    474489
    475490      IMPLICIT NONE
     
    505520
    506521  SUBROUTINE Register_SwapField3d_u2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down)
    507   USE parallel
    508   USE dimensions
     522  USE parallel_lmdz
     523  USE dimensions_mod
    509524      IMPLICIT NONE
    510525   
     
    544559
    545560  SUBROUTINE Register_SwapField1d_v(FieldS,FieldR,new_dist,a_request,old_dist,up,down)
    546   USE parallel
    547   USE dimensions
     561  USE parallel_lmdz
     562  USE dimensions_mod
    548563      IMPLICIT NONE
    549564   
     
    575590
    576591  SUBROUTINE Register_SwapField2d_v1d(FieldS,FieldR,new_dist,a_request,old_dist,up,down)
    577   USE parallel
    578   USE dimensions
     592  USE parallel_lmdz
     593  USE dimensions_mod
    579594      IMPLICIT NONE
    580595   
     
    609624
    610625  SUBROUTINE Register_SwapField3d_v(FieldS,FieldR,new_dist,a_request,old_dist,up,down)
    611   USE parallel
    612   USE dimensions
     626  USE parallel_lmdz
     627  USE dimensions_mod
    613628      IMPLICIT NONE
    614629   
     
    645660
    646661  SUBROUTINE Register_SwapField1d_v2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down)
    647   USE parallel
    648   USE dimensions
     662  USE parallel_lmdz
     663  USE dimensions_mod
    649664      IMPLICIT NONE
    650665   
     
    676691
    677692  SUBROUTINE Register_SwapField2d_v2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down)
    678   USE parallel
    679   USE dimensions
     693  USE parallel_lmdz
     694  USE dimensions_mod
    680695      IMPLICIT NONE
    681696   
     
    710725
    711726  SUBROUTINE Register_SwapField3d_v2d(FieldS,FieldR,new_dist,a_request,old_dist,up,down)
    712   USE parallel
    713   USE dimensions
     727  USE parallel_lmdz
     728  USE dimensions_mod
    714729      IMPLICIT NONE
    715730   
     
    745760
    746761  SUBROUTINE Register_SwapField_gen_u(FieldS,FieldR,ll,old_dist,new_dist,Up,Down,a_request)
    747   USE parallel
    748   USE dimensions
     762  USE parallel_lmdz
     763  USE dimensions_mod
    749764      IMPLICIT NONE
    750765   
     
    787802!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)           
    788803        DO l=1,ll
    789           FieldR(ijb:ije,:)=FieldS(ijb:ije,:)             
     804          FieldR(ijb:ije,l)=FieldS(ijb:ije,l)             
    790805        ENDDO
    791806!$OMP END DO NOWAIT
     
    798813
    799814  SUBROUTINE Register_SwapField_gen_v(FieldS,FieldR,ll,old_dist,new_dist,Up,Down,a_request)
    800   USE parallel
    801   USE dimensions
     815  USE parallel_lmdz
     816  USE dimensions_mod
    802817    IMPLICIT NONE
    803818   
     
    858873 
    859874  subroutine Register_Hallo(Field,ij,ll,RUp,Rdown,SUp,SDown,a_request)
    860   USE dimensions
     875  USE dimensions_mod
    861876      implicit none
    862877
     
    925940
    926941  subroutine Register_Hallo_u(Field,ll,RUp,Rdown,SUp,SDown,a_request)
    927   USE dimensions
     942  USE dimensions_mod
    928943      implicit none
    929944#ifdef CPP_MPI
     
    9901005
    9911006  subroutine Register_Hallo_v(Field,ll,RUp,Rdown,SUp,SDown,a_request)
    992   USE dimensions
     1007  USE dimensions_mod
    9931008      implicit none
    9941009#ifdef CPP_MPI
     
    10551070   
    10561071    subroutine SendRequest(a_Request)
    1057     USE dimensions
     1072    USE dimensions_mod
    10581073      implicit none
    10591074
     
    11791194   
    11801195   subroutine WaitRequest(a_Request)
    1181    USE dimensions
     1196   USE dimensions_mod
    11821197   implicit none
    11831198   
     
    12731288     
    12741289   subroutine WaitSendRequest(a_Request)
    1275    USE dimensions
     1290   USE dimensions_mod
    12761291   implicit none
    12771292   
     
    13291344   
    13301345   subroutine WaitRecvRequest(a_Request)
    1331    USE dimensions
     1346   USE dimensions_mod
    13321347   implicit none
    13331348   
     
    14101425   
    14111426    subroutine CopyField(FieldS,FieldR,ij,ll,jj_Nb_New)
    1412     USE dimensions
     1427    USE dimensions_mod
    14131428 
    14141429      implicit none
     
    14481463
    14491464  subroutine CopyFieldHallo(FieldS,FieldR,ij,ll,jj_Nb_New,Up,Down)
    1450   USE dimensions
     1465  USE dimensions_mod
    14511466 
    14521467      implicit none
     
    14881503
    14891504   subroutine Gather_field_u(field_loc,field_glo,ll)
    1490    USE dimensions
     1505   USE dimensions_mod
    14911506   implicit none
    14921507     integer :: ll
     
    15111526       
    15121527   subroutine Gather_field_v(field_loc,field_glo,ll)
    1513    USE dimensions
     1528   USE dimensions_mod
    15141529   implicit none
    15151530     integer :: ll
     
    15391554     
    15401555   subroutine Scatter_field_u(field_glo,field_loc,ll)
    1541    USE dimensions
     1556   USE dimensions_mod
    15421557   implicit none
    15431558     integer :: ll
     
    15731588
    15741589   subroutine Scatter_field_v(field_glo,field_loc,ll)
    1575    USE dimensions
     1590   USE dimensions_mod
    15761591   implicit none
    15771592     integer :: ll
Note: See TracChangeset for help on using the changeset viewer.