xref: /petsc/src/sys/objects/device/tests/ex6.c (revision f9fea11e2c44c506c9f9a3f6998afbe8a760174b)
10e6b6b59SJacob Faibussowitsch static const char help[] = "Tests PetscDeviceContextView().\n\n";
20e6b6b59SJacob Faibussowitsch 
30e6b6b59SJacob Faibussowitsch #include "petscdevicetestcommon.h"
40e6b6b59SJacob Faibussowitsch #include <petscviewer.h>
50e6b6b59SJacob Faibussowitsch 
6d71ae5a4SJacob Faibussowitsch static PetscErrorCode TestView(PetscDeviceContext dctx)
7d71ae5a4SJacob Faibussowitsch {
80e6b6b59SJacob Faibussowitsch   PetscViewer viewer;
90e6b6b59SJacob Faibussowitsch 
100e6b6b59SJacob Faibussowitsch   PetscFunctionBegin;
110e6b6b59SJacob Faibussowitsch   /* test stdout world */
120e6b6b59SJacob Faibussowitsch   PetscCall(PetscDeviceContextView(dctx, NULL));
130e6b6b59SJacob Faibussowitsch 
140e6b6b59SJacob Faibussowitsch   /* test creating our own viewer */
150e6b6b59SJacob Faibussowitsch   PetscCall(PetscViewerCreate(PETSC_COMM_WORLD, &viewer));
160e6b6b59SJacob Faibussowitsch   PetscCall(PetscViewerSetType(viewer, PETSCVIEWERASCII));
170e6b6b59SJacob Faibussowitsch   PetscCall(PetscDeviceContextView(dctx, viewer));
180e6b6b59SJacob Faibussowitsch   PetscCall(PetscViewerDestroy(&viewer));
190e6b6b59SJacob Faibussowitsch   PetscFunctionReturn(0);
200e6b6b59SJacob Faibussowitsch }
210e6b6b59SJacob Faibussowitsch 
22d71ae5a4SJacob Faibussowitsch int main(int argc, char *argv[])
23d71ae5a4SJacob Faibussowitsch {
240e6b6b59SJacob Faibussowitsch   PetscDeviceContext dctx, dup;
250e6b6b59SJacob Faibussowitsch 
260e6b6b59SJacob Faibussowitsch   PetscFunctionBeginUser;
270e6b6b59SJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
280e6b6b59SJacob Faibussowitsch 
290e6b6b59SJacob Faibussowitsch   PetscCall(PetscDeviceContextGetCurrentContext(&dctx));
300e6b6b59SJacob Faibussowitsch   PetscCall(TestView(dctx));
310e6b6b59SJacob Faibussowitsch 
320e6b6b59SJacob Faibussowitsch   PetscCall(PetscDeviceContextDuplicate(dctx, &dup));
330e6b6b59SJacob Faibussowitsch   PetscCall(TestView(dup));
340e6b6b59SJacob Faibussowitsch   PetscCall(PetscDeviceContextDestroy(&dup));
350e6b6b59SJacob Faibussowitsch 
36*f9fea11eSJacob Faibussowitsch   PetscCall(TestView(NULL));
37*f9fea11eSJacob Faibussowitsch 
38*f9fea11eSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_WORLD, "EXIT_SUCCESS\n"));
390e6b6b59SJacob Faibussowitsch   PetscCall(PetscFinalize());
400e6b6b59SJacob Faibussowitsch   return 0;
410e6b6b59SJacob Faibussowitsch }
420e6b6b59SJacob Faibussowitsch 
430e6b6b59SJacob Faibussowitsch /*TEST
440e6b6b59SJacob Faibussowitsch 
450e6b6b59SJacob Faibussowitsch  build:
460e6b6b59SJacob Faibussowitsch    requires: defined(PETSC_HAVE_CXX)
470e6b6b59SJacob Faibussowitsch 
480e6b6b59SJacob Faibussowitsch  testset:
490e6b6b59SJacob Faibussowitsch    args: -root_device_context_stream_type \
500e6b6b59SJacob Faibussowitsch      {{global_blocking default_blocking global_nonblocking}separate output}
510e6b6b59SJacob Faibussowitsch    filter: grep -ve "ex6 on a" -ve "\[0\] "
520e6b6b59SJacob Faibussowitsch    test:
530e6b6b59SJacob Faibussowitsch      requires: !device
540e6b6b59SJacob Faibussowitsch      suffix: host_no_device
550e6b6b59SJacob Faibussowitsch    test:
560e6b6b59SJacob Faibussowitsch      requires: device
570e6b6b59SJacob Faibussowitsch      args: -root_device_context_device_type host
580e6b6b59SJacob Faibussowitsch      suffix: host_with_device
590e6b6b59SJacob Faibussowitsch    test:
600e6b6b59SJacob Faibussowitsch      requires: cuda
610e6b6b59SJacob Faibussowitsch      args: -root_device_context_device_type cuda
620e6b6b59SJacob Faibussowitsch      suffix: cuda
630e6b6b59SJacob Faibussowitsch    test:
640e6b6b59SJacob Faibussowitsch      requires: hip
650e6b6b59SJacob Faibussowitsch      args: -root_device_context_device_type hip
660e6b6b59SJacob Faibussowitsch      suffix: hip
670e6b6b59SJacob Faibussowitsch    test:
680e6b6b59SJacob Faibussowitsch      requires: sycl
690e6b6b59SJacob Faibussowitsch      args: -root_device_context_device_type sycl
700e6b6b59SJacob Faibussowitsch      suffix: sycl
710e6b6b59SJacob Faibussowitsch 
720e6b6b59SJacob Faibussowitsch TEST*/
73