xref: /petsc/src/sys/objects/device/tests/ex6.c (revision d71ae5a4db6382e7f06317b8d368875286fe9008)
10e6b6b59SJacob Faibussowitsch static const char help[] = "Tests PetscDeviceContextView().\n\n";
20e6b6b59SJacob Faibussowitsch 
30e6b6b59SJacob Faibussowitsch #include "petscdevicetestcommon.h"
40e6b6b59SJacob Faibussowitsch #include <petscviewer.h>
50e6b6b59SJacob Faibussowitsch 
6*d71ae5a4SJacob Faibussowitsch static PetscErrorCode TestView(PetscDeviceContext dctx)
7*d71ae5a4SJacob 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 
22*d71ae5a4SJacob Faibussowitsch int main(int argc, char *argv[])
23*d71ae5a4SJacob Faibussowitsch {
240e6b6b59SJacob Faibussowitsch   MPI_Comm           comm;
250e6b6b59SJacob Faibussowitsch   PetscDeviceContext dctx, dup;
260e6b6b59SJacob Faibussowitsch 
270e6b6b59SJacob Faibussowitsch   PetscFunctionBeginUser;
280e6b6b59SJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
290e6b6b59SJacob Faibussowitsch   comm = PETSC_COMM_WORLD;
300e6b6b59SJacob Faibussowitsch 
310e6b6b59SJacob Faibussowitsch   PetscCall(PetscDeviceContextGetCurrentContext(&dctx));
320e6b6b59SJacob Faibussowitsch   PetscCall(TestView(dctx));
330e6b6b59SJacob Faibussowitsch 
340e6b6b59SJacob Faibussowitsch   PetscCall(PetscDeviceContextDuplicate(dctx, &dup));
350e6b6b59SJacob Faibussowitsch   PetscCall(TestView(dup));
360e6b6b59SJacob Faibussowitsch   PetscCall(PetscDeviceContextDestroy(&dup));
370e6b6b59SJacob Faibussowitsch 
380e6b6b59SJacob Faibussowitsch   PetscCall(PetscPrintf(comm, "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