GEOS-ESM / GEOS-ESM/GEOSgcm_GridComp

subroutine RouteRunoff two orders of magnitudes slower on Skylake vs Cascade Lake

Open
#495 0 comments 0 reactions 1 assignee View on GitHub

@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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.