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