Constructs the backend over a device-resident allocator and allocates its halo buffers, sized for the largest exchange of any direction.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mesh_t), | intent(inout), | target | :: | mesh | ||
| class(allocator_t), | intent(inout), | target | :: | allocator |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | n_halo | = | 4 |
DistD2 implementation is hardcoded for 4 halo layers for all backends |
|
| type(mesh_t), | public, | pointer | :: | mesh | |||
| class(allocator_t), | public, | pointer | :: | allocator | |||
| class(poisson_fft_t), | public, | pointer | :: | poisson_fft | |||
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | u_recv_s_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | u_recv_e_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | u_send_s_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | u_send_e_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | v_recv_s_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | v_recv_e_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | v_send_s_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | v_send_e_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | w_recv_s_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | w_recv_e_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | w_send_s_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | w_send_e_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | du_send_s_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | du_send_e_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | du_recv_s_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | du_recv_e_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | dud_send_s_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | dud_send_e_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | dud_recv_s_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | dud_recv_e_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | d2u_send_s_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | d2u_send_e_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | d2u_recv_s_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| real(kind=dp), | public, | pointer, contiguous, dimension(:, :, :) | :: | d2u_recv_e_dev | => | null() |
Device halo buffers, as in cuda_backend_t |
| private function omptgt_backend_init (mesh, allocator) | Constructs the backend over a device-resident allocator and allocates its halo buffers, sized for the largest exchange of any direction. |
| procedure, public :: field_add_const_x_face => field_add_const_x_face_base | |
| procedure, public :: field_set_x_inlet_plane => field_set_x_inlet_plane_base | |
| procedure, public :: init_poisson_fft => init_poisson_fft_base | |
| procedure, public :: base_init | |
| procedure, public :: get_field_data | |
| procedure, public :: set_field_data | |
| procedure, public :: supports_device_field_export | |
| procedure, public :: export_field_to_device | |
| procedure, public :: alloc_tdsops => alloc_omptgt_tdsops | |
| procedure, public :: transeq_x => transeq_x_omptgt | |
| procedure, public :: transeq_y => transeq_y_omptgt | |
| procedure, public :: transeq_z => transeq_z_omptgt | |
| procedure, public :: transeq_species => transeq_species_omptgt | |
| procedure, public :: tds_solve => tds_solve_omptgt | |
| procedure, public :: thom_solve => thom_solve_omptgt | |
| procedure, public :: reorder => reorder_omptgt | |
| procedure, public :: sum_yintox => sum_yintox_omptgt | |
| procedure, public :: sum_zintox => sum_zintox_omptgt | |
| procedure, public :: veccopy => veccopy_omptgt | |
| procedure, public :: vecadd => vecadd_omptgt | |
| procedure, public :: vecmult => vecmult_omptgt | |
| procedure, public :: scalar_product => scalar_product_omptgt | |
| procedure, public :: vector_norm_squared => vector_norm_squared_omptgt | |
| procedure, public :: field_labelled_sums => field_labelled_sums_omptgt | |
| procedure, public :: field_labelled_axpy => field_labelled_axpy_omptgt | |
| procedure, public :: field_max_mean => field_max_mean_omptgt | |
| procedure, public :: slice_max_sum => slice_max_sum_omptgt | |
| procedure, public :: field_scale => field_scale_omptgt | |
| procedure, public :: field_shift => field_shift_omptgt | |
| procedure, public :: field_set_face => field_set_face_omptgt | |
| procedure, public :: field_set_y_plane => field_set_y_plane_omptgt | |
| procedure, public :: field_plane_sums => field_plane_sums_omptgt | |
| procedure, public :: field_set_abl_wall_stress => field_set_abl_wall_stress_omptgt | |
| procedure, public :: field_set_face_from_field => field_set_face_from_field_omptgt | |
| procedure, public :: field_add_face_from_field => field_add_face_from_field_omptgt | |
| procedure, public :: compute_vorticity => compute_vorticity_omptgt | |
| procedure, public :: compute_qcriterion => compute_qcriterion_omptgt | |
| procedure, public :: compute_smagorinsky_nut => compute_smagorinsky_nut_omptgt | |
| procedure, public :: compute_sgs_stress => compute_sgs_stress_omptgt | |
| procedure, public :: field_volume_integral => field_volume_integral_omptgt | |
| procedure, public :: copy_data_to_f => copy_data_to_f_omptgt | |
| procedure, public :: copy_f_to_data => copy_f_to_data_omptgt | |
| procedure, public :: sync => sync_omptgt | |
| procedure, public :: get_device_bw_info => get_device_bw_info_omptgt | |
| procedure, public :: transeq_omptgt_dist | |
| procedure, public :: tds_solve_dist |
Views the device storage of u as an array of its current shape. The
pointer holds a device address: pass it to a kernel, never index it on
the host.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(out), | pointer, contiguous, dimension(:, :, :) | :: | u_dev | ||
| class(field_t), | intent(in) | :: | u |