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
50 logical :: shared_on_host = .true.
54 procedure(
gs_gather), pass(this),
deferred :: gather
63 integer,
intent(in) :: nlocal
64 integer,
intent(in) :: nshared
65 integer,
intent(in) :: nlcl_blks
66 integer,
intent(in) :: nshrd_blks
81 subroutine gs_gather(this, v, m, o, dg, u, n, gd, nb, b, bo, op, shrd)
84 integer,
intent(in) :: m
85 integer,
intent(in) :: n
86 integer,
intent(in) :: nb
88 real(kind=
rp),
dimension(m),
intent(inout) :: v
89 integer,
dimension(m),
intent(inout) :: dg
90 real(kind=
rp),
dimension(n),
intent(inout) :: u
91 integer,
dimension(m),
intent(inout) :: gd
92 integer,
dimension(nb),
intent(inout) :: b
93 integer,
dimension(nb),
intent(inout) :: bo
94 integer,
intent(in) :: o
95 integer,
intent(in) :: op
96 logical,
intent(in) :: shrd
103 subroutine gs_scatter(this, v, m, dg, u, n, gd, nb, b, bo, shrd, event)
107 integer,
intent(in) :: m
108 integer,
intent(in) :: n
109 integer,
intent(in) :: nb
111 real(kind=
rp),
dimension(m),
intent(inout) :: v
112 integer,
dimension(m),
intent(inout) :: dg
113 real(kind=
rp),
dimension(n),
intent(inout) :: u
114 integer,
dimension(m),
intent(inout) :: gd
115 integer,
dimension(nb),
intent(inout) :: b
116 integer,
dimension(nb),
intent(inout) :: bo
117 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.