xref: /petsc/src/sys/objects/device/tests/ex6.c (revision 0e6b6b5985dd9b1172860d21fb88bd3966bf7c54)
1*0e6b6b59SJacob Faibussowitsch static const char help[] = "Tests PetscDeviceContextView().\n\n";
2*0e6b6b59SJacob Faibussowitsch 
3*0e6b6b59SJacob Faibussowitsch #include "petscdevicetestcommon.h"
4*0e6b6b59SJacob Faibussowitsch #include <petscviewer.h>
5*0e6b6b59SJacob Faibussowitsch 
6*0e6b6b59SJacob Faibussowitsch static PetscErrorCode TestView(PetscDeviceContext dctx) {
7*0e6b6b59SJacob Faibussowitsch   PetscViewer viewer;
8*0e6b6b59SJacob Faibussowitsch 
9*0e6b6b59SJacob Faibussowitsch   PetscFunctionBegin;
10*0e6b6b59SJacob Faibussowitsch   /* test stdout world */
11*0e6b6b59SJacob Faibussowitsch   PetscCall(PetscDeviceContextView(dctx, NULL));
12*0e6b6b59SJacob Faibussowitsch 
13*0e6b6b59SJacob Faibussowitsch   /* test creating our own viewer */
14*0e6b6b59SJacob Faibussowitsch   PetscCall(PetscViewerCreate(PETSC_COMM_WORLD, &viewer));
15*0e6b6b59SJacob Faibussowitsch   PetscCall(PetscViewerSetType(viewer, PETSCVIEWERASCII));
16*0e6b6b59SJacob Faibussowitsch   PetscCall(PetscDeviceContextView(dctx, viewer));
17*0e6b6b59SJacob Faibussowitsch   PetscCall(PetscViewerDestroy(&viewer));
18*0e6b6b59SJacob Faibussowitsch   PetscFunctionReturn(0);
19*0e6b6b59SJacob Faibussowitsch }
20*0e6b6b59SJacob Faibussowitsch 
21*0e6b6b59SJacob Faibussowitsch int main(int argc, char *argv[]) {
22*0e6b6b59SJacob Faibussowitsch   MPI_Comm           comm;
23*0e6b6b59SJacob Faibussowitsch   PetscDeviceContext dctx, dup;
24*0e6b6b59SJacob Faibussowitsch 
25*0e6b6b59SJacob Faibussowitsch   PetscFunctionBeginUser;
26*0e6b6b59SJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
27*0e6b6b59SJacob Faibussowitsch   comm = PETSC_COMM_WORLD;
28*0e6b6b59SJacob Faibussowitsch 
29*0e6b6b59SJacob Faibussowitsch   PetscCall(PetscDeviceContextGetCurrentContext(&dctx));
30*0e6b6b59SJacob Faibussowitsch   PetscCall(TestView(dctx));
31*0e6b6b59SJacob Faibussowitsch 
32*0e6b6b59SJacob Faibussowitsch   PetscCall(PetscDeviceContextDuplicate(dctx, &dup));
33*0e6b6b59SJacob Faibussowitsch   PetscCall(TestView(dup));
34*0e6b6b59SJacob Faibussowitsch   PetscCall(PetscDeviceContextDestroy(&dup));
35*0e6b6b59SJacob Faibussowitsch 
36*0e6b6b59SJacob Faibussowitsch   PetscCall(PetscPrintf(comm, "EXIT_SUCCESS\n"));
37*0e6b6b59SJacob Faibussowitsch   PetscCall(PetscFinalize());
38*0e6b6b59SJacob Faibussowitsch   return 0;
39*0e6b6b59SJacob Faibussowitsch }
40*0e6b6b59SJacob Faibussowitsch 
41*0e6b6b59SJacob Faibussowitsch /*TEST
42*0e6b6b59SJacob Faibussowitsch 
43*0e6b6b59SJacob Faibussowitsch  build:
44*0e6b6b59SJacob Faibussowitsch    requires: defined(PETSC_HAVE_CXX)
45*0e6b6b59SJacob Faibussowitsch 
46*0e6b6b59SJacob Faibussowitsch  testset:
47*0e6b6b59SJacob Faibussowitsch    args: -root_device_context_stream_type \
48*0e6b6b59SJacob Faibussowitsch      {{global_blocking default_blocking global_nonblocking}separate output}
49*0e6b6b59SJacob Faibussowitsch    filter: grep -ve "ex6 on a" -ve "\[0\] "
50*0e6b6b59SJacob Faibussowitsch    test:
51*0e6b6b59SJacob Faibussowitsch      requires: !device
52*0e6b6b59SJacob Faibussowitsch      suffix: host_no_device
53*0e6b6b59SJacob Faibussowitsch    test:
54*0e6b6b59SJacob Faibussowitsch      requires: device
55*0e6b6b59SJacob Faibussowitsch      args: -root_device_context_device_type host
56*0e6b6b59SJacob Faibussowitsch      suffix: host_with_device
57*0e6b6b59SJacob Faibussowitsch    test:
58*0e6b6b59SJacob Faibussowitsch      requires: cuda
59*0e6b6b59SJacob Faibussowitsch      args: -root_device_context_device_type cuda
60*0e6b6b59SJacob Faibussowitsch      suffix: cuda
61*0e6b6b59SJacob Faibussowitsch    test:
62*0e6b6b59SJacob Faibussowitsch      requires: hip
63*0e6b6b59SJacob Faibussowitsch      args: -root_device_context_device_type hip
64*0e6b6b59SJacob Faibussowitsch      suffix: hip
65*0e6b6b59SJacob Faibussowitsch    test:
66*0e6b6b59SJacob Faibussowitsch      requires: sycl
67*0e6b6b59SJacob Faibussowitsch      args: -root_device_context_device_type sycl
68*0e6b6b59SJacob Faibussowitsch      suffix: sycl
69*0e6b6b59SJacob Faibussowitsch 
70*0e6b6b59SJacob Faibussowitsch TEST*/
71