m_omptgt_kernels_thom Module

Thomas algorithm kernels for the OpenMP target backend, following cuda/kernels/thomas.f90. See m_omptgt_kernels_dist for the offload pattern: one declare target line solve per (i, b).


Uses

  • module~~m_omptgt_kernels_thom~~UsesGraph module~m_omptgt_kernels_thom m_omptgt_kernels_thom module~m_common m_common module~m_omptgt_kernels_thom->module~m_common module~m_omptgt_common m_omptgt_common module~m_omptgt_kernels_thom->module~m_omptgt_common m_mpi m_mpi module~m_common->m_mpi module~m_logger m_logger module~m_common->module~m_logger module~m_omptgt_common->module~m_common iso_c_binding iso_c_binding module~m_omptgt_common->iso_c_binding module~m_omptgt_common->module~m_logger omp_lib omp_lib module~m_omptgt_common->omp_lib module~m_logger->m_mpi iso_fortran_env iso_fortran_env module~m_logger->iso_fortran_env

Used by

  • module~~m_omptgt_kernels_thom~~UsedByGraph module~m_omptgt_kernels_thom m_omptgt_kernels_thom module~m_omptgt_exec_thom m_omptgt_exec_thom module~m_omptgt_exec_thom->module~m_omptgt_kernels_thom module~m_omptgt_backend m_omptgt_backend module~m_omptgt_backend->module~m_omptgt_exec_thom 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 der_univ_thom(du, u, n_tds, n_rhs, coeffs_s, coeffs_e, coeffs, thom_f, thom_s, thom_w, strch, n, n_groups)

Non-periodic Thomas solve along each line of a single subdomain.

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: du(SZ,n,n_groups)
real(kind=dp), intent(in) :: u(SZ,n,n_groups)
integer, intent(in) :: n_tds
integer, intent(in) :: n_rhs
real(kind=dp), intent(in) :: coeffs_s(9,4)
real(kind=dp), intent(in) :: coeffs_e(9,4)
real(kind=dp), intent(in) :: coeffs(9)
real(kind=dp), intent(in) :: thom_f(n_rhs)
real(kind=dp), intent(in) :: thom_s(n_rhs)
real(kind=dp), intent(in) :: thom_w(n_rhs)
real(kind=dp), intent(in) :: strch(n_tds)
integer, intent(in) :: n
integer, intent(in) :: n_groups

public subroutine der_univ_thom_per(du, u, n_tds, coeffs, alpha, thom_f, thom_s, thom_w, thom_p, strch, n, n_groups)

Periodic Thomas solve along each line of a single subdomain.

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: du(SZ,n,n_groups)
real(kind=dp), intent(in) :: u(SZ,n,n_groups)
integer, intent(in) :: n_tds
real(kind=dp), intent(in) :: coeffs(9)
real(kind=dp), intent(in) :: alpha
real(kind=dp), intent(in) :: thom_f(n_tds)
real(kind=dp), intent(in) :: thom_s(n_tds)
real(kind=dp), intent(in) :: thom_w(n_tds)
real(kind=dp), intent(in) :: thom_p(n_tds)
real(kind=dp), intent(in) :: strch(n_tds)
integer, intent(in) :: n
integer, intent(in) :: n_groups