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/src/IOSERVER
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • 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.