Ignore:
Timestamp:
07/25/19 11:36:36 (5 years ago)
Author:
adurocher
Message:

Merge 'mpi_rewrite' into trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/parallel/transfert.F90

    r711 r963  
    1 MODULE transfert_mod 
    2  
     1module transfert_mod 
    32#ifdef CPP_USING_MPI 
    4   USE transfert_mpi_mod, ONLY : init_transfert, transfert_request=>transfert_request_mpi, req_i1,req_e1_vect, & 
    5                                 req_e1_scal, req_z1_scal, req_i0, req_e0_vect, req_e0_scal, request_add_point,             & 
    6                                 create_request, gather_field, scatter_field,         & 
    7                                 t_message, init_message=>init_message_mpi,           & 
    8                                 transfert_message=>transfert_message_mpi,            & 
    9                                 send_message=>send_message_mpi,                      & 
    10                                 test_message=>test_message_mpi,                      & 
    11                                 wait_message=>wait_message_mpi,barrier,bcast_mpi 
    12 #else  
    13   USE transfert_mpi_mod, ONLY : init_transfert, transfert_request=>transfert_request_seq, req_i1,req_e1_vect, & 
    14                                 req_e1_scal, req_z1_scal, req_i0, req_e0_vect, req_e0_scal,        & 
    15                                 request_add_point, create_request, gather_field,     & 
    16                                 scatter_field, t_message,                            & 
    17                                 init_message=>init_message_seq,                      & 
    18                                 transfert_message=>transfert_message_seq,            & 
    19                                 send_message=>send_message_seq,                      & 
    20                                 test_message=>test_message_seq,                      & 
    21                                 wait_message=>wait_message_seq,barrier, bcast_mpi 
     3 
     4#if defined(CPP_USING_MPI_LEGACY) 
     5#warning("Using legacy transfert_mpi (not default)") 
     6  use transfert_mpi_legacy_mod, only :  t_message, t_request, & 
     7                                        req_i1, req_e1_scal, req_e1_vect, & 
     8                                        req_i0, req_e0_scal, req_e0_vect, & 
     9                                        req_z1_scal, & 
     10                                        init_transfert, & 
     11                                        init_message => init_message_mpi, & 
     12                                        finalize_message => finalize_message_mpi, & 
     13                                        send_message => send_message_mpi, & 
     14                                        wait_message => wait_message_mpi, & 
     15                                        test_message => test_message_mpi 
     16#else 
     17  ! transfert_mpi using manual pack/unpack (default) 
     18  use transfert_mpi_mod, only : t_message, t_request, & 
     19                                req_i1, req_e1_scal, req_e1_vect, & 
     20                                req_i0, req_e0_scal, req_e0_vect, & 
     21                                req_z1_scal, & 
     22                                init_transfert, & 
     23                                init_message, & 
     24                                finalize_message, & 
     25                                send_message, & 
     26                                wait_message, & 
     27                                test_message 
    2228#endif 
    23  
    24   USE transfert_omp_mod 
    25    
    26   INTERFACE bcast 
    27     MODULE PROCEDURE bcast_c,                                     & 
    28                      bcast_i,bcast_i1,bcast_i2,bcast_i3,bcast_i4, & 
    29                      bcast_r,bcast_r1,bcast_r2,bcast_r3,bcast_r4, & 
    30                      bcast_l,bcast_l1,bcast_l2,bcast_l3,bcast_l4 
    31  
    32   END INTERFACE 
    33  
    34  
    35 CONTAINS 
    36  
     29#else 
     30#warning("Using transfert_seq (unmaintained)") 
     31  use transfert_mpi_legacy_mod, only :  t_message, t_request, & 
     32                                        req_i1, req_e1_scal, req_e1_vect, & 
     33                                        req_i0, req_e0_scal, req_e0_vect, & 
     34                                        req_z1_scal, & 
     35                                        init_transfert, & 
     36                                        init_message=>init_message_seq, & 
     37                                        finalize_message => finalize_message_seq, & 
     38                                        send_message => send_message_seq, & 
     39                                        wait_message => wait_message_seq, & 
     40                                        test_message => test_message_seq 
     41#endif 
     42  use transfert_mpi_collectives_mod, only : gather_field, scatter_field, bcast_field, bcast_mpi 
     43  use transfert_omp_mod, only : bcast_omp 
     44 
     45  implicit none 
     46  private 
     47  public :: t_message, t_request, & 
     48          req_i1, req_e1_scal, req_e1_vect, & 
     49          req_i0, req_e0_scal, req_e0_vect, & 
     50          !req_z1_scal, & 
     51          init_transfert, & 
     52          init_message, & 
     53          finalize_message, & 
     54          send_message, & 
     55          wait_message, & 
     56          test_message, & 
     57          transfert_request, & 
     58          transfert_message, & 
     59          gather_field, scatter_field, bcast_field, bcast, bcast_omp 
     60 
     61  interface bcast 
     62    module procedure  bcast_c,                                     & 
     63                      bcast_i,bcast_i1,bcast_i2,bcast_i3,bcast_i4, & 
     64                      bcast_r,bcast_r1,bcast_r2,bcast_r3,bcast_r4, & 
     65                      bcast_l,bcast_l1,bcast_l2,bcast_l3,bcast_l4 
     66  end interface 
     67 
     68contains 
     69  subroutine transfert_message(field, message) 
     70    use field_mod, only : t_field 
     71    type(t_field), pointer :: field(:) 
     72    type(t_message) :: message 
     73 
     74    call send_message(field, message) 
     75    call wait_message(message) 
     76  end subroutine 
     77 
     78  subroutine transfert_request(field, request) 
     79    use field_mod, only : t_field 
     80    type(t_field),pointer :: field(:) 
     81    type(t_request),pointer :: request(:) 
     82    type(t_message), save :: message ! Save because shared between threads 
     83 
     84    call init_message(field, request, message) 
     85    call transfert_message(field, message) 
     86    call finalize_message(message) 
     87  end subroutine 
    3788 
    3889!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
     
    4091!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    4192 
    42 !! -- Les chaine de charactère -- !! 
     93!! -- Les chaine de charactï¿œre -- !! 
    4394 
    4495  SUBROUTINE bcast_c(var) 
Note: See TracChangeset for help on using the changeset viewer.