fft_postprocess_110_cuda Subroutine

public subroutine fft_postprocess_110_cuda(self)

Spectral post-processing for 110 case (R2C Z-transpose). Spectral array is (nz/2+1, nx, ny) = (nx_spec, ny_spec, nz_spec). Thread i->X (ny_spec), blockIdx%y k->Y (nz_spec), serial j->Z (nx_spec). On a single rank X and Y are both whole, so 7 kernel launches avoid cross-block race conditions. On multiple ranks cuFFTMp splits X across ranks, so the X pairing reaches its partner through the dim2 mirror exchange (see exchange_dim2_mirror) instead, adding two more launches.

Type Bound

cuda_poisson_fft_t

Arguments

Type IntentOptional Attributes Name
class(cuda_poisson_fft_t) :: self

Calls

proc~~fft_postprocess_110_cuda~~CallsGraph proc~fft_postprocess_110_cuda m_cuda_poisson_fft::cuda_poisson_fft_t%fft_postprocess_110_cuda dim3 dim3 proc~fft_postprocess_110_cuda->dim3 proc~exchange_dim2_mirror m_cuda_poisson_fft::cuda_poisson_fft_t%exchange_dim2_mirror proc~fft_postprocess_110_cuda->proc~exchange_dim2_mirror proc~process_spectral_110_norm_z m_cuda_spectral::process_spectral_110_norm_z proc~fft_postprocess_110_cuda->proc~process_spectral_110_norm_z proc~process_spectral_110_poisson m_cuda_spectral::process_spectral_110_poisson proc~fft_postprocess_110_cuda->proc~process_spectral_110_poisson proc~process_spectral_110_x_pair_bw m_cuda_spectral::process_spectral_110_x_pair_bw proc~fft_postprocess_110_cuda->proc~process_spectral_110_x_pair_bw proc~process_spectral_110_x_pair_bw_mirror m_cuda_spectral::process_spectral_110_x_pair_bw_mirror proc~fft_postprocess_110_cuda->proc~process_spectral_110_x_pair_bw_mirror proc~process_spectral_110_x_pair_fw m_cuda_spectral::process_spectral_110_x_pair_fw proc~fft_postprocess_110_cuda->proc~process_spectral_110_x_pair_fw proc~process_spectral_110_x_pair_fw_mirror m_cuda_spectral::process_spectral_110_x_pair_fw_mirror proc~fft_postprocess_110_cuda->proc~process_spectral_110_x_pair_fw_mirror proc~process_spectral_110_y_pair_bw m_cuda_spectral::process_spectral_110_y_pair_bw proc~fft_postprocess_110_cuda->proc~process_spectral_110_y_pair_bw proc~process_spectral_110_y_pair_fw m_cuda_spectral::process_spectral_110_y_pair_fw proc~fft_postprocess_110_cuda->proc~process_spectral_110_y_pair_fw proc~process_spectral_110_z_bw m_cuda_spectral::process_spectral_110_z_bw proc~fft_postprocess_110_cuda->proc~process_spectral_110_z_bw proc~exchange_dim2_mirror->dim3 cudastreamsynchronize cudastreamsynchronize proc~exchange_dim2_mirror->cudastreamsynchronize 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 proc~pair_bw m_cuda_spectral::pair_bw proc~process_spectral_110_x_pair_bw_mirror->proc~pair_bw proc~pair_fw m_cuda_spectral::pair_fw proc~process_spectral_110_x_pair_fw_mirror->proc~pair_fw 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