exchange_dim2_mirror Subroutine

public subroutine exchange_dim2_mirror(self, c_dev)

Fills c_mirror_dev and c_plane_recv_dev with the dim2 mirror of the local spectral slab, so that the 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_dim2_mirror~~CallsGraph proc~exchange_dim2_mirror m_cuda_poisson_fft::cuda_poisson_fft_t%exchange_dim2_mirror cudastreamsynchronize cudastreamsynchronize proc~exchange_dim2_mirror->cudastreamsynchronize dim3 dim3 proc~exchange_dim2_mirror->dim3 mpi_sendrecv mpi_sendrecv proc~exchange_dim2_mirror->mpi_sendrecv proc~abort_run m_logger::abort_run proc~exchange_dim2_mirror->proc~abort_run proc~check_cuda m_cuda_errors::check_cuda proc~exchange_dim2_mirror->proc~check_cuda proc~check_mpi m_logger::check_mpi proc~exchange_dim2_mirror->proc~check_mpi proc~pack_spectral_plane m_cuda_spectral::pack_spectral_plane proc~exchange_dim2_mirror->proc~pack_spectral_plane interface~str m_logger::str proc~abort_run->interface~str mpi_abort mpi_abort proc~abort_run->mpi_abort mpi_barrier mpi_barrier proc~abort_run->mpi_barrier mpi_comm_rank mpi_comm_rank proc~abort_run->mpi_comm_rank mpi_comm_size mpi_comm_size proc~abort_run->mpi_comm_size mpi_finalized mpi_finalized proc~abort_run->mpi_finalized mpi_initialized mpi_initialized proc~abort_run->mpi_initialized proc~check_cuda->proc~abort_run cudageterrorstring cudageterrorstring proc~check_cuda->cudageterrorstring proc~check_cuda->interface~str proc~check_mpi->proc~abort_run proc~check_mpi->interface~str mpi_error_string mpi_error_string proc~check_mpi->mpi_error_string

Called by

proc~~exchange_dim2_mirror~~CalledByGraph proc~exchange_dim2_mirror m_cuda_poisson_fft::cuda_poisson_fft_t%exchange_dim2_mirror proc~fft_postprocess_100_cuda m_cuda_poisson_fft::cuda_poisson_fft_t%fft_postprocess_100_cuda proc~fft_postprocess_100_cuda->proc~exchange_dim2_mirror proc~fft_postprocess_110_cuda m_cuda_poisson_fft::cuda_poisson_fft_t%fft_postprocess_110_cuda proc~fft_postprocess_110_cuda->proc~exchange_dim2_mirror