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