1a16fd2c9SJacob Faibussowitsch static const char help[] = "Tests PetscDeviceGetAttribute().\n\n"; 2a16fd2c9SJacob Faibussowitsch 3a16fd2c9SJacob Faibussowitsch #include "petscdevicetestcommon.h" 4a16fd2c9SJacob Faibussowitsch #include <petscviewer.h> 5a16fd2c9SJacob Faibussowitsch 6d71ae5a4SJacob Faibussowitsch int main(int argc, char *argv[]) 7d71ae5a4SJacob 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 testset: 32667ab0feSJacob Faibussowitsch requires: cxx 33*61c8d4edSPierre Jolivet output_file: output/ExitSuccess.out 340e6b6b59SJacob Faibussowitsch args: -device_enable {{lazy eager}} 350e6b6b59SJacob Faibussowitsch test: 360e6b6b59SJacob Faibussowitsch requires: !device 370e6b6b59SJacob Faibussowitsch suffix: host_no_device 380e6b6b59SJacob Faibussowitsch test: 390e6b6b59SJacob Faibussowitsch requires: device 400e6b6b59SJacob Faibussowitsch args: -default_device_type host 410e6b6b59SJacob Faibussowitsch suffix: host_with_device 42a16fd2c9SJacob Faibussowitsch test: 43a16fd2c9SJacob Faibussowitsch requires: cuda 440e6b6b59SJacob Faibussowitsch args: -default_device_type cuda 45a16fd2c9SJacob Faibussowitsch suffix: cuda 46a16fd2c9SJacob Faibussowitsch test: 47a16fd2c9SJacob Faibussowitsch requires: hip 480e6b6b59SJacob Faibussowitsch args: -default_device_type hip 49a16fd2c9SJacob Faibussowitsch suffix: hip 50a16fd2c9SJacob Faibussowitsch test: 51a16fd2c9SJacob Faibussowitsch requires: sycl 520e6b6b59SJacob Faibussowitsch args: -default_device_type sycl 53a16fd2c9SJacob Faibussowitsch suffix: sycl 54a16fd2c9SJacob Faibussowitsch 55667ab0feSJacob Faibussowitsch testset: 56667ab0feSJacob Faibussowitsch requires: !cxx 57*61c8d4edSPierre Jolivet output_file: output/ExitSuccess.out 58667ab0feSJacob Faibussowitsch suffix: no_cxx 59667ab0feSJacob Faibussowitsch 60a16fd2c9SJacob Faibussowitsch TEST*/ 61