Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(mesh_t), | intent(inout), | target | :: | mesh | ||
class(allocator_t), | intent(inout), | target | :: | allocator |
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=dp), | public | :: | nu | ||||
class(mesh_t), | public, | pointer | :: | mesh | |||
class(allocator_t), | public, | pointer | :: | allocator | |||
class(poisson_fft_t), | public, | pointer | :: | poisson_fft | |||
integer, | public | :: | MPI_FP_PREC | = | dp | ||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | u_recv_s_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | u_recv_e_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | u_send_s_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | u_send_e_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | v_recv_s_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | v_recv_e_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | v_send_s_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | v_send_e_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | w_recv_s_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | w_recv_e_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | w_send_s_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | w_send_e_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | du_send_s_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | du_send_e_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | du_recv_s_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | du_recv_e_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | dud_send_s_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | dud_send_e_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | dud_recv_s_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | dud_recv_e_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | d2u_send_s_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | d2u_send_e_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | d2u_recv_s_dev | |||
real(kind=dp), | public, | device, allocatable, dimension(:, :, :) | :: | d2u_recv_e_dev | |||
type(dim3), | public | :: | xblocks | ||||
type(dim3), | public | :: | xthreads | ||||
type(dim3), | public | :: | yblocks | ||||
type(dim3), | public | :: | ythreads | ||||
type(dim3), | public | :: | zblocks | ||||
type(dim3), | public | :: | zthreads |
public function init (mesh, allocator) |
procedure, public :: base_init | |
procedure, public :: get_field_data | |
procedure, public :: set_field_data | |
procedure, public :: alloc_tdsops => alloc_cuda_tdsops | |
procedure, public :: transeq_x => transeq_x_cuda | |
procedure, public :: transeq_y => transeq_y_cuda | |
procedure, public :: transeq_z => transeq_z_cuda | |
procedure, public :: tds_solve => tds_solve_cuda | |
procedure, public :: reorder => reorder_cuda | |
procedure, public :: sum_yintox => sum_yintox_cuda | |
procedure, public :: sum_zintox => sum_zintox_cuda | |
procedure, public :: vecadd => vecadd_cuda | |
procedure, public :: scalar_product => scalar_product_cuda | |
procedure, public :: field_scale => field_scale_cuda | |
procedure, public :: field_shift => field_shift_cuda | |
procedure, public :: copy_data_to_f => copy_data_to_f_cuda | |
procedure, public :: copy_f_to_data => copy_f_to_data_cuda | |
procedure, public :: init_poisson_fft => init_cuda_poisson_fft | |
procedure, public :: transeq_cuda_dist | |
procedure, public :: transeq_cuda_thom | |
procedure, public :: tds_solve_dist |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(mesh_t), | intent(inout), | target | :: | mesh | ||
class(allocator_t), | intent(inout), | target | :: | allocator |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(field_t), | intent(in) | :: | x | |||
class(field_t), | intent(in) | :: | y |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(tdsops_t), | intent(inout), | allocatable | :: | tdsops | ||
integer, | intent(in) | :: | dir | |||
character(len=*), | intent(in) | :: | operation | |||
character(len=*), | intent(in) | :: | scheme | |||
integer, | intent(in) | :: | bc_start | |||
integer, | intent(in) | :: | bc_end | |||
integer, | intent(in), | optional | :: | n_halo | ||
character(len=*), | intent(in), | optional | :: | from_to | ||
logical, | intent(in), | optional | :: | sym | ||
real(kind=dp), | intent(in), | optional | :: | c_nu | ||
real(kind=dp), | intent(in), | optional | :: | nu0_nu |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(field_t), | intent(inout) | :: | du | |||
class(field_t), | intent(inout) | :: | dv | |||
class(field_t), | intent(inout) | :: | dw | |||
class(field_t), | intent(in) | :: | u | |||
class(field_t), | intent(in) | :: | v | |||
class(field_t), | intent(in) | :: | w | |||
type(dirps_t), | intent(in) | :: | dirps |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(field_t), | intent(inout) | :: | du | |||
class(field_t), | intent(inout) | :: | dv | |||
class(field_t), | intent(inout) | :: | dw | |||
class(field_t), | intent(in) | :: | u | |||
class(field_t), | intent(in) | :: | v | |||
class(field_t), | intent(in) | :: | w | |||
type(dirps_t), | intent(in) | :: | dirps |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(field_t), | intent(inout) | :: | du | |||
class(field_t), | intent(inout) | :: | dv | |||
class(field_t), | intent(inout) | :: | dw | |||
class(field_t), | intent(in) | :: | u | |||
class(field_t), | intent(in) | :: | v | |||
class(field_t), | intent(in) | :: | w | |||
type(dirps_t), | intent(in) | :: | dirps |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(field_t), | intent(inout) | :: | du | |||
class(field_t), | intent(inout) | :: | dv | |||
class(field_t), | intent(inout) | :: | dw | |||
class(field_t), | intent(in) | :: | u | |||
class(field_t), | intent(in) | :: | v | |||
class(field_t), | intent(in) | :: | w | |||
type(dirps_t), | intent(in) | :: | dirps | |||
type(dim3), | intent(in) | :: | blocks | |||
type(dim3), | intent(in) | :: | threads |
Thomas algorithm implementation. So much more easier than the distributed algorithm. It is intended to work only on a single rank so there is no MPI communication.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(field_t), | intent(inout) | :: | du | |||
class(field_t), | intent(inout) | :: | dv | |||
class(field_t), | intent(inout) | :: | dw | |||
class(field_t), | intent(in) | :: | u | |||
class(field_t), | intent(in) | :: | v | |||
class(field_t), | intent(in) | :: | w | |||
type(dirps_t), | intent(in) | :: | dirps |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(field_t), | intent(inout) | :: | du | |||
class(field_t), | intent(in) | :: | u | |||
class(tdsops_t), | intent(in) | :: | tdsops |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(field_t), | intent(inout) | :: | du | |||
class(field_t), | intent(in) | :: | u | |||
class(tdsops_t), | intent(in) | :: | tdsops | |||
type(dim3), | intent(in) | :: | blocks | |||
type(dim3), | intent(in) | :: | threads |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(field_t), | intent(inout) | :: | u_o | |||
class(field_t), | intent(in) | :: | u_i | |||
integer, | intent(in) | :: | direction |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(field_t), | intent(inout) | :: | u | |||
class(field_t), | intent(in) | :: | u_y |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(field_t), | intent(inout) | :: | u | |||
class(field_t), | intent(in) | :: | u_z |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
real(kind=dp), | intent(in) | :: | a | |||
class(field_t), | intent(in) | :: | x | |||
real(kind=dp), | intent(in) | :: | b | |||
class(field_t), | intent(inout) | :: | y |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(out), | device, dimension(:, :, :) | :: | u_send_s_dev | ||
real(kind=dp), | intent(out), | device, dimension(:, :, :) | :: | u_send_e_dev | ||
real(kind=dp), | intent(in), | device, dimension(:, :, :) | :: | u_dev | ||
integer, | intent(in) | :: | n |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(field_t), | intent(in) | :: | f | |||
real(kind=dp), | intent(in) | :: | a |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(field_t), | intent(in) | :: | f | |||
real(kind=dp), | intent(in) | :: | a |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t), | intent(inout) | :: | self | |||
class(field_t), | intent(inout) | :: | f | |||
real(kind=dp), | intent(inout), | dimension(:, :, :) | :: | data |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t), | intent(inout) | :: | self | |||
real(kind=dp), | intent(out), | dimension(:, :, :) | :: | data | ||
class(field_t), | intent(in) | :: | f |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cuda_backend_t) | :: | self | ||||
class(mesh_t), | intent(in) | :: | mesh | |||
type(dirps_t), | intent(in) | :: | xdirps | |||
type(dirps_t), | intent(in) | :: | ydirps | |||
type(dirps_t), | intent(in) | :: | zdirps |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(out), | device, pointer, dimension(:, :, :) | :: | u_dev | ||
class(field_t), | intent(in) | :: | u |