1*27d4e10aSPierre Jolivet #include <petscsys.h>
2*27d4e10aSPierre Jolivet #include <petscviewer.h>
3*27d4e10aSPierre Jolivet #include <petsc/private/deviceimpl.h>
4*27d4e10aSPierre Jolivet
5*27d4e10aSPierre Jolivet /* implementations for <include/petscdevice.h> */
PetscDeviceCreate(PETSC_UNUSED PetscDeviceType type,PETSC_UNUSED PetscInt devid,PetscDevice * device)6*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceCreate(PETSC_UNUSED PetscDeviceType type, PETSC_UNUSED PetscInt devid, PetscDevice *device)
7*27d4e10aSPierre Jolivet {
8*27d4e10aSPierre Jolivet PetscFunctionBegin;
9*27d4e10aSPierre Jolivet PetscAssertPointer(device, 3);
10*27d4e10aSPierre Jolivet *device = NULL;
11*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
12*27d4e10aSPierre Jolivet }
13*27d4e10aSPierre Jolivet
PetscDeviceDestroy(PetscDevice * device)14*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceDestroy(PetscDevice *device)
15*27d4e10aSPierre Jolivet {
16*27d4e10aSPierre Jolivet PetscFunctionBegin;
17*27d4e10aSPierre Jolivet PetscAssertPointer(device, 1);
18*27d4e10aSPierre Jolivet if (*device) *device = NULL;
19*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
20*27d4e10aSPierre Jolivet }
21*27d4e10aSPierre Jolivet
PetscDeviceConfigure(PETSC_UNUSED PetscDevice device)22*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceConfigure(PETSC_UNUSED PetscDevice device)
23*27d4e10aSPierre Jolivet {
24*27d4e10aSPierre Jolivet PetscFunctionBegin;
25*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
26*27d4e10aSPierre Jolivet }
27*27d4e10aSPierre Jolivet
PetscDeviceView(PETSC_UNUSED PetscDevice device,PetscViewer viewer)28*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceView(PETSC_UNUSED PetscDevice device, PetscViewer viewer)
29*27d4e10aSPierre Jolivet {
30*27d4e10aSPierre Jolivet PetscFunctionBegin;
31*27d4e10aSPierre Jolivet if (viewer) PetscValidHeaderSpecific(viewer, PETSC_VIEWER_CLASSID, 2);
32*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
33*27d4e10aSPierre Jolivet }
34*27d4e10aSPierre Jolivet
PetscDeviceGetType(PETSC_UNUSED PetscDevice device,PetscDeviceType * type)35*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceGetType(PETSC_UNUSED PetscDevice device, PetscDeviceType *type)
36*27d4e10aSPierre Jolivet {
37*27d4e10aSPierre Jolivet PetscFunctionBegin;
38*27d4e10aSPierre Jolivet PetscAssertPointer(type, 2);
39*27d4e10aSPierre Jolivet *type = PETSC_DEVICE_DEFAULT();
40*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
41*27d4e10aSPierre Jolivet }
42*27d4e10aSPierre Jolivet
PetscDeviceGetDeviceId(PETSC_UNUSED PetscDevice device,PetscInt * id)43*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceGetDeviceId(PETSC_UNUSED PetscDevice device, PetscInt *id)
44*27d4e10aSPierre Jolivet {
45*27d4e10aSPierre Jolivet PetscFunctionBegin;
46*27d4e10aSPierre Jolivet PetscAssertPointer(id, 2);
47*27d4e10aSPierre Jolivet *id = 0;
48*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
49*27d4e10aSPierre Jolivet }
50*27d4e10aSPierre Jolivet
PETSC_DEVICE_DEFAULT(void)51*27d4e10aSPierre Jolivet PetscDeviceType PETSC_DEVICE_DEFAULT(void)
52*27d4e10aSPierre Jolivet {
53*27d4e10aSPierre Jolivet return PETSC_DEVICE_HOST;
54*27d4e10aSPierre Jolivet }
55*27d4e10aSPierre Jolivet
PetscDeviceSetDefaultDeviceType(PetscDeviceType type)56*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceSetDefaultDeviceType(PetscDeviceType type)
57*27d4e10aSPierre Jolivet {
58*27d4e10aSPierre Jolivet PetscFunctionBegin;
59*27d4e10aSPierre Jolivet PetscCheck(type == PETSC_DEVICE_HOST, PETSC_COMM_SELF, PETSC_ERR_USER_INPUT, "PetscDevice is disabled but specified PetscDeviceType %s is different than %s", PetscDeviceTypes[type], PetscDeviceTypes[PETSC_DEVICE_HOST]);
60*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
61*27d4e10aSPierre Jolivet }
62*27d4e10aSPierre Jolivet
PetscDeviceInitialize(PETSC_UNUSED PetscDeviceType type)63*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceInitialize(PETSC_UNUSED PetscDeviceType type)
64*27d4e10aSPierre Jolivet {
65*27d4e10aSPierre Jolivet PetscFunctionBegin;
66*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
67*27d4e10aSPierre Jolivet }
68*27d4e10aSPierre Jolivet
PetscDeviceInitialized(PetscDeviceType type)69*27d4e10aSPierre Jolivet PetscBool PetscDeviceInitialized(PetscDeviceType type)
70*27d4e10aSPierre Jolivet {
71*27d4e10aSPierre Jolivet return (type == PETSC_DEVICE_HOST) ? PETSC_TRUE : PETSC_FALSE;
72*27d4e10aSPierre Jolivet }
73*27d4e10aSPierre Jolivet
PetscDeviceContextCreate(PetscDeviceContext * dctx)74*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextCreate(PetscDeviceContext *dctx)
75*27d4e10aSPierre Jolivet {
76*27d4e10aSPierre Jolivet PetscFunctionBegin;
77*27d4e10aSPierre Jolivet PetscAssertPointer(dctx, 1);
78*27d4e10aSPierre Jolivet *dctx = NULL;
79*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
80*27d4e10aSPierre Jolivet }
81*27d4e10aSPierre Jolivet
PetscDeviceContextDestroy(PetscDeviceContext * dctx)82*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextDestroy(PetscDeviceContext *dctx)
83*27d4e10aSPierre Jolivet {
84*27d4e10aSPierre Jolivet PetscFunctionBegin;
85*27d4e10aSPierre Jolivet PetscAssertPointer(dctx, 1);
86*27d4e10aSPierre Jolivet if (*dctx) *dctx = NULL;
87*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
88*27d4e10aSPierre Jolivet }
89*27d4e10aSPierre Jolivet
PetscDeviceContextSetStreamType(PETSC_UNUSED PetscDeviceContext dctx,PETSC_UNUSED PetscStreamType type)90*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextSetStreamType(PETSC_UNUSED PetscDeviceContext dctx, PETSC_UNUSED PetscStreamType type)
91*27d4e10aSPierre Jolivet {
92*27d4e10aSPierre Jolivet PetscFunctionBegin;
93*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
94*27d4e10aSPierre Jolivet }
95*27d4e10aSPierre Jolivet
PetscDeviceContextGetStreamType(PETSC_UNUSED PetscDeviceContext dctx,PetscStreamType * type)96*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextGetStreamType(PETSC_UNUSED PetscDeviceContext dctx, PetscStreamType *type)
97*27d4e10aSPierre Jolivet {
98*27d4e10aSPierre Jolivet PetscFunctionBegin;
99*27d4e10aSPierre Jolivet PetscAssertPointer(type, 2);
100*27d4e10aSPierre Jolivet *type = PETSC_STREAM_DEFAULT;
101*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
102*27d4e10aSPierre Jolivet }
103*27d4e10aSPierre Jolivet
PetscDeviceContextSetDevice(PETSC_UNUSED PetscDeviceContext dctx,PETSC_UNUSED PetscDevice device)104*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextSetDevice(PETSC_UNUSED PetscDeviceContext dctx, PETSC_UNUSED PetscDevice device)
105*27d4e10aSPierre Jolivet {
106*27d4e10aSPierre Jolivet PetscFunctionBegin;
107*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
108*27d4e10aSPierre Jolivet }
109*27d4e10aSPierre Jolivet
PetscDeviceContextGetDevice(PETSC_UNUSED PetscDeviceContext dctx,PetscDevice * device)110*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextGetDevice(PETSC_UNUSED PetscDeviceContext dctx, PetscDevice *device)
111*27d4e10aSPierre Jolivet {
112*27d4e10aSPierre Jolivet PetscFunctionBegin;
113*27d4e10aSPierre Jolivet PetscAssertPointer(device, 2);
114*27d4e10aSPierre Jolivet *device = NULL;
115*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
116*27d4e10aSPierre Jolivet }
117*27d4e10aSPierre Jolivet
PetscDeviceContextGetDeviceType(PETSC_UNUSED PetscDeviceContext dctx,PetscDeviceType * type)118*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextGetDeviceType(PETSC_UNUSED PetscDeviceContext dctx, PetscDeviceType *type)
119*27d4e10aSPierre Jolivet {
120*27d4e10aSPierre Jolivet PetscFunctionBegin;
121*27d4e10aSPierre Jolivet PetscAssertPointer(type, 2);
122*27d4e10aSPierre Jolivet *type = PETSC_DEVICE_DEFAULT();
123*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
124*27d4e10aSPierre Jolivet }
125*27d4e10aSPierre Jolivet
PetscDeviceContextSetUp(PETSC_UNUSED PetscDeviceContext dctx)126*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextSetUp(PETSC_UNUSED PetscDeviceContext dctx)
127*27d4e10aSPierre Jolivet {
128*27d4e10aSPierre Jolivet PetscFunctionBegin;
129*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
130*27d4e10aSPierre Jolivet }
131*27d4e10aSPierre Jolivet
PetscDeviceContextDuplicate(PETSC_UNUSED PetscDeviceContext dctx,PetscDeviceContext * dctxdup)132*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextDuplicate(PETSC_UNUSED PetscDeviceContext dctx, PetscDeviceContext *dctxdup)
133*27d4e10aSPierre Jolivet {
134*27d4e10aSPierre Jolivet PetscFunctionBegin;
135*27d4e10aSPierre Jolivet PetscAssertPointer(dctxdup, 2);
136*27d4e10aSPierre Jolivet *dctxdup = NULL;
137*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
138*27d4e10aSPierre Jolivet }
139*27d4e10aSPierre Jolivet
PetscDeviceContextQueryIdle(PETSC_UNUSED PetscDeviceContext dctx,PetscBool * idle)140*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextQueryIdle(PETSC_UNUSED PetscDeviceContext dctx, PetscBool *idle)
141*27d4e10aSPierre Jolivet {
142*27d4e10aSPierre Jolivet PetscFunctionBegin;
143*27d4e10aSPierre Jolivet PetscAssertPointer(idle, 2);
144*27d4e10aSPierre Jolivet *idle = PETSC_TRUE;
145*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
146*27d4e10aSPierre Jolivet }
147*27d4e10aSPierre Jolivet
PetscDeviceContextWaitForContext(PETSC_UNUSED PetscDeviceContext dctxa,PETSC_UNUSED PetscDeviceContext dctxb)148*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextWaitForContext(PETSC_UNUSED PetscDeviceContext dctxa, PETSC_UNUSED PetscDeviceContext dctxb)
149*27d4e10aSPierre Jolivet {
150*27d4e10aSPierre Jolivet PetscFunctionBegin;
151*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
152*27d4e10aSPierre Jolivet }
153*27d4e10aSPierre Jolivet
PetscDeviceContextForkWithStreamType(PETSC_UNUSED PetscDeviceContext dctx,PETSC_UNUSED PetscStreamType stype,PetscInt n,PetscDeviceContext ** dsub)154*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextForkWithStreamType(PETSC_UNUSED PetscDeviceContext dctx, PETSC_UNUSED PetscStreamType stype, PetscInt n, PetscDeviceContext **dsub)
155*27d4e10aSPierre Jolivet {
156*27d4e10aSPierre Jolivet PetscFunctionBegin;
157*27d4e10aSPierre Jolivet PetscAssertPointer(dsub, 4);
158*27d4e10aSPierre Jolivet PetscAssert(n >= 0, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Number of contexts merged %" PetscInt_FMT " < 0", n);
159*27d4e10aSPierre Jolivet PetscCall(PetscMalloc1(n, dsub));
160*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
161*27d4e10aSPierre Jolivet }
162*27d4e10aSPierre Jolivet
PetscDeviceContextFork(PetscDeviceContext dctx,PetscInt n,PetscDeviceContext ** dsub)163*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextFork(PetscDeviceContext dctx, PetscInt n, PetscDeviceContext **dsub)
164*27d4e10aSPierre Jolivet {
165*27d4e10aSPierre Jolivet PetscFunctionBegin;
166*27d4e10aSPierre Jolivet PetscCall(PetscDeviceContextForkWithStreamType(dctx, PETSC_STREAM_DEFAULT, n, dsub));
167*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
168*27d4e10aSPierre Jolivet }
169*27d4e10aSPierre Jolivet
PetscDeviceContextJoin(PETSC_UNUSED PetscDeviceContext dctx,PetscInt n,PetscDeviceContextJoinMode joinMode,PetscDeviceContext ** dsub)170*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextJoin(PETSC_UNUSED PetscDeviceContext dctx, PetscInt n, PetscDeviceContextJoinMode joinMode, PetscDeviceContext **dsub)
171*27d4e10aSPierre Jolivet {
172*27d4e10aSPierre Jolivet PetscFunctionBegin;
173*27d4e10aSPierre Jolivet PetscAssertPointer(dsub, 4);
174*27d4e10aSPierre Jolivet PetscAssert(n >= 0, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Number of contexts merged %" PetscInt_FMT " < 0", n);
175*27d4e10aSPierre Jolivet if (joinMode == PETSC_DEVICE_CONTEXT_JOIN_DESTROY) PetscCall(PetscFree(*dsub));
176*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
177*27d4e10aSPierre Jolivet }
178*27d4e10aSPierre Jolivet
PetscDeviceContextSynchronize(PETSC_UNUSED PetscDeviceContext dctx)179*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextSynchronize(PETSC_UNUSED PetscDeviceContext dctx)
180*27d4e10aSPierre Jolivet {
181*27d4e10aSPierre Jolivet PetscFunctionBegin;
182*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
183*27d4e10aSPierre Jolivet }
184*27d4e10aSPierre Jolivet
PetscDeviceContextSetFromOptions(PETSC_UNUSED MPI_Comm comm,PETSC_UNUSED PetscDeviceContext dctx)185*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextSetFromOptions(PETSC_UNUSED MPI_Comm comm, PETSC_UNUSED PetscDeviceContext dctx)
186*27d4e10aSPierre Jolivet {
187*27d4e10aSPierre Jolivet PetscFunctionBegin;
188*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
189*27d4e10aSPierre Jolivet }
190*27d4e10aSPierre Jolivet
PetscDeviceContextView(PETSC_UNUSED PetscDeviceContext dctx,PETSC_UNUSED PetscViewer viewer)191*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextView(PETSC_UNUSED PetscDeviceContext dctx, PETSC_UNUSED PetscViewer viewer)
192*27d4e10aSPierre Jolivet {
193*27d4e10aSPierre Jolivet PetscFunctionBegin;
194*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
195*27d4e10aSPierre Jolivet }
196*27d4e10aSPierre Jolivet
PetscDeviceContextViewFromOptions(PETSC_UNUSED PetscDeviceContext dctx,PetscObject obj,const char name[])197*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextViewFromOptions(PETSC_UNUSED PetscDeviceContext dctx, PetscObject obj, const char name[])
198*27d4e10aSPierre Jolivet {
199*27d4e10aSPierre Jolivet PetscFunctionBegin;
200*27d4e10aSPierre Jolivet if (obj) PetscValidHeader(obj, 2);
201*27d4e10aSPierre Jolivet PetscAssertPointer(name, 3);
202*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
203*27d4e10aSPierre Jolivet }
204*27d4e10aSPierre Jolivet
PetscDeviceContextGetCurrentContext(PetscDeviceContext * dctx)205*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextGetCurrentContext(PetscDeviceContext *dctx)
206*27d4e10aSPierre Jolivet {
207*27d4e10aSPierre Jolivet PetscFunctionBegin;
208*27d4e10aSPierre Jolivet PetscAssertPointer(dctx, 1);
209*27d4e10aSPierre Jolivet *dctx = NULL;
210*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
211*27d4e10aSPierre Jolivet }
212*27d4e10aSPierre Jolivet
PetscDeviceContextSetCurrentContext(PETSC_UNUSED PetscDeviceContext dctx)213*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextSetCurrentContext(PETSC_UNUSED PetscDeviceContext dctx)
214*27d4e10aSPierre Jolivet {
215*27d4e10aSPierre Jolivet PetscFunctionBegin;
216*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
217*27d4e10aSPierre Jolivet }
218*27d4e10aSPierre Jolivet
PetscDeviceContextGetStreamHandle(PETSC_UNUSED PetscDeviceContext dctx,void ** handle)219*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextGetStreamHandle(PETSC_UNUSED PetscDeviceContext dctx, void **handle)
220*27d4e10aSPierre Jolivet {
221*27d4e10aSPierre Jolivet PetscFunctionBegin;
222*27d4e10aSPierre Jolivet PetscAssertPointer(handle, 2);
223*27d4e10aSPierre Jolivet *handle = NULL;
224*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
225*27d4e10aSPierre Jolivet }
226*27d4e10aSPierre Jolivet
PetscDeviceAllocate_Private(PETSC_UNUSED PetscDeviceContext dctx,PetscBool clear,PETSC_UNUSED PetscMemType mtype,size_t n,PETSC_UNUSED size_t alignment,void ** PETSC_RESTRICT ptr)227*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceAllocate_Private(PETSC_UNUSED PetscDeviceContext dctx, PetscBool clear, PETSC_UNUSED PetscMemType mtype, size_t n, PETSC_UNUSED size_t alignment, void **PETSC_RESTRICT ptr)
228*27d4e10aSPierre Jolivet {
229*27d4e10aSPierre Jolivet PetscFunctionBegin;
230*27d4e10aSPierre Jolivet PetscAssertPointer(ptr, 6);
231*27d4e10aSPierre Jolivet PetscCall(PetscMallocA(1, clear, __LINE__, PETSC_FUNCTION_NAME, __FILE__, n, ptr));
232*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
233*27d4e10aSPierre Jolivet }
234*27d4e10aSPierre Jolivet
PetscDeviceDeallocate_Private(PETSC_UNUSED PetscDeviceContext dctx,void * PETSC_RESTRICT ptr)235*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceDeallocate_Private(PETSC_UNUSED PetscDeviceContext dctx, void *PETSC_RESTRICT ptr)
236*27d4e10aSPierre Jolivet {
237*27d4e10aSPierre Jolivet PetscFunctionBegin;
238*27d4e10aSPierre Jolivet PetscCall(PetscFree(ptr));
239*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
240*27d4e10aSPierre Jolivet }
241*27d4e10aSPierre Jolivet
PetscDeviceMemcpy(PETSC_UNUSED PetscDeviceContext dctx,void * PETSC_RESTRICT dest,const void * PETSC_RESTRICT src,size_t n)242*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceMemcpy(PETSC_UNUSED PetscDeviceContext dctx, void *PETSC_RESTRICT dest, const void *PETSC_RESTRICT src, size_t n)
243*27d4e10aSPierre Jolivet {
244*27d4e10aSPierre Jolivet PetscFunctionBegin;
245*27d4e10aSPierre Jolivet PetscCall(PetscMemcpy(dest, src, n));
246*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
247*27d4e10aSPierre Jolivet }
248*27d4e10aSPierre Jolivet
PetscDeviceMemset(PETSC_UNUSED PetscDeviceContext dctx,PETSC_UNUSED void * ptr,PetscInt v,size_t n)249*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceMemset(PETSC_UNUSED PetscDeviceContext dctx, PETSC_UNUSED void *ptr, PetscInt v, size_t n)
250*27d4e10aSPierre Jolivet {
251*27d4e10aSPierre Jolivet PetscFunctionBegin;
252*27d4e10aSPierre Jolivet memset(ptr, (unsigned char)v, n);
253*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
254*27d4e10aSPierre Jolivet }
255*27d4e10aSPierre Jolivet
256*27d4e10aSPierre Jolivet /* implementations for <include/petsc/private/deviceimpl.h> */
PetscDeviceInitializeFromOptions_Internal(PETSC_UNUSED MPI_Comm comm)257*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceInitializeFromOptions_Internal(PETSC_UNUSED MPI_Comm comm)
258*27d4e10aSPierre Jolivet {
259*27d4e10aSPierre Jolivet PetscFunctionBegin;
260*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
261*27d4e10aSPierre Jolivet }
262*27d4e10aSPierre Jolivet
PetscDeviceGetDefaultForType_Internal(PETSC_UNUSED PetscDeviceType type,PetscDevice * device)263*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceGetDefaultForType_Internal(PETSC_UNUSED PetscDeviceType type, PetscDevice *device)
264*27d4e10aSPierre Jolivet {
265*27d4e10aSPierre Jolivet PetscFunctionBegin;
266*27d4e10aSPierre Jolivet PetscAssertPointer(device, 2);
267*27d4e10aSPierre Jolivet *device = NULL;
268*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
269*27d4e10aSPierre Jolivet }
270*27d4e10aSPierre Jolivet
PetscDeviceContextGetNullContext_Internal(PetscDeviceContext * dctx)271*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceContextGetNullContext_Internal(PetscDeviceContext *dctx)
272*27d4e10aSPierre Jolivet {
273*27d4e10aSPierre Jolivet PetscFunctionBegin;
274*27d4e10aSPierre Jolivet PetscAssertPointer(dctx, 1);
275*27d4e10aSPierre Jolivet *dctx = NULL;
276*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
277*27d4e10aSPierre Jolivet }
278*27d4e10aSPierre Jolivet
PetscDeviceRegisterMemory(const void * PETSC_RESTRICT ptr,PetscMemType mtype,PETSC_UNUSED size_t size)279*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceRegisterMemory(const void *PETSC_RESTRICT ptr, PetscMemType mtype, PETSC_UNUSED size_t size)
280*27d4e10aSPierre Jolivet {
281*27d4e10aSPierre Jolivet PetscFunctionBegin;
282*27d4e10aSPierre Jolivet if (PetscMemTypeHost(mtype)) PetscAssertPointer(ptr, 1);
283*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
284*27d4e10aSPierre Jolivet }
285*27d4e10aSPierre Jolivet
PetscDeviceGetAttribute(PETSC_UNUSED PetscDevice device,PETSC_UNUSED PetscDeviceAttribute attr,void * value)286*27d4e10aSPierre Jolivet PetscErrorCode PetscDeviceGetAttribute(PETSC_UNUSED PetscDevice device, PETSC_UNUSED PetscDeviceAttribute attr, void *value)
287*27d4e10aSPierre Jolivet {
288*27d4e10aSPierre Jolivet PetscFunctionBegin;
289*27d4e10aSPierre Jolivet PetscAssertPointer(value, 3);
290*27d4e10aSPierre Jolivet *(int *)value = 0;
291*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
292*27d4e10aSPierre Jolivet }
293*27d4e10aSPierre Jolivet
PetscGetMarkedObjectMap_Internal(size_t * nkeys,PetscObjectId ** keys,PetscMemoryAccessMode ** modes,size_t ** ndeps,PetscEvent *** dependencies)294*27d4e10aSPierre Jolivet PetscErrorCode PetscGetMarkedObjectMap_Internal(size_t *nkeys, PetscObjectId **keys, PetscMemoryAccessMode **modes, size_t **ndeps, PetscEvent ***dependencies)
295*27d4e10aSPierre Jolivet {
296*27d4e10aSPierre Jolivet PetscFunctionBegin;
297*27d4e10aSPierre Jolivet PetscAssertPointer(nkeys, 1);
298*27d4e10aSPierre Jolivet PetscAssertPointer(keys, 2);
299*27d4e10aSPierre Jolivet PetscAssertPointer(modes, 3);
300*27d4e10aSPierre Jolivet PetscAssertPointer(ndeps, 4);
301*27d4e10aSPierre Jolivet PetscAssertPointer(dependencies, 5);
302*27d4e10aSPierre Jolivet *nkeys = 0;
303*27d4e10aSPierre Jolivet *keys = NULL;
304*27d4e10aSPierre Jolivet *modes = NULL;
305*27d4e10aSPierre Jolivet *ndeps = NULL;
306*27d4e10aSPierre Jolivet *dependencies = NULL;
307*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
308*27d4e10aSPierre Jolivet }
309*27d4e10aSPierre Jolivet
PetscRestoreMarkedObjectMap_Internal(size_t nkeys,PETSC_UNUSED PetscObjectId ** keys,PETSC_UNUSED PetscMemoryAccessMode ** modes,PETSC_UNUSED size_t ** ndeps,PETSC_UNUSED PetscEvent *** dependencies)310*27d4e10aSPierre Jolivet PetscErrorCode PetscRestoreMarkedObjectMap_Internal(size_t nkeys, PETSC_UNUSED PetscObjectId **keys, PETSC_UNUSED PetscMemoryAccessMode **modes, PETSC_UNUSED size_t **ndeps, PETSC_UNUSED PetscEvent ***dependencies)
311*27d4e10aSPierre Jolivet {
312*27d4e10aSPierre Jolivet PetscFunctionBegin;
313*27d4e10aSPierre Jolivet PetscAssertPointer(keys, 2);
314*27d4e10aSPierre Jolivet PetscAssertPointer(modes, 3);
315*27d4e10aSPierre Jolivet PetscAssertPointer(ndeps, 4);
316*27d4e10aSPierre Jolivet PetscAssertPointer(dependencies, 5);
317*27d4e10aSPierre Jolivet if (*keys) *keys = NULL;
318*27d4e10aSPierre Jolivet if (*modes) *modes = NULL;
319*27d4e10aSPierre Jolivet if (*ndeps) *ndeps = NULL;
320*27d4e10aSPierre Jolivet if (*dependencies) *dependencies = NULL;
321*27d4e10aSPierre Jolivet PetscFunctionReturn(PETSC_SUCCESS);
322*27d4e10aSPierre Jolivet }
323