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.
| Type | Intent | Optional | 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 |
| Type | Intent | Optional | 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 |
Single-subdomain non-periodic pentadiagonal compact solve.
| Type | Intent | Optional | 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 |
Cyclic pentadiagonal compact solve via Sherman-Morrison-Woodbury. Halos u_recv_s/e must hold the periodic extension.
| Type | Intent | Optional | 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 |