1a16fd2c9SJacob Faibussowitsch static const char help[] = "Tests PetscDeviceGetAttribute().\n\n"; 2a16fd2c9SJacob Faibussowitsch 3a16fd2c9SJacob Faibussowitsch #include "petscdevicetestcommon.h" 4a16fd2c9SJacob Faibussowitsch #include <petscviewer.h> 5a16fd2c9SJacob Faibussowitsch 6*d71ae5a4SJacob Faibussowitsch int main(int argc, char *argv[]) 7*d71ae5a4SJacob Faibussowitsch { 8a16fd2c9SJacob Faibussowitsch PetscDevice device = NULL; 9a16fd2c9SJacob Faibussowitsch size_t shmem = 0; 10a16fd2c9SJacob Faibussowitsch 11a16fd2c9SJacob Faibussowitsch PetscFunctionBeginUser; 12a16fd2c9SJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, NULL, help)); 13a16fd2c9SJacob Faibussowitsch 140e6b6b59SJacob Faibussowitsch PetscCall(PetscDeviceCreate(PETSC_DEVICE_DEFAULT(), PETSC_DECIDE, &device)); 15a16fd2c9SJacob Faibussowitsch PetscCall(PetscDeviceConfigure(device)); 16a16fd2c9SJacob Faibussowitsch PetscCall(PetscDeviceGetAttribute(device, PETSC_DEVICE_ATTR_SIZE_T_SHARED_MEM_PER_BLOCK, &shmem)); 170e6b6b59SJacob Faibussowitsch if (PetscDefined(HAVE_CXX) && ((shmem == 0) || (shmem == (size_t)-1))) { 180e6b6b59SJacob Faibussowitsch // if no C++ then PetscDeviceGetAttribute defaults to 0 19a16fd2c9SJacob Faibussowitsch PetscCall(PetscDeviceView(device, PETSC_VIEWER_STDOUT_SELF)); 20a16fd2c9SJacob Faibussowitsch SETERRQ(PETSC_COMM_SELF, PETSC_ERR_LIB, "Maximum shared memory of %zu seems fishy", shmem); 21a16fd2c9SJacob Faibussowitsch } 22a16fd2c9SJacob Faibussowitsch PetscCall(PetscDeviceDestroy(&device)); 23a16fd2c9SJacob Faibussowitsch 24a16fd2c9SJacob Faibussowitsch PetscCall(PetscPrintf(PETSC_COMM_WORLD, "EXIT_SUCCESS\n")); 25a16fd2c9SJacob Faibussowitsch PetscCall(PetscFinalize()); 26a16fd2c9SJacob Faibussowitsch return 0; 27a16fd2c9SJacob Faibussowitsch } 28a16fd2c9SJacob Faibussowitsch 29a16fd2c9SJacob Faibussowitsch /*TEST 30a16fd2c9SJacob Faibussowitsch 31a16fd2c9SJacob Faibussowitsch build: 32a16fd2c9SJacob Faibussowitsch requires: defined(PETSC_HAVE_CXX) 33a16fd2c9SJacob Faibussowitsch 34a16fd2c9SJacob Faibussowitsch testset: 35a16fd2c9SJacob Faibussowitsch output_file: ./output/ExitSuccess.out 360e6b6b59SJacob Faibussowitsch args: -device_enable {{lazy eager}} 370e6b6b59SJacob Faibussowitsch test: 380e6b6b59SJacob Faibussowitsch requires: !device 390e6b6b59SJacob Faibussowitsch suffix: host_no_device 400e6b6b59SJacob Faibussowitsch test: 410e6b6b59SJacob Faibussowitsch requires: device 420e6b6b59SJacob Faibussowitsch args: -default_device_type host 430e6b6b59SJacob Faibussowitsch suffix: host_with_device 44a16fd2c9SJacob Faibussowitsch test: 45a16fd2c9SJacob Faibussowitsch requires: cuda 460e6b6b59SJacob Faibussowitsch args: -default_device_type cuda 47a16fd2c9SJacob Faibussowitsch suffix: cuda 48a16fd2c9SJacob Faibussowitsch test: 49a16fd2c9SJacob Faibussowitsch requires: hip 500e6b6b59SJacob Faibussowitsch args: -default_device_type hip 51a16fd2c9SJacob Faibussowitsch suffix: hip 52a16fd2c9SJacob Faibussowitsch test: 53a16fd2c9SJacob Faibussowitsch requires: sycl 540e6b6b59SJacob Faibussowitsch args: -default_device_type sycl 55a16fd2c9SJacob Faibussowitsch suffix: sycl 56a16fd2c9SJacob Faibussowitsch 57a16fd2c9SJacob Faibussowitsch TEST*/ 58