From 24b05162b3db9b8dfddf813cc5d1579e9285adc4 Mon Sep 17 00:00:00 2001
From: ESCOBAR Juan <escj@nuwa>
Date: Mon, 10 Nov 2014 17:48:54 +0100
Subject: [PATCH] Juan 10/11/2014 : proporly manage MPPDB_CHECK3D from host to
 DEVICE

---
 SURCOUCHE/mode_device.f90 | 54 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100644 SURCOUCHE/mode_device.f90

diff --git a/SURCOUCHE/mode_device.f90 b/SURCOUCHE/mode_device.f90
new file mode 100644
index 000000000..3c5cce64b
--- /dev/null
+++ b/SURCOUCHE/mode_device.f90
@@ -0,0 +1,54 @@
+MODULE MODE_DEVICE
+
+CONTAINS
+
+  SUBROUTINE GET_FROM_DEVICE(PTAB,ZTAB,O_PTAB_ON_DEVICE)
+
+    USE&
+         OPENACC 
+
+    IMPLICIT NONE
+
+    REAL, DIMENSION(:,:,:)  :: PTAB
+    REAL, DIMENSION(:,:,:)  :: ZTAB
+    LOGICAL                 :: O_PTAB_ON_DEVICE
+
+    O_PTAB_ON_DEVICE =  acc_is_present(PTAB)
+    if ( O_PTAB_ON_DEVICE ) then
+    !$acc data create(ZTAB)
+    !$acc kernels 
+    ZTAB=PTAB
+    !$acc end kernels
+    !$acc update host(ZTAB)
+    !$acc end data
+    else
+    ZTAB=PTAB
+    endif
+
+  END SUBROUTINE GET_FROM_DEVICE
+
+  SUBROUTINE PRINT_ON_DEVICE(PTAB,MES)
+
+    USE&
+         OPENACC 
+
+    IMPLICIT NONE
+
+    REAL, DIMENSION(:,:,:)  :: PTAB
+    CHARACTER(len=*)        :: MES
+    LOGICAL                 :: G_PTAB_ON_DEVICE,G_EXEC_ON_DEVICE
+
+    G_PTAB_ON_DEVICE =  acc_is_present(PTAB)
+    G_EXEC_ON_DEVICE =  ( acc_get_device_type() <> acc_device_host )
+    if (G_EXEC_ON_DEVICE) then
+       if (G_PTAB_ON_DEVICE) then
+          print*,"PRESENT::",MES
+       else
+          print*,"ABSENT ::",MES
+       end if
+    end if
+
+
+  END SUBROUTINE PRINT_ON_DEVICE
+
+END MODULE MODE_DEVICE
-- 
GitLab