From d528c36c09b04803185c921410ce115e60ba02ac Mon Sep 17 00:00:00 2001
From: Juan Escobar <juan.escobar@aero.obs-mip.fr>
Date: Wed, 25 Aug 2021 20:07:52 +0200
Subject: [PATCH] Juan 25/08/2021:mode_openacc_set_device.f90 , correction for
 setting current device

---
 src/MNH/mode_openacc_set_device.f90           | 28 ++++++++-----------
 .../mode_openacc_set_device.f90               |  1 +
 2 files changed, 12 insertions(+), 17 deletions(-)
 create mode 120000 src/ZSOLVER/tensorproductmultigrid_Source/mode_openacc_set_device.f90

diff --git a/src/MNH/mode_openacc_set_device.f90 b/src/MNH/mode_openacc_set_device.f90
index 3efd40fee..bd440f980 100644
--- a/src/MNH/mode_openacc_set_device.f90
+++ b/src/MNH/mode_openacc_set_device.f90
@@ -13,8 +13,7 @@ MODULE MODE_OPENACC_SET_DEVICE
   IMPLICIT NONE
 
 #ifndef _FAKEOPENACC  
-  INTEGER(kind=acc_device_kind),dimension(1000) :: mnh_idevice_type_at_init = -1000
-  INTEGER :: nlevel_mnh_idevice_type = 1
+  INTEGER(kind=acc_device_kind) :: mnh_idevice_type_at_init = -1000
   INTEGER(kind=acc_device_kind) :: mnh_idevice_type_current = -1
 #endif  
 
@@ -34,10 +33,10 @@ CONTAINS
 
     SWAP_DEVICE_RETURN
 
-    if ( mnh_idevice_type_at_init(1) .EQ. -1000 ) then
-       mnh_idevice_type_at_init(1) = acc_get_device_type()
-       mnh_idevice_type_current = acc_get_device_type()
-       print*,'mnh_idevice_type_at_init=',mnh_idevice_type_at_init(1)
+    if ( mnh_idevice_type_at_init .EQ. -1000 ) then
+       mnh_idevice_type_at_init = acc_get_device_type()
+       mnh_idevice_type_current = mnh_idevice_type_at_init
+       print*,'mnh_idevice_type_at_init=',mnh_idevice_type_at_init
     end if
 #endif
     
@@ -72,10 +71,9 @@ CONTAINS
 
     SWAP_DEVICE_RETURN
 
-    nlevel_mnh_idevice_type =  nlevel_mnh_idevice_type + 1
-    mnh_idevice_type_at_init(nlevel_mnh_idevice_type) = acc_get_device_type()
     call acc_set_device_type(acc_device_host)
-    mnh_idevice_type_current = acc_get_device_type()
+    mnh_idevice_type_current = acc_device_host
+    
 #endif
     
   END SUBROUTINE MNH_OPENACC_SET_DEVICE_HOST
@@ -91,7 +89,7 @@ CONTAINS
     SWAP_DEVICE_RETURN
     
     call acc_set_device_type(acc_device_nvidia)
-    mnh_idevice_type_current = acc_get_device_type()
+    mnh_idevice_type_current = acc_device_nvidia
 #endif
     
   END SUBROUTINE MNH_OPENACC_SET_DEVICE_NVIDIA
@@ -100,18 +98,14 @@ CONTAINS
 
 #ifndef _FAKEOPENACC
     USE&
-         openacc , ONLY : acc_set_device_type,acc_device_nvidia
+         openacc , ONLY : acc_set_device_type,acc_device_nvidia,acc_get_device_type
     
     IMPLICIT NONE
 
     SWAP_DEVICE_RETURN
 
-    IF ( nlevel_mnh_idevice_type == 1 ) THEN
-       print*,'  MNH_OPENACC_SET_DEVICE_DEFAULT :: WARNING ALLREADY AT FIRST LEVEL !!! '
-    ELSE
-       nlevel_mnh_idevice_type = nlevel_mnh_idevice_type - 1
-    END IF
-    call acc_set_device_type(mnh_idevice_type_at_init(nlevel_mnh_idevice_type))
+    call acc_set_device_type(mnh_idevice_type_at_init)
+    mnh_idevice_type_current = mnh_idevice_type_at_init
 #endif
    
   END SUBROUTINE MNH_OPENACC_SET_DEVICE_DEFAULT
diff --git a/src/ZSOLVER/tensorproductmultigrid_Source/mode_openacc_set_device.f90 b/src/ZSOLVER/tensorproductmultigrid_Source/mode_openacc_set_device.f90
new file mode 120000
index 000000000..3c68748c1
--- /dev/null
+++ b/src/ZSOLVER/tensorproductmultigrid_Source/mode_openacc_set_device.f90
@@ -0,0 +1 @@
+../../MNH/mode_openacc_set_device.f90
\ No newline at end of file
-- 
GitLab