m_omptgt_exec_dist Module

Drivers of the distributed compact solves for the OpenMP target backend, following cuda/exec_dist.f90. Fields are (SZ, n, n_groups) device arrays and only the first n_groups groups are processed.


Uses

  • module~~m_omptgt_exec_dist~~UsesGraph module~m_omptgt_exec_dist m_omptgt_exec_dist module~m_common m_common module~m_omptgt_exec_dist->module~m_common module~m_logger m_logger module~m_omptgt_exec_dist->module~m_logger module~m_omptgt_common m_omptgt_common module~m_omptgt_exec_dist->module~m_omptgt_common module~m_omptgt_kernels_dist m_omptgt_kernels_dist module~m_omptgt_exec_dist->module~m_omptgt_kernels_dist module~m_omptgt_sendrecv m_omptgt_sendrecv module~m_omptgt_exec_dist->module~m_omptgt_sendrecv module~m_omptgt_tdsops m_omptgt_tdsops module~m_omptgt_exec_dist->module~m_omptgt_tdsops module~m_common->module~m_logger m_mpi m_mpi module~m_common->m_mpi iso_fortran_env iso_fortran_env module~m_logger->iso_fortran_env module~m_logger->m_mpi module~m_omptgt_common->module~m_common module~m_omptgt_common->module~m_logger iso_c_binding iso_c_binding module~m_omptgt_common->iso_c_binding omp_lib omp_lib module~m_omptgt_common->omp_lib module~m_omptgt_kernels_dist->module~m_common module~m_omptgt_kernels_dist->module~m_omptgt_common module~m_omptgt_sendrecv->module~m_common module~m_omptgt_sendrecv->module~m_omptgt_common module~m_omptgt_sendrecv->iso_c_binding module~m_omptgt_sendrecv->m_mpi module~m_omptgt_tdsops->module~m_common module~m_omptgt_tdsops->module~m_omptgt_common module~m_tdsops m_tdsops module~m_omptgt_tdsops->module~m_tdsops module~m_tdsops->module~m_common module~m_tdsops->module~m_logger

Used by

  • module~~m_omptgt_exec_dist~~UsedByGraph module~m_omptgt_exec_dist m_omptgt_exec_dist module~m_omptgt_backend m_omptgt_backend module~m_omptgt_backend->module~m_omptgt_exec_dist module~m_backend_setup m_backend_setup module~m_backend_setup->module~m_omptgt_backend program~x3d2_poisson_solver x3d2_poisson_solver program~x3d2_poisson_solver->module~m_backend_setup program~xcompact xcompact program~xcompact->module~m_backend_setup

Subroutines

public subroutine exec_dist_tds_compact(du, u, u_recv_s, u_recv_e, du_send_s, du_send_e, du_recv_s, du_recv_e, tdsops, nproc, pprev, pnext, n_groups)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: du
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: u
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: u_recv_s
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: u_recv_e
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: du_send_s
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: du_send_e
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: du_recv_s
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: du_recv_e
type(omptgt_tdsops_t), intent(in) :: tdsops
integer, intent(in) :: nproc
integer, intent(in) :: pprev
integer, intent(in) :: pnext
integer, intent(in) :: n_groups

public subroutine exec_dist_transeq_3fused(r_du, u, u_recv_s, u_recv_e, v, v_recv_s, v_recv_e, dud, d2u, du_send_s, du_send_e, du_recv_s, du_recv_e, dud_send_s, dud_send_e, dud_recv_s, dud_recv_e, d2u_send_s, d2u_send_e, d2u_recv_s, d2u_recv_e, tdsops_du, tdsops_dud, tdsops_d2u, nu, nproc, pprev, pnext, n_groups)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: r_du

The result array, it is also used as temporary storage

real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: u
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: u_recv_s
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: u_recv_e
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: v
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: v_recv_s
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: v_recv_e
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: dud
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: d2u
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: du_send_s
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: du_send_e
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: du_recv_s
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: du_recv_e
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: dud_send_s
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: dud_send_e
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: dud_recv_s
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: dud_recv_e
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: d2u_send_s
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: d2u_send_e
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: d2u_recv_s
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: d2u_recv_e
type(omptgt_tdsops_t), intent(in) :: tdsops_du
type(omptgt_tdsops_t), intent(in) :: tdsops_dud
type(omptgt_tdsops_t), intent(in) :: tdsops_d2u
real(kind=dp), intent(in) :: nu
integer, intent(in) :: nproc
integer, intent(in) :: pprev
integer, intent(in) :: pnext
integer, intent(in) :: n_groups

public subroutine exec_dist_penta_compact(du, u, u_recv_s, u_recv_e, tdsops, n_groups)

Single-subdomain non-periodic pentadiagonal compact solve.

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: du
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: u
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: u_recv_s
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: u_recv_e
type(omptgt_tdsops_t), intent(in) :: tdsops
integer, intent(in) :: n_groups

public subroutine exec_dist_penta_periodic(du, u, u_recv_s, u_recv_e, tdsops, n_groups)

Cyclic pentadiagonal compact solve via Sherman-Morrison-Woodbury. Halos u_recv_s/e must hold the periodic extension.

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: du
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: u
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: u_recv_s
real(kind=dp), intent(in), pointer, contiguous, dimension(:, :, :) :: u_recv_e
type(omptgt_tdsops_t), intent(in) :: tdsops
integer, intent(in) :: n_groups