36 use,
intrinsic :: iso_c_binding
45 type(c_ptr) :: gather_event = c_null_ptr
46 type(c_ptr) :: scatter_event = c_null_ptr
47 type(c_ptr) :: gs_stream = c_null_ptr
53 logical :: shared_on_host = .true.
57 procedure(
gs_gather), pass(this),
deferred :: gather
66 integer,
intent(in) :: nlocal
67 integer,
intent(in) :: nshared
68 integer,
intent(in) :: nlcl_blks
69 integer,
intent(in) :: nshrd_blks
84 subroutine gs_gather(this, v, m, o, dg, u, n, gd, nb, b, bo, op, shrd)
87 integer,
intent(in) :: m
88 integer,
intent(in) :: n
89 integer,
intent(in) :: nb
91 real(kind=
rp),
dimension(m),
intent(inout) :: v
92 integer,
dimension(m),
intent(inout) :: dg
93 real(kind=
rp),
dimension(n),
intent(inout) :: u
94 integer,
dimension(m),
intent(inout) :: gd
95 integer,
dimension(nb),
intent(inout) :: b
96 integer,
dimension(nb),
intent(inout) :: bo
97 integer,
intent(in) :: o
98 integer,
intent(in) :: op
99 logical,
intent(in) :: shrd
106 subroutine gs_scatter(this, v, m, dg, u, n, gd, nb, b, bo, shrd, event)
110 integer,
intent(in) :: m
111 integer,
intent(in) :: n
112 integer,
intent(in) :: nb
114 real(kind=
rp),
dimension(m),
intent(inout) :: v
115 integer,
dimension(m),
intent(inout) :: dg
116 real(kind=
rp),
dimension(n),
intent(inout) :: u
117 integer,
dimension(m),
intent(inout) :: gd
118 integer,
dimension(nb),
intent(inout) :: b
119 integer,
dimension(nb),
intent(inout) :: bo
120 logical,
intent(in) :: shrd
Abstract interface for deallocating a Gather-Scatter backend.
Abstract interface for initialising a Gather-Scatter backend.
Abstract interface for the Gather kernel .
Abstract interface for the Scatter kernel .
Defines a gather-scatter backend.
integer, parameter, public gs_bcknd_cpu
integer, parameter, public gs_bcknd_sx
integer, parameter, public gs_bcknd_dev
integer, parameter, public rp
Global precision used in computations.