Changeset 27


Ignore:
Timestamp:
04/08/09 16:04:00 (15 years ago)
Author:
ymipsl
Message:

Correction : utilisation d'OASIS par le server

Location:
XMLIO_SERVER/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_SERVER/trunk/bld.cfg

    r8 r27  
    3939bld::excl_dep        inc::mpif.h 
    4040bld::excl_dep        use::mpi 
     41bld::excl_dep        use::mod_prism_get_comm 
     42bld::excl_dep        use::mod_prism_proto 
    4143 
    4244# Don't generate interface files 
  • XMLIO_SERVER/trunk/configure

    r16 r27  
    55set default_compile_flags  = "%PROD_FFLAGS" 
    66set has_use_vt             = FALSE 
     7set has_oasis              = FALSE 
    78 
    89top: 
     
    4748        set compile_flags="%DEBUG_FFLAGS" 
    4849        shift ; goto top 
     50 
    4951    case -use_vt 
    5052        set has_use_vt = TRUE 
    5153        shift ; goto top 
    5254         
     55    case -oasis 
     56        set has_oasis = TRUE 
     57        shift ; goto top 
     58    
    5359   default 
    5460        echo "unknown option "$1" , exiting..." 
     
    117123set LIB="$LIB $NETCDF_LIBDIR $NETCDF_LIB" 
    118124 
     125if ( $has_oasis == TRUE ) then 
     126  set INCDIR="$INCDIR $OASIS_INCDIR" 
     127  set LIB="$LIB $OASIS_LIBDIR $OASIS_LIB" 
     128endif 
     129 
    119130if ( $has_use_vt == TRUE ) then 
    120 set INCDIR="$INCDIR $VAMPIR_INCDIR" 
    121 set LIB="$LIB $VAMPIR_LIBDIR $VAMPIR_LIB" 
    122 set CPP_KEY="$CPP_KEY USE_VT" 
     131  set INCDIR="$INCDIR $VAMPIR_INCDIR" 
     132  set LIB="$LIB $VAMPIR_LIBDIR $VAMPIR_LIB" 
     133  set CPP_KEY="$CPP_KEY USE_VT" 
    123134endif 
     135 
    124136 
    125137 
  • XMLIO_SERVER/trunk/src/IOSERVER/mod_ioclient.f90

    r26 r27  
    1111  USE mod_event_client 
    1212  USE iomanager 
    13  
    1413  IMPLICIT NONE 
    1514    INTEGER, INTENT(INOUT),OPTIONAL :: NEW_COMM 
     
    2524 
    2625    IF (using_server) THEN 
    27       IF (using_oasis) THEN 
    28       ELSE 
    29         CALL Init_parallel 
    30         CALL Init_mpi_buffer 
    31         CALL Init_wait 
     26      CALL Init_parallel 
     27      CALL Init_mpi_buffer 
     28      CALL Init_wait 
     29      IF (PRESENT(NEW_COMM)) THEN 
    3230        NEW_COMM=intracomm 
    3331      ENDIF 
    3432    ELSE 
    35       IF (using_oasis) THEN 
    36        
     33      CALL MPI_INITIALIZED(init,ierr) 
     34      IF (init) THEN 
     35        IF (.NOT. PRESENT(NEW_COMM)) THEN 
     36           Comm=MPI_COMM_WORLD 
     37        ELSE 
     38          Comm=New_Comm 
     39        ENDIF 
    3740      ELSE 
    38         CALL MPI_INITIALIZED(init,ierr) 
    39         IF (init) THEN 
    40           IF (.NOT. PRESENT(NEW_COMM)) THEN 
    41              Comm=MPI_COMM_WORLD 
    42           ELSE 
    43             Comm=New_Comm 
    44           ENDIF 
    45         ELSE 
    46           CALL MPI_INIT(ierr) 
    47           Comm=MPI_COMM_WORLD 
    48            
    49           IF (PRESENT(NEW_COMM)) THEN 
    50             New_Comm=MPI_COMM_WORLD 
    51           ENDIF 
    52         ENDIF   
    53         CALL MPI_COMM_SIZE(Comm,nb_server,ierr)      
    54         CALL MPI_COMM_RANK(Comm,rank,ierr) 
    55         CALL iom__init(1,nb_server,rank) 
    56         CALL iom__set_current_rank(1) 
     41        CALL MPI_INIT(ierr) 
     42        Comm=MPI_COMM_WORLD 
    5743         
    58       ENDIF 
     44        IF (PRESENT(NEW_COMM)) THEN 
     45          New_Comm=MPI_COMM_WORLD 
     46        ENDIF 
     47      ENDIF   
     48      CALL MPI_COMM_SIZE(Comm,nb_server,ierr)      
     49      CALL MPI_COMM_RANK(Comm,rank,ierr) 
     50      CALL iom__init(1,nb_server,rank) 
     51      CALL iom__set_current_rank(1) 
    5952    ENDIF 
    6053     
  • XMLIO_SERVER/trunk/src/IOSERVER/mod_ioclient_para.f90

    r8 r27  
    1212  SUBROUTINE Init_parallel 
    1313  USE mpitrace 
     14  USE mod_ioserver_namelist 
     15  USE mod_prism_get_comm   
    1416  IMPLICIT NONE 
    1517    INCLUDE 'mpif.h' 
     
    2527    INTEGER :: div,remain 
    2628    INTEGER :: group_color 
     29    INTEGER :: Comm_client_server 
     30    CHARACTER(LEN=6) :: oasis_server_id 
    2731     
    28 !    PRINT *, "on rentre dans MPI_INIT" 
    29     CALL MPI_INIT(ierr) 
    30     CALL MPI_COMM_RANK(MPI_COMM_WORLD,global_rank,ierr) 
    31     CALL MPI_COMM_SIZE(MPI_COMM_WORLD,global_size,ierr) 
    32      
    33     PRINT *,"MPI_init Ok, --> mpi_comm_split" 
    34     CALL MPI_COMM_SPLIT(MPI_COMM_WORLD,color_client,global_rank,intracomm,ierr) 
     32    IF (using_oasis) THEN 
     33      oasis_server_id=server_id 
     34      PRINT *,'prism_get_intracomm' 
     35      CALL prism_get_intracomm(Comm_client_server,oasis_server_id,ierr) 
     36    ELSE 
     37      CALL MPI_INIT(ierr) 
     38      Comm_client_server=MPI_COMM_WORLD 
     39    ENDIF 
     40 
     41    CALL MPI_COMM_RANK(Comm_client_server,global_rank,ierr) 
     42    CALL MPI_COMM_SIZE(Comm_client_server,global_size,ierr) 
     43 
     44    CALL MPI_COMM_SPLIT(Comm_client_server,color_client,global_rank,intracomm,ierr) 
    3545    CALL MPI_COMM_SIZE(intracomm,mpi_size,ierr) 
    3646    CALL MPI_COMM_RANK(intracomm,mpi_rank,ierr) 
    37     PRINT *,"MPI_mpi_comm_split ok --> intracomm"  
     47 
    3848    nb_server_io=global_size-mpi_size 
    3949    div=mpi_size/nb_server_io 
     
    4555      group_color=(nb_server_io-1)-(mpi_size-1-mpi_rank)/div 
    4656    ENDIF 
    47     PRINT *,'group_color',group_color 
    4857 
    49     CALL MPI_COMM_SPLIT(MPI_COMM_WORLD,group_color,global_rank,iocomm,ierr) 
     58    CALL MPI_COMM_SPLIT(Comm_client_server,group_color,global_rank,iocomm,ierr) 
    5059     
    5160    CALL MPI_COMM_SIZE(iocomm,iosize,ierr) 
    5261    CALL MPI_COMM_RANK(iocomm,iorank,ierr) 
    53     PRINT *,"io_size-> ",iosize,"iorank-> ",iorank 
     62 
    5463    ALLOCATE(proc_color(0:iosize-1)) 
    5564    CALL MPI_ALLGATHER(color_client,1,MPI_INTEGER,proc_color,1,MPI_INTEGER,iocomm,ierr) 
    56     print *,"proc_color -> ",proc_color 
    5765     
    5866    DO i=0,iosize-1 
  • XMLIO_SERVER/trunk/src/IOSERVER/mod_ioserver_para.f90

    r8 r27  
    2020  SUBROUTINE Init_parallel 
    2121  USE mpitrace 
     22  USE mod_ioserver_namelist 
     23  USE mod_prism_get_comm   
    2224  IMPLICIT NONE 
    2325    INCLUDE 'mpif.h' 
     
    2830    INTEGER :: i 
    2931    INTEGER :: group_color 
    30      
    31     CALL MPI_INIT(ierr) 
    32     CALL MPI_COMM_RANK(MPI_COMM_WORLD,global_rank,ierr) 
    33     CALL MPI_COMM_SIZE(MPI_COMM_WORLD,global_size,ierr) 
    34     
    35     CALL MPI_COMM_SPLIT(MPI_COMM_WORLD,color_server,global_rank,intracomm,ierr) 
     32    INTEGER :: Comm_client_server 
     33    INTEGER :: comp_id 
     34    CHARACTER(LEN=6) :: oasis_server_id, oasis_client_id 
     35 
     36    IF (using_oasis) THEN 
     37       oasis_server_id=server_id 
     38       oasis_client_id=client_id 
     39       CALL prism_init_comp_proto (comp_id, oasis_server_id, ierr) 
     40       CALL prism_get_intracomm(Comm_client_server,oasis_client_id,ierr) 
     41    ELSE 
     42      CALL MPI_INIT(ierr) 
     43      Comm_client_server=MPI_COMM_WORLD 
     44    ENDIF 
     45         
     46    CALL MPI_COMM_RANK(Comm_client_server,global_rank,ierr) 
     47    CALL MPI_COMM_SIZE(Comm_client_server,global_size,ierr) 
     48        
     49    CALL MPI_COMM_SPLIT(Comm_client_server,color_server,global_rank,intracomm,ierr) 
    3650    CALL MPI_COMM_SIZE(intracomm,mpi_size,ierr) 
    3751    CALL MPI_COMM_RANK(intracomm,mpi_rank,ierr) 
     
    4054    PRINT *,'group_color',group_color 
    4155 
    42     CALL MPI_COMM_SPLIT(MPI_COMM_WORLD,group_color,global_rank,iocomm,ierr)     
     56    CALL MPI_COMM_SPLIT(Comm_client_server,group_color,global_rank,iocomm,ierr)     
    4357     
    4458    CALL MPI_COMM_SIZE(iocomm,iosize,ierr) 
     
    6478   
    6579  SUBROUTINE Finalize_parallel 
     80  USE mod_ioserver_namelist 
     81  USE mod_prism_proto 
    6682  IMPLICIT NONE 
    6783    include 'mpif.h' 
    6884    INTEGER :: ierr 
    6985     
    70     CALL MPI_FINALIZE(ierr) 
    71  
     86    IF (using_oasis) THEN 
     87      CALL prism_terminate_proto(ierr) 
     88    ELSE 
     89      CALL MPI_FINALIZE(ierr) 
     90    ENDIF 
     91     
    7292  END SUBROUTINE Finalize_parallel 
    7393 
Note: See TracChangeset for help on using the changeset viewer.