1*1015a2a4SJacob Faibussowitsch static const char help[] = "Tests PetscDevice and PetscDeviceContext init sequence control from command line.\n\n"; 2*1015a2a4SJacob Faibussowitsch 3*1015a2a4SJacob Faibussowitsch #include "petscdevicetestcommon.h" 4*1015a2a4SJacob Faibussowitsch 5*1015a2a4SJacob Faibussowitsch int main(int argc, char *argv[]) 6*1015a2a4SJacob Faibussowitsch { 7*1015a2a4SJacob Faibussowitsch PetscDeviceContext dctx; 8*1015a2a4SJacob Faibussowitsch 9*1015a2a4SJacob Faibussowitsch PetscFunctionBeginUser; 10*1015a2a4SJacob Faibussowitsch // check that things are properly caught at init-time, i.e. allow failures for "lazy" during 11*1015a2a4SJacob Faibussowitsch // initialize 12*1015a2a4SJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, NULL, help)); 13*1015a2a4SJacob Faibussowitsch // and check that things are properly handled if explicitly requested 14*1015a2a4SJacob Faibussowitsch PetscCall(PetscDeviceContextGetCurrentContext(&dctx)); 15*1015a2a4SJacob Faibussowitsch PetscCall(PetscFinalize()); 16*1015a2a4SJacob Faibussowitsch return 0; 17*1015a2a4SJacob Faibussowitsch } 18*1015a2a4SJacob Faibussowitsch 19*1015a2a4SJacob Faibussowitsch /*TEST 20*1015a2a4SJacob Faibussowitsch 21*1015a2a4SJacob Faibussowitsch testset: 22*1015a2a4SJacob Faibussowitsch requires: defined(PETSC_HAVE_DEVICE), defined(PETSC_USE_INFO) 23*1015a2a4SJacob Faibussowitsch filter: grep -e PetscDevice -e "PETSC ERROR" -e "PETSc successfully started" 24*1015a2a4SJacob Faibussowitsch args: -info -device_enable {{none lazy eager}separate output} 25*1015a2a4SJacob Faibussowitsch args: -petsc_ci_portable_error_output -error_output_stdout 26*1015a2a4SJacob Faibussowitsch test: 27*1015a2a4SJacob Faibussowitsch requires: cuda 28*1015a2a4SJacob Faibussowitsch args: -device_enable_cuda {{none lazy eager}separate output} 29*1015a2a4SJacob Faibussowitsch suffix: cuda_no_env 30*1015a2a4SJacob Faibussowitsch test: 31*1015a2a4SJacob Faibussowitsch requires: cuda 32*1015a2a4SJacob Faibussowitsch env: CUDA_VISIBLE_DEVICES=0 33*1015a2a4SJacob Faibussowitsch args: -device_enable_cuda {{none lazy eager}separate output} 34*1015a2a4SJacob Faibussowitsch suffix: cuda_env_set 35*1015a2a4SJacob Faibussowitsch test: 36*1015a2a4SJacob Faibussowitsch requires: cuda 37*1015a2a4SJacob Faibussowitsch env: CUDA_VISIBLE_DEVICES= 38*1015a2a4SJacob Faibussowitsch args: -device_enable_cuda {{none lazy eager}separate output} 39*1015a2a4SJacob Faibussowitsch suffix: cuda_env_set_empty 40*1015a2a4SJacob Faibussowitsch test: 41*1015a2a4SJacob Faibussowitsch requires: hip 42*1015a2a4SJacob Faibussowitsch args: -device_enable_hip {{none lazy eager}separate output} 43*1015a2a4SJacob Faibussowitsch suffix: hip_no_env 44*1015a2a4SJacob Faibussowitsch test: 45*1015a2a4SJacob Faibussowitsch requires: hip 46*1015a2a4SJacob Faibussowitsch env: HIP_VISIBLE_DEVICES=0 47*1015a2a4SJacob Faibussowitsch args: -device_enable_hip {{none lazy eager}separate output} 48*1015a2a4SJacob Faibussowitsch suffix: hip_env_set 49*1015a2a4SJacob Faibussowitsch test: 50*1015a2a4SJacob Faibussowitsch requires: hip 51*1015a2a4SJacob Faibussowitsch env: HIP_VISIBLE_DEVICES= 52*1015a2a4SJacob Faibussowitsch args: -device_enable_hip {{none lazy eager}separate output} 53*1015a2a4SJacob Faibussowitsch suffix: hip_env_set_empty 54*1015a2a4SJacob Faibussowitsch 55*1015a2a4SJacob Faibussowitsch TEST*/ 56