Actual source code: ex2.c

  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*/