From bbe8337f2683baf9801e17f868d7c63d4b3bd6b4 Mon Sep 17 00:00:00 2001
From: Juan Escobar <juan.escobar@aero.obs-mip.fr>
Date: Mon, 16 Aug 2021 18:59:32 +0200
Subject: [PATCH] Juan 16/08/2021:move iswitch_cpu_gpu to
 mode_openacc_set_device.f90 & add mnh_device_type_current

---
 .../mode_openacc_set_device.f90                       | 11 +++++++++--
 .../tensorproductmultigrid_Source/multigrid.f90       |  2 --
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/ZSOLVER/tensorproductmultigrid_Source/mode_openacc_set_device.f90 b/src/ZSOLVER/tensorproductmultigrid_Source/mode_openacc_set_device.f90
index 50bc7bd44..3efd40fee 100644
--- a/src/ZSOLVER/tensorproductmultigrid_Source/mode_openacc_set_device.f90
+++ b/src/ZSOLVER/tensorproductmultigrid_Source/mode_openacc_set_device.f90
@@ -7,7 +7,7 @@
 MODULE MODE_OPENACC_SET_DEVICE
 
 #ifndef _FAKEOPENACC  
-  USE openacc , ONLY : acc_device_kind
+  USE openacc , ONLY : acc_device_kind , acc_device_nvidia, acc_device_host
 #endif
   
   IMPLICIT NONE
@@ -15,8 +15,11 @@ MODULE MODE_OPENACC_SET_DEVICE
 #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_current = -1
 #endif  
 
+  integer :: iswitch_cpu_gpu = 5
+  
 CONTAINS
   
   SUBROUTINE MNH_OPENACC_GET_DEVICE_AT_INIT()
@@ -33,6 +36,7 @@ CONTAINS
 
     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)
     end if
 #endif
@@ -52,6 +56,7 @@ CONTAINS
     SWAP_DEVICE_RETURN
     
     idevice_type = acc_get_device_type()
+    mnh_idevice_type_current = idevice_type
     print*,'idevice_type=',idevice_type
 #endif
     
@@ -70,6 +75,7 @@ CONTAINS
     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()
 #endif
     
   END SUBROUTINE MNH_OPENACC_SET_DEVICE_HOST
@@ -78,13 +84,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
     
     call acc_set_device_type(acc_device_nvidia)
+    mnh_idevice_type_current = acc_get_device_type()
 #endif
     
   END SUBROUTINE MNH_OPENACC_SET_DEVICE_NVIDIA
diff --git a/src/ZSOLVER/tensorproductmultigrid_Source/multigrid.f90 b/src/ZSOLVER/tensorproductmultigrid_Source/multigrid.f90
index 4db994726..e642d1722 100644
--- a/src/ZSOLVER/tensorproductmultigrid_Source/multigrid.f90
+++ b/src/ZSOLVER/tensorproductmultigrid_Source/multigrid.f90
@@ -1185,8 +1185,6 @@ contains
 
     real , dimension(:,:,:) , pointer , contiguous ::  zu_level_1_m_st,zu_level_1_m_1_st
 
-    integer :: iswitch_cpu_gpu = 5
-
     nlocalx = u(level,m)%ix_max-u(level,m)%ix_min+1
     nlocaly = u(level,m)%iy_max-u(level,m)%iy_min+1
     halo_size = u(level,m)%halo_size
-- 
GitLab