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