GEOS-ESM / GEOS-ESM/GEOSgcm_GridComp
subroutine RouteRunoff two orders of magnitudes slower on Skylake vs Cascade Lake
@aoloso is already working on this.
Since Dec 6, 2021.
- Dominant language
- Fortran
- Stars
- 10
- Forks
- 13
- Avg merge
- 17h 35m
- Merged PRs (30d)
- 14
Description
subroutine RouteRunoff (inside GEOS_SurfaceGridComp.F90) runs 100x slower on discover's Skylake nodes compared to the Cascade Lake or Haswell nodes on the same system. A reproducer has been given to NCCS. The reproducer is included below:
`program send_recv
use mpi
implicit none
real :: increment
real :: accumulate
integer :: iter_count, iter
integer :: err, rank, ranks, status(MPI_STATUS_SIZE)
character(len=128) :: hostname
integer :: length
call MPI_Init(err)
accumulate = 0.
iter_count = 1000
call MPI_Comm_size(MPI_COMM_WORLD, ranks, err)
call MPI_Comm_rank(MPI_COMM_WORLD, rank, err)
if (ranks /= 2) then
if(rank == 0) print *, "test uses exactly two MPI processes, exiting ..."
call MPI_Finalize(err)
stop
endif
do iter = 1, iter_count
if (rank == 0) then
increment = real(iter)
call MPI_Send(increment, 1, MPI_REAL, 1, 123, MPI_COMM_WORLD, err)
else
call MPI_Recv(increment, 1, MPI_REAL, 0, 123, MPI_COMM_WORLD, status, err)
accumulate = accumulate + increment
endif
enddo
call MPI_Get_processor_name(hostname, length, err)
print *, trim(hostname)//" ", rank, accumulate
end program send_recv
`
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.