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).
Non-periodic Thomas solve along each line of a single subdomain.
| Type | Intent | Optional | 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 |
Periodic Thomas solve along each line of a single subdomain.
| Type | Intent | Optional | 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 |