1: static const char help[] = "Tests creation and destruction of PetscDeviceContext.\n\n"; 3: #include <petsc/private/deviceimpl.h> 4: #include "petscdevicetestcommon.h" 6: int main(int argc, char *argv[]) 7: { 8: PetscDeviceContext dctx = NULL,ddup = NULL; 10: PetscInitialize(&argc,&argv,NULL,help); 12: /* basic creation and destruction */ 13: PetscDeviceContextCreate(&dctx); 14: AssertDeviceContextExists(dctx); 15: PetscDeviceContextDestroy(&dctx); 16: AssertDeviceContextDoesNotExist(dctx); 17: /* double free is no-op */ 18: PetscDeviceContextDestroy(&dctx); 19: AssertDeviceContextDoesNotExist(dctx); 21: /* test global context returns a valid context */ 22: dctx = NULL; 23: PetscDeviceContextGetCurrentContext(&dctx); 24: AssertDeviceContextExists(dctx); 25: /* test locally setting to null doesn't clobber the global */ 26: dctx = NULL; 27: PetscDeviceContextGetCurrentContext(&dctx); 28: AssertDeviceContextExists(dctx); 30: /* test duplicate */ 31: PetscDeviceContextDuplicate(dctx,&ddup); 32: /* both device contexts should exist */ 33: AssertDeviceContextExists(dctx); 34: AssertDeviceContextExists(ddup); 36: /* destroying the dup should leave the original untouched */ 37: PetscDeviceContextDestroy(&ddup); 38: AssertDeviceContextDoesNotExist(ddup); 39: AssertDeviceContextExists(dctx); 41: PetscPrintf(PETSC_COMM_WORLD,"EXIT_SUCCESS\n"); 42: PetscFinalize(); 43: return 0; 44: } 46: /*TEST 48: build: 49: requires: defined(PETSC_HAVE_CXX) 51: test: 52: TODO: broken in ci 53: requires: !device 54: suffix: no_device 55: filter: Error: grep -E -o -e ".*No support for this operation for this object type" -e ".*PETSc is not configured with device support.*" -e "^\[0\]PETSC ERROR:.*[0-9]{1} [A-z]+\(\)" 57: testset: 58: output_file: ./output/ExitSuccess.out 59: nsize: {{1 2 4}} 60: test: 61: requires: cuda 62: suffix: cuda 63: test: 64: requires: hip 65: suffix: hip 67: TEST*/