diff --git a/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 b/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 index 30124a276c7604ef0c476633eb18d13e38e4bc10..2296fb4b9095b80060e8678e7cadf6c28f68d4e4 100644 --- a/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 +++ b/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 @@ -56,6 +56,11 @@ CONTAINS !JUANZ INTEGER :: ILU +#ifdef MNH_OPENACC + CHARACTER(LEN=28) :: CID_GPU + INTEGER :: ID_GPU,N_GPU +#endif + #if 0 !Try to initialise device memory by creating a big array REAL,dimension(:,:,:),allocatable :: big @@ -76,6 +81,22 @@ CONTAINS KINFO_ll = 0 CALL MPI_INITIALIZED(GISINIT, KINFO_ll) IF (.NOT. GISINIT) THEN + +#ifdef MNH_OPENACC + ! + ! I nvidia gpu set the good one <-> ACC_DEVICE_NUM + ! to avoid duplication of memory be allocating each mpi task all GPU + ! + N_GPU = acc_get_num_devices(acc_device_nvidia) + IF ( N_GPU > 0 ) THEN + CALL GET_ENVIRONMENT_VARIABLE("ACC_DEVICE_NUM",CID_GPU) + read(CID_GPU,'(I5)') ID_GPU + print*,"CID_GPU=",CID_GPU," ID_GPU=",ID_GPU + CALL acc_set_device_num(ID_GPU,acc_device_nvidia) + END IF +!!$ ! acc init +#endif + #ifdef MNH_GA CALL MPI_INIT_thread(REQUIRED,PROVIDED,KINFO_ll) #else diff --git a/src/MNH/mesonh.f90 b/src/MNH/mesonh.f90 index 349c00327c31fb5c287ecca69aeb139c6900d7de..27bd93e2cc2c8f80ad698f4ae9733821ecd29f9d 100644 --- a/src/MNH/mesonh.f90 +++ b/src/MNH/mesonh.f90 @@ -132,9 +132,6 @@ INTEGER :: IINFO_ll ! return code of // routines ! !* 1. INITIALIZATION ! -------------- -#ifdef MNH_OPENACC - !$acc init -#endif ! Switch to model 1 variables #ifndef CPLOASIS CALL MPPDB_INIT()