Changeset 4600 for LMDZ6/trunk/libf/dyn3dmem/mod_hallo.F90
- Timestamp:
- Jun 30, 2023, 8:18:43 PM (11 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3dmem/mod_hallo.F90
r4469 r4600 106 106 107 107 SUBROUTINE create_global_mpi_buffer 108 USE lmdz_mpi 108 109 IMPLICIT NONE 109 #ifdef CPP_MPI110 INCLUDE 'mpif.h'111 #endif112 110 POINTER (Pbuffer,MPI_Buffer(MaxBufferSize)) 113 111 REAL :: MPI_Buffer 114 #ifdef CPP_MPI115 112 INTEGER(KIND=MPI_ADDRESS_KIND) :: BS 116 #else117 INTEGER(KIND=8) :: BS118 #endif119 113 INTEGER :: i,ierr 120 114 … … 122 116 Bs=8*MaxBufferSize 123 117 !$OMP CRITICAL (MPI) 124 #ifdef CPP_MPI125 118 CALL MPI_ALLOC_MEM(BS,MPI_INFO_NULL,Pbuffer,ierr) 126 #endif127 119 !$OMP END CRITICAL (MPI) 128 120 DO i=1,MaxBufferSize … … 1157 1149 subroutine Register_Hallo(Field,ij,ll,RUp,Rdown,SUp,SDown,a_request) 1158 1150 USE dimensions_mod 1151 USE lmdz_mpi 1159 1152 implicit none 1160 1153 1161 #ifdef CPP_MPI1162 include 'mpif.h'1163 #endif1164 1154 INTEGER :: ij,ll 1165 1155 REAL, dimension(ij,ll) :: Field … … 1224 1214 subroutine Register_Hallo_u(Field,ll,RUp,Rdown,SUp,SDown,a_request) 1225 1215 USE dimensions_mod 1216 USE lmdz_mpi 1226 1217 implicit none 1227 #ifdef CPP_MPI1228 include 'mpif.h'1229 #endif1230 1218 INTEGER :: ll 1231 1219 REAL, dimension(ijb_u:ije_u,ll) :: Field … … 1289 1277 subroutine Register_Hallo_v(Field,ll,RUp,Rdown,SUp,SDown,a_request) 1290 1278 USE dimensions_mod 1279 USE lmdz_mpi 1291 1280 implicit none 1292 #ifdef CPP_MPI1293 include 'mpif.h'1294 #endif1295 1281 INTEGER :: ll 1296 1282 REAL, dimension(ijb_v:ije_v,ll) :: Field … … 1354 1340 subroutine SendRequest(a_Request) 1355 1341 USE dimensions_mod 1342 USE lmdz_mpi 1356 1343 implicit none 1357 1358 #ifdef CPP_MPI1359 include 'mpif.h'1360 #endif1361 1344 1362 1345 type(request),target :: a_request … … 1410 1393 !$OMP CRITICAL (MPI) 1411 1394 1412 #ifdef CPP_MPI1413 1395 call MPI_ISEND(Buffer(req%Pos),SizeBuffer,MPI_REAL_LMDZ,rank,a_request%tag+1000*omp_rank, & 1414 1396 COMM_LMDZ,Req%MSG_Request,ierr) 1415 #endif1416 1397 IF (.NOT.using_mpi) THEN 1417 1398 PRINT *,'Erreur, echange MPI en mode sequentiel !!!' … … 1453 1434 !$OMP CRITICAL (MPI) 1454 1435 1455 #ifdef CPP_MPI1456 1436 call MPI_IRECV(Buffer(Req%Pos),SizeBuffer,MPI_REAL_LMDZ,rank,a_request%tag+1000*omp_rank, & 1457 1437 COMM_LMDZ,Req%MSG_Request,ierr) 1458 #endif 1438 1459 1439 IF (.NOT.using_mpi) THEN 1460 1440 PRINT *,'Erreur, echange MPI en mode sequentiel !!!' … … 1478 1458 subroutine WaitRequest(a_Request) 1479 1459 USE dimensions_mod 1460 USE lmdz_mpi 1480 1461 implicit none 1481 1482 #ifdef CPP_MPI1483 include 'mpif.h'1484 #endif1485 1462 1486 1463 type(request),target :: a_request … … 1488 1465 type(Hallo),pointer :: PtrHallo 1489 1466 integer, dimension(2*mpi_size) :: TabRequest 1490 #ifdef CPP_MPI1491 1467 integer, dimension(MPI_STATUS_SIZE,2*mpi_size) :: TabStatus 1492 #else1493 integer, dimension(1,2*mpi_size) :: TabStatus1494 #endif1495 1468 integer :: NbRequest 1496 1469 integer :: i,rank,pos,ij,l,ierr … … 1521 1494 ! PRINT *,"Process de rang",mpi_rank,"Task : ",omp_rank,"--->",NbRequest,"en attente" 1522 1495 ! PRINT *,"No des requetes :",TabRequest(1:NbRequest) 1523 #ifdef CPP_MPI1524 1496 call MPI_WAITALL(NbRequest,TabRequest,TabStatus,ierr) 1525 #endif1526 1497 ! PRINT *,"Process de rang",mpi_rank,"Task : ",omp_rank,"--->",NbRequest,"complete" 1527 1498 ! PRINT *,"-------------------------------------------------------------------" … … 1571 1542 1572 1543 subroutine WaitSendRequest(a_Request) 1544 USE lmdz_mpi 1573 1545 USE dimensions_mod 1574 1546 implicit none 1575 1547 1576 #ifdef CPP_MPI1577 include 'mpif.h'1578 #endif1579 1548 type(request),target :: a_request 1580 1549 type(request_SR),pointer :: Req 1581 1550 type(Hallo),pointer :: PtrHallo 1582 1551 integer, dimension(mpi_size) :: TabRequest 1583 #ifdef CPP_MPI1584 1552 integer, dimension(MPI_STATUS_SIZE,mpi_size) :: TabStatus 1585 #else1586 integer, dimension(1,mpi_size) :: TabStatus1587 #endif1588 1553 integer :: NbRequest 1589 1554 integer :: i,rank,pos,ij,l,ierr … … 1606 1571 ! PRINT *,"Process de rang",mpi_rank,"Task : ",omp_rank,"--->",NbRequest,"en attente" 1607 1572 ! PRINT *,"No des requetes :",TabRequest(1:NbRequest) 1608 #ifdef CPP_MPI 1609 call MPI_WAITALL(NbRequest,TabRequest,TabStatus,ierr) 1610 #endif 1573 call MPI_WAITALL(NbRequest,TabRequest,TabStatus,ierr) 1611 1574 ! PRINT *,"Process de rang",mpi_rank,"Task : ",omp_rank,"--->",NbRequest,"complete" 1612 1575 ! PRINT *,"-------------------------------------------------------------------" … … 1628 1591 subroutine WaitRecvRequest(a_Request) 1629 1592 USE dimensions_mod 1593 USE lmdz_mpi 1630 1594 implicit none 1631 1632 #ifdef CPP_MPI1633 include 'mpif.h'1634 #endif1635 1636 1595 type(request),target :: a_request 1637 1596 type(request_SR),pointer :: Req 1638 1597 type(Hallo),pointer :: PtrHallo 1639 1598 integer, dimension(mpi_size) :: TabRequest 1640 #ifdef CPP_MPI1641 1599 integer, dimension(MPI_STATUS_SIZE,mpi_size) :: TabStatus 1642 #else1643 integer, dimension(1,mpi_size) :: TabStatus1644 #endif1645 1600 integer :: NbRequest 1646 1601 integer :: i,rank,pos,ij,l,ierr … … 1664 1619 ! PRINT *,"Process de rang",mpi_rank,"Task : ",omp_rank,"--->",NbRequest,"en attente" 1665 1620 ! PRINT *,"No des requetes :",TabRequest(1:NbRequest) 1666 #ifdef CPP_MPI 1667 call MPI_WAITALL(NbRequest,TabRequest,TabStatus,ierr) 1668 #endif 1621 call MPI_WAITALL(NbRequest,TabRequest,TabStatus,ierr) 1669 1622 ! PRINT *,"Process de rang",mpi_rank,"Task : ",omp_rank,"--->",NbRequest,"complete" 1670 1623 ! PRINT *,"-------------------------------------------------------------------"
Note: See TracChangeset
for help on using the changeset viewer.