exchange_mirror_100 Subroutine

public subroutine exchange_mirror_100(self, c_dev)

Fills c_mirror_dev and c_plane_recv_dev with the dim2 mirror of the local spectral slab, so that the 100 paired split can read its partner mode without going looking for it in another rank's memory.

Slab index r of P owns global dim2 modes [rm + 1, (r + 1)m], with m = ny_spec. Local mode j pairs with global mode (P - r)*m - j + 2, which is local mode m - j + 2 of slab P - 1 - r for j >= 2, and the first mode of slab P - r for j = 1. One slab sized exchange plus one plane sized exchange therefore covers the whole pairing, and both partners are symmetric so the rank that sends is the rank that receives.

Type Bound

cuda_poisson_fft_t

Arguments

Type IntentOptional Attributes Name
class(cuda_poisson_fft_t) :: self
complex(kind=dp), intent(in), device, dimension(:, :, :) :: c_dev

Calls

proc~~exchange_mirror_100~~CallsGraph proc~exchange_mirror_100 m_cuda_poisson_fft::cuda_poisson_fft_t%exchange_mirror_100 cudastreamsynchronize cudastreamsynchronize proc~exchange_mirror_100->cudastreamsynchronize dim3 dim3 proc~exchange_mirror_100->dim3 mpi_abort mpi_abort proc~exchange_mirror_100->mpi_abort mpi_sendrecv mpi_sendrecv proc~exchange_mirror_100->mpi_sendrecv proc~pack_spectral_plane m_cuda_spectral::pack_spectral_plane proc~exchange_mirror_100->proc~pack_spectral_plane

Called by

proc~~exchange_mirror_100~~CalledByGraph proc~exchange_mirror_100 m_cuda_poisson_fft::cuda_poisson_fft_t%exchange_mirror_100 proc~fft_postprocess_100_cuda m_cuda_poisson_fft::cuda_poisson_fft_t%fft_postprocess_100_cuda proc~fft_postprocess_100_cuda->proc~exchange_mirror_100