field_shift_blend_x_band_cuda Subroutine

public subroutine field_shift_blend_x_band_cuda(self, f, lambda, i_start, i_offset, nshift, z_plane_rank)

m_base_backend

The band stays on the device: it is gathered into a buffer, shifted in z with device-to-device copies and GPU-aware MPI for the planes held by other ranks, and blended back.

Type Bound

cuda_backend_t

Arguments

Type IntentOptional Attributes Name
class(cuda_backend_t) :: self
class(field_t), intent(inout) :: f
real(kind=dp), intent(in) :: lambda(:)
integer, intent(in) :: i_start
integer, intent(in) :: i_offset
integer, intent(in) :: nshift
integer, intent(in) :: z_plane_rank(:)

Calls

proc~~field_shift_blend_x_band_cuda~~CallsGraph proc~field_shift_blend_x_band_cuda m_cuda_backend::cuda_backend_t%field_shift_blend_x_band_cuda cudadevicesynchronize cudadevicesynchronize proc~field_shift_blend_x_band_cuda->cudadevicesynchronize dim3 dim3 proc~field_shift_blend_x_band_cuda->dim3 mpi_irecv mpi_irecv proc~field_shift_blend_x_band_cuda->mpi_irecv mpi_isend mpi_isend proc~field_shift_blend_x_band_cuda->mpi_isend mpi_waitall mpi_waitall proc~field_shift_blend_x_band_cuda->mpi_waitall proc~abort_run m_logger::abort_run proc~field_shift_blend_x_band_cuda->proc~abort_run proc~check_cuda m_cuda_errors::check_cuda proc~field_shift_blend_x_band_cuda->proc~check_cuda proc~field_blend_x_band~2 m_cuda_kernels_fieldops::field_blend_x_band proc~field_shift_blend_x_band_cuda->proc~field_blend_x_band~2 proc~field_get_x_band~2 m_cuda_kernels_fieldops::field_get_x_band proc~field_shift_blend_x_band_cuda->proc~field_get_x_band~2 proc~get_dims m_mesh::mesh_t%get_dims proc~field_shift_blend_x_band_cuda->proc~get_dims proc~resolve_field_t~2 m_cuda_backend::resolve_field_t proc~field_shift_blend_x_band_cuda->proc~resolve_field_t~2 proc~shifted_z_source m_base_backend::shifted_z_source proc~field_shift_blend_x_band_cuda->proc~shifted_z_source 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~get_dims_dataloc m_mesh::get_dims_dataloc proc~get_dims->proc~get_dims_dataloc