xref: /petsc/src/sys/objects/device/tests/ex12.c (revision 1015a2a477dd2695c1e05348307aec5fc5bfe5fb)
1*1015a2a4SJacob Faibussowitsch static const char help[] = "Tests PetscDevice and PetscDeviceContext init sequence control from command line.\n\n";
2*1015a2a4SJacob Faibussowitsch 
3*1015a2a4SJacob Faibussowitsch #include "petscdevicetestcommon.h"
4*1015a2a4SJacob Faibussowitsch 
5*1015a2a4SJacob Faibussowitsch int main(int argc, char *argv[])
6*1015a2a4SJacob Faibussowitsch {
7*1015a2a4SJacob Faibussowitsch   PetscDeviceContext dctx;
8*1015a2a4SJacob Faibussowitsch 
9*1015a2a4SJacob Faibussowitsch   PetscFunctionBeginUser;
10*1015a2a4SJacob Faibussowitsch   // check that things are properly caught at init-time, i.e. allow failures for "lazy" during
11*1015a2a4SJacob Faibussowitsch   // initialize
12*1015a2a4SJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
13*1015a2a4SJacob Faibussowitsch   // and check that things are properly handled if explicitly requested
14*1015a2a4SJacob Faibussowitsch   PetscCall(PetscDeviceContextGetCurrentContext(&dctx));
15*1015a2a4SJacob Faibussowitsch   PetscCall(PetscFinalize());
16*1015a2a4SJacob Faibussowitsch   return 0;
17*1015a2a4SJacob Faibussowitsch }
18*1015a2a4SJacob Faibussowitsch 
19*1015a2a4SJacob Faibussowitsch /*TEST
20*1015a2a4SJacob Faibussowitsch 
21*1015a2a4SJacob Faibussowitsch   testset:
22*1015a2a4SJacob Faibussowitsch     requires: defined(PETSC_HAVE_DEVICE), defined(PETSC_USE_INFO)
23*1015a2a4SJacob Faibussowitsch     filter: grep -e PetscDevice -e "PETSC ERROR" -e "PETSc successfully started"
24*1015a2a4SJacob Faibussowitsch     args: -info -device_enable {{none lazy eager}separate output}
25*1015a2a4SJacob Faibussowitsch     args: -petsc_ci_portable_error_output -error_output_stdout
26*1015a2a4SJacob Faibussowitsch     test:
27*1015a2a4SJacob Faibussowitsch       requires: cuda
28*1015a2a4SJacob Faibussowitsch       args: -device_enable_cuda {{none lazy eager}separate output}
29*1015a2a4SJacob Faibussowitsch       suffix: cuda_no_env
30*1015a2a4SJacob Faibussowitsch     test:
31*1015a2a4SJacob Faibussowitsch       requires: cuda
32*1015a2a4SJacob Faibussowitsch       env: CUDA_VISIBLE_DEVICES=0
33*1015a2a4SJacob Faibussowitsch       args: -device_enable_cuda {{none lazy eager}separate output}
34*1015a2a4SJacob Faibussowitsch       suffix: cuda_env_set
35*1015a2a4SJacob Faibussowitsch     test:
36*1015a2a4SJacob Faibussowitsch       requires: cuda
37*1015a2a4SJacob Faibussowitsch       env: CUDA_VISIBLE_DEVICES=
38*1015a2a4SJacob Faibussowitsch       args: -device_enable_cuda {{none lazy eager}separate output}
39*1015a2a4SJacob Faibussowitsch       suffix: cuda_env_set_empty
40*1015a2a4SJacob Faibussowitsch     test:
41*1015a2a4SJacob Faibussowitsch       requires: hip
42*1015a2a4SJacob Faibussowitsch       args: -device_enable_hip {{none lazy eager}separate output}
43*1015a2a4SJacob Faibussowitsch       suffix: hip_no_env
44*1015a2a4SJacob Faibussowitsch     test:
45*1015a2a4SJacob Faibussowitsch       requires: hip
46*1015a2a4SJacob Faibussowitsch       env: HIP_VISIBLE_DEVICES=0
47*1015a2a4SJacob Faibussowitsch       args: -device_enable_hip {{none lazy eager}separate output}
48*1015a2a4SJacob Faibussowitsch       suffix: hip_env_set
49*1015a2a4SJacob Faibussowitsch     test:
50*1015a2a4SJacob Faibussowitsch       requires: hip
51*1015a2a4SJacob Faibussowitsch       env: HIP_VISIBLE_DEVICES=
52*1015a2a4SJacob Faibussowitsch       args: -device_enable_hip {{none lazy eager}separate output}
53*1015a2a4SJacob Faibussowitsch       suffix: hip_env_set_empty
54*1015a2a4SJacob Faibussowitsch 
55*1015a2a4SJacob Faibussowitsch TEST*/
56