init_dim2_mirror Subroutine

public subroutine init_dim2_mirror(self, mesh)

The 010, 100 and 110 cases pair each dim2 spectral mode with its mirror, which cuFFTMp may place on another rank. Slab index r of P owns global dim2 modes [rm + 1, (r + 1)m] with m = ny_spec, and the mirror of that range is slab P - 1 - r shifted up by one plane, so the extra plane comes from slab P - r. Both partners are symmetric. A single rank holds every partner itself and allocates nothing. This is the only place c_mirror_dev is allocated, see the cuFFTMp check in init_cuda.

Type Bound

cuda_poisson_fft_t

Arguments

Type IntentOptional Attributes Name
class(cuda_poisson_fft_t) :: self
type(mesh_t), intent(in) :: mesh

Called by

proc~~init_dim2_mirror~~CalledByGraph proc~init_dim2_mirror m_cuda_poisson_fft::cuda_poisson_fft_t%init_dim2_mirror proc~init_case_010 m_cuda_poisson_fft::cuda_poisson_010_t%init_case_010 proc~init_case_010->proc~init_dim2_mirror proc~init_case_100 m_cuda_poisson_fft::cuda_poisson_100_t%init_case_100 proc~init_case_100->proc~init_dim2_mirror proc~init_case_110 m_cuda_poisson_fft::cuda_poisson_110_t%init_case_110 proc~init_case_110->proc~init_dim2_mirror