Changeset 4600 for LMDZ6/trunk/libf/dyn3dmem/parallel_lmdz.F90
- Timestamp:
- Jun 30, 2023, 8:18:43 PM (11 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3dmem/parallel_lmdz.F90
r4593 r4600 4 4 MODULE parallel_lmdz 5 5 USE mod_const_mpi 6 USE lmdz_mpi, ONLY : using_mpi 6 7 #ifdef CPP_IOIPSL 7 8 use IOIPSL … … 12 13 INTEGER,PARAMETER :: halo_max=3 13 14 14 LOGICAL,SAVE :: using_mpi ! .true. if using MPI15 15 LOGICAL,SAVE :: using_omp ! .true. if using OpenMP 16 16 LOGICAL,SAVE :: is_master ! .true. if the core is both MPI & OpenMP master … … 88 88 subroutine init_parallel 89 89 USE vampir 90 USE lmdz_mpi 90 91 implicit none 91 #ifdef CPP_MPI92 include 'mpif.h'93 #endif94 92 INCLUDE "dimensions.h" 95 93 INCLUDE "paramet.h" … … 111 109 #endif 112 110 113 #ifdef CPP_MPI114 using_mpi=.TRUE.115 #else116 using_mpi=.FALSE.117 #endif118 119 120 111 #ifdef CPP_OMP 121 112 using_OMP=.TRUE. … … 127 118 128 119 IF (using_mpi) THEN 129 #ifdef CPP_MPI130 120 call MPI_COMM_SIZE(COMM_LMDZ,mpi_size,ierr) 131 121 call MPI_COMM_RANK(COMM_LMDZ,mpi_rank,ierr) 132 #endif133 122 ELSE 134 123 mpi_size=1 … … 161 150 write(lunout,*)" ---> diminuez le nombre de CPU ou augmentez la taille en lattitude" 162 151 163 #ifdef CPP_MPI164 152 IF (using_mpi) call MPI_ABORT(COMM_LMDZ,-1, ierr) 165 #endif 153 166 154 endif 167 155 … … 395 383 396 384 subroutine Finalize_parallel 385 USE lmdz_mpi 397 386 #ifdef CPP_XIOS 398 387 ! ug Pour les sorties XIOS … … 418 407 include "dimensions.h" 419 408 include "paramet.h" 420 #ifdef CPP_MPI421 include 'mpif.h'422 #endif423 409 424 410 integer :: ierr … … 446 432 CALL wxios_close() 447 433 #endif 448 #ifdef CPP_MPI 449 IF (using_mpi) call MPI_FINALIZE(ierr) 450 #endif 434 IF (using_mpi) call MPI_FINALIZE(ierr) 451 435 end if 452 436 … … 502 486 503 487 SUBROUTINE barrier 488 USE lmdz_mpi 504 489 IMPLICIT NONE 505 #ifdef CPP_MPI506 INCLUDE 'mpif.h'507 #endif508 490 INTEGER :: ierr 509 491 510 492 !$OMP CRITICAL (MPI) 511 #ifdef CPP_MPI512 493 IF (using_mpi) CALL MPI_Barrier(COMM_LMDZ,ierr) 513 #endif514 494 !$OMP END CRITICAL (MPI) 515 495 … … 518 498 519 499 subroutine exchange_hallo(Field,ij,ll,up,down) 500 USE lmdz_mpi 520 501 USE Vampir 521 502 implicit none 522 503 INCLUDE "dimensions.h" 523 504 INCLUDE "paramet.h" 524 #ifdef CPP_MPI525 include 'mpif.h'526 #endif527 505 INTEGER :: ij,ll 528 506 REAL, dimension(ij,ll) :: Field … … 533 511 LOGICAL :: RecvUp,RecvDown 534 512 INTEGER, DIMENSION(4) :: Request 535 #ifdef CPP_MPI536 513 INTEGER, DIMENSION(MPI_STATUS_SIZE,4) :: Status 537 #else 538 INTEGER, DIMENSION(1,4) :: Status 539 #endif 514 540 515 INTEGER :: NbRequest 541 516 REAL, dimension(:),allocatable :: Buffer_Send_up,Buffer_Send_down … … 582 557 call PACK_Data(Field(ij_begin,1),ij,ll,down,Buffer_Send_up) 583 558 !$OMP CRITICAL (MPI) 584 #ifdef CPP_MPI585 559 call MPI_ISEND(Buffer_send_up,Buffer_Size,MPI_REAL8,MPI_Rank-1,1, & 586 560 COMM_LMDZ,Request(NbRequest),ierr) 587 #endif588 561 !$OMP END CRITICAL (MPI) 589 562 ENDIF … … 597 570 598 571 !$OMP CRITICAL (MPI) 599 #ifdef CPP_MPI600 572 call MPI_ISEND(Buffer_send_down,Buffer_Size,MPI_REAL8,MPI_Rank+1,1, & 601 573 COMM_LMDZ,Request(NbRequest),ierr) 602 #endif603 574 !$OMP END CRITICAL (MPI) 604 575 ENDIF … … 611 582 612 583 !$OMP CRITICAL (MPI) 613 #ifdef CPP_MPI614 584 call MPI_IRECV(Buffer_recv_up,Buffer_size,MPI_REAL8,MPI_Rank-1,1, & 615 585 COMM_LMDZ,Request(NbRequest),ierr) 616 #endif617 586 !$OMP END CRITICAL (MPI) 618 587 … … 626 595 627 596 !$OMP CRITICAL (MPI) 628 #ifdef CPP_MPI629 597 call MPI_IRECV(Buffer_recv_down,Buffer_size,MPI_REAL8,MPI_Rank+1,1, & 630 598 COMM_LMDZ,Request(NbRequest),ierr) 631 #endif632 599 !$OMP END CRITICAL (MPI) 633 600 634 601 ENDIF 635 602 636 #ifdef CPP_MPI637 603 if (NbRequest > 0) call MPI_WAITALL(NbRequest,Request,Status,ierr) 638 #endif639 604 IF (RecvUp) call Unpack_Data(Field(ij_begin-up*iip1,1),ij,ll,up,Buffer_Recv_up) 640 605 IF (RecvDown) call Unpack_Data(Field(ij_end+1,1),ij,ll,down,Buffer_Recv_down) … … 651 616 652 617 subroutine Gather_Field(Field,ij,ll,rank) 618 USE lmdz_mpi 653 619 implicit none 654 620 INCLUDE "dimensions.h" 655 621 INCLUDE "paramet.h" 656 622 INCLUDE "iniprint.h" 657 #ifdef CPP_MPI658 include 'mpif.h'659 #endif660 623 INTEGER :: ij,ll,rank 661 624 REAL, dimension(ij,ll) :: Field … … 709 672 710 673 !$OMP CRITICAL (MPI) 711 #ifdef CPP_MPI712 674 call MPI_GATHERV(Buffer_send,(min(ij_end,ij)-ij_begin+1)*ll,MPI_REAL8, & 713 675 Buffer_Recv,Recv_count,displ,MPI_REAL8,rank,COMM_LMDZ,ierr) 714 #endif715 676 !$OMP END CRITICAL (MPI) 716 677 … … 735 696 736 697 subroutine AllGather_Field(Field,ij,ll) 698 USE lmdz_mpi 737 699 implicit none 738 700 INCLUDE "dimensions.h" 739 701 INCLUDE "paramet.h" 740 #ifdef CPP_MPI741 include 'mpif.h'742 #endif743 702 INTEGER :: ij,ll 744 703 REAL, dimension(ij,ll) :: Field … … 748 707 call Gather_Field(Field,ij,ll,0) 749 708 !$OMP CRITICAL (MPI) 750 #ifdef CPP_MPI751 709 call MPI_BCAST(Field,ij*ll,MPI_REAL8,0,COMM_LMDZ,ierr) 752 #endif753 710 !$OMP END CRITICAL (MPI) 754 711 ENDIF … … 757 714 758 715 subroutine Broadcast_Field(Field,ij,ll,rank) 716 USE lmdz_mpi 759 717 implicit none 760 718 INCLUDE "dimensions.h" 761 719 INCLUDE "paramet.h" 762 #ifdef CPP_MPI763 include 'mpif.h'764 #endif765 720 INTEGER :: ij,ll 766 721 REAL, dimension(ij,ll) :: Field … … 771 726 772 727 !$OMP CRITICAL (MPI) 773 #ifdef CPP_MPI774 728 call MPI_BCAST(Field,ij*ll,MPI_REAL8,rank,COMM_LMDZ,ierr) 775 #endif776 729 !$OMP END CRITICAL (MPI) 777 730 … … 781 734 782 735 ! Subroutine verif_hallo(Field,ij,ll,up,down) 736 ! USE lmdz_mpi 783 737 ! implicit none 784 738 ! INCLUDE "dimensions.h" 785 739 ! INCLUDE "paramet.h" 786 ! include 'mpif.h'787 740 ! 788 741 ! INTEGER :: ij,ll
Note: See TracChangeset
for help on using the changeset viewer.