| 7 |
|
!! |
| 8 |
|
!! @author Charles F. Vardeman II |
| 9 |
|
!! @author Matthew Meineke |
| 10 |
< |
!! @version $Id: mpiSimulation_module.F90,v 1.10 2003-12-17 20:13:33 chuckv Exp $, $Date: 2003-12-17 20:13:33 $, $Name: not supported by cvs2svn $, $Revision: 1.10 $ |
| 10 |
> |
!! @version $Id: mpiSimulation_module.F90,v 1.11 2003-12-18 20:46:45 chuckv Exp $, $Date: 2003-12-18 20:46:45 $, $Name: not supported by cvs2svn $, $Revision: 1.11 $ |
| 11 |
|
|
| 12 |
|
module mpiSimulation |
| 13 |
|
use definitions |
| 60 |
|
|
| 61 |
|
#ifdef PROFILE |
| 62 |
|
public :: printCommTime |
| 63 |
< |
|
| 64 |
< |
real(kind = dp ), save :: commTime = 0.0_dp |
| 65 |
< |
real(kind = dp ) :: commTimeInitial,commTimeFinal |
| 63 |
> |
public :: getCommTime |
| 64 |
> |
real,save :: commTime = 0.0 |
| 65 |
> |
real :: commTimeInitial,commTimeFinal |
| 66 |
|
#endif |
| 67 |
|
|
| 68 |
|
!! Include mpiComponentPlan type. mpiComponentPlan is a |
| 512 |
|
if (present(status)) status = 0 |
| 513 |
|
noffset = this_plan%displs(this_plan%myPlanRank) |
| 514 |
|
#ifdef PROFILE |
| 515 |
< |
commTimeInitial = mpi_wtime() |
| 515 |
> |
call cpu_time(commTimeInitial) |
| 516 |
|
#endif |
| 517 |
|
call mpi_allgatherv(sbuffer,this_plan%gsPlanSize, mpi_double_precision, & |
| 518 |
|
rbuffer,this_plan%counts,this_plan%displs,mpi_double_precision, & |
| 519 |
|
this_plan%myPlanComm, mpi_err) |
| 520 |
|
#ifdef PROFILE |
| 521 |
< |
commTimeFinal = mpi_wtime() |
| 521 |
> |
call cpu_time(commTimeFinal) |
| 522 |
|
commTime = commTime + commTimeFinal - commTimeInitial |
| 523 |
|
#endif |
| 524 |
|
|
| 542 |
|
|
| 543 |
|
! noffset = this_plan%displs(this_plan%me) |
| 544 |
|
#ifdef PROFILE |
| 545 |
< |
commTimeInitial = mpi_wtime() |
| 545 |
> |
call cpu_time(commTimeInitial) |
| 546 |
|
#endif |
| 547 |
|
|
| 548 |
|
call mpi_allgatherv(sbuffer,this_plan%gsPlanSize, mpi_double_precision, & |
| 550 |
|
this_plan%myPlanComm, mpi_err) |
| 551 |
|
|
| 552 |
|
#ifdef PROFILE |
| 553 |
< |
commTimeFinal = mpi_wtime() |
| 553 |
> |
call cpu_time(commTimeFinal) |
| 554 |
|
commTime = commTime + commTimeFinal - commTimeInitial |
| 555 |
|
#endif |
| 556 |
|
|
| 571 |
|
if (present(status)) status = 0 |
| 572 |
|
|
| 573 |
|
#ifdef PROFILE |
| 574 |
< |
commTimeInitial = mpi_wtime() |
| 574 |
> |
call cpu_time(commTimeInitial) |
| 575 |
|
#endif |
| 576 |
|
call mpi_reduce_scatter(sbuffer,rbuffer, this_plan%counts, & |
| 577 |
|
mpi_double_precision, MPI_SUM, this_plan%myPlanComm, mpi_err) |
| 578 |
|
#ifdef PROFILE |
| 579 |
< |
commTimeFinal = mpi_wtime() |
| 579 |
> |
call cpu_time(commTimeFinal) |
| 580 |
|
commTime = commTime + commTimeFinal - commTimeInitial |
| 581 |
|
#endif |
| 582 |
|
|
| 596 |
|
|
| 597 |
|
if (present(status)) status = 0 |
| 598 |
|
#ifdef PROFILE |
| 599 |
< |
commTimeInitial = mpi_wtime() |
| 599 |
> |
call cpu_time(commTimeInitial) |
| 600 |
|
#endif |
| 601 |
|
|
| 602 |
|
call mpi_reduce_scatter(sbuffer,rbuffer, this_plan%counts, & |
| 603 |
|
mpi_double_precision, MPI_SUM, this_plan%myPlanComm, mpi_err) |
| 604 |
|
#ifdef PROFILE |
| 605 |
< |
commTimeFinal = mpi_wtime() |
| 605 |
> |
call cpu_time(commTimeFinal) |
| 606 |
|
commTime = commTime + commTimeFinal - commTimeInitial |
| 607 |
|
#endif |
| 608 |
|
|
| 749 |
|
|
| 750 |
|
#ifdef PROFILE |
| 751 |
|
subroutine printCommTime() |
| 752 |
– |
|
| 752 |
|
write(*,*) "MPI communication time is: ", commTime |
| 754 |
– |
|
| 753 |
|
end subroutine printCommTime |
| 754 |
+ |
|
| 755 |
+ |
function getCommTime() result(comm_time) |
| 756 |
+ |
real :: comm_time |
| 757 |
+ |
comm_time = commTime |
| 758 |
+ |
end function getCommTime |
| 759 |
+ |
|
| 760 |
|
#endif |
| 761 |
|
|
| 762 |
|
#endif // is_mpi |