From 63f1a1cdbb265cff0b4c74327278b729d9f332fd Mon Sep 17 00:00:00 2001 From: JUan ESCOBAR <juan.escobar@aero.obs-mip.fr> Date: Thu, 19 Nov 2020 17:57:55 +0100 Subject: [PATCH] Juan 19/11/2020: mesonh.f90,mode_mnh_world.f90 : move init of good GPU to INIT_NMNH_COMM_WORLD --- src/LIB/SURCOUCHE/src/mode_mnh_world.f90 | 21 +++++++++++++++++++++ src/MNH/mesonh.f90 | 3 --- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 b/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 index 30124a276..2296fb4b9 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 349c00327..27bd93e2c 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() -- GitLab