xref: /petsc/src/sys/objects/device/tests/ex6.c (revision 017deb10d530c1b6d9744fcd772cd96c5fcd74f2) !
10e6b6b59SJacob Faibussowitsch static const char help[] = "Tests PetscDeviceContextView().\n\n";
20e6b6b59SJacob Faibussowitsch 
30e6b6b59SJacob Faibussowitsch #include "petscdevicetestcommon.h"
40e6b6b59SJacob Faibussowitsch #include <petscviewer.h>
50e6b6b59SJacob Faibussowitsch 
TestView(PetscDeviceContext dctx)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));
193ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
200e6b6b59SJacob Faibussowitsch }
210e6b6b59SJacob Faibussowitsch 
main(int argc,char * argv[])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 
36f9fea11eSJacob Faibussowitsch   PetscCall(TestView(NULL));
37f9fea11eSJacob Faibussowitsch 
38f9fea11eSJacob 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   testset:
46*27d4e10aSPierre Jolivet     requires: defined(PETSC_DEVICELANGUAGE_CXX)
470e6b6b59SJacob Faibussowitsch     args: -root_device_context_stream_type \
48d9acb416SHong Zhang       {{default default_with_barrier nonblocking}separate output}
490e6b6b59SJacob Faibussowitsch     filter: grep -ve "ex6 on a" -ve "\[0\] "
500e6b6b59SJacob Faibussowitsch     test:
510e6b6b59SJacob Faibussowitsch       requires: !device
520e6b6b59SJacob Faibussowitsch       suffix: host_no_device
530e6b6b59SJacob Faibussowitsch     test:
540e6b6b59SJacob Faibussowitsch       requires: device
550e6b6b59SJacob Faibussowitsch       args: -root_device_context_device_type host
560e6b6b59SJacob Faibussowitsch       suffix: host_with_device
570e6b6b59SJacob Faibussowitsch     test:
580e6b6b59SJacob Faibussowitsch       requires: cuda
590e6b6b59SJacob Faibussowitsch       args: -root_device_context_device_type cuda
600e6b6b59SJacob Faibussowitsch       suffix: cuda
610e6b6b59SJacob Faibussowitsch     test:
620e6b6b59SJacob Faibussowitsch       requires: hip
630e6b6b59SJacob Faibussowitsch       args: -root_device_context_device_type hip
640e6b6b59SJacob Faibussowitsch       suffix: hip
650e6b6b59SJacob Faibussowitsch     test:
660e6b6b59SJacob Faibussowitsch       requires: sycl
670e6b6b59SJacob Faibussowitsch       args: -root_device_context_device_type sycl
680e6b6b59SJacob Faibussowitsch       suffix: sycl
690e6b6b59SJacob Faibussowitsch 
70667ab0feSJacob Faibussowitsch   testset:
71*27d4e10aSPierre Jolivet     requires: !defined(PETSC_DEVICELANGUAGE_CXX)
7261c8d4edSPierre Jolivet     output_file: output/ExitSuccess.out
73667ab0feSJacob Faibussowitsch     suffix: no_cxx
74667ab0feSJacob Faibussowitsch 
750e6b6b59SJacob Faibussowitsch TEST*/
76