Fortran OpenACC "openacc_lib.h": acc_pcopyin, acc_pcreate
authorThomas Schwinge <thomas@codesourcery.com>
Wed, 24 May 2017 13:23:55 +0000 (15:23 +0200)
committerThomas Schwinge <tschwinge@gcc.gnu.org>
Wed, 24 May 2017 13:23:55 +0000 (15:23 +0200)
libgomp/
* openacc_lib.h (acc_pcopyin, acc_pcreate): Route to
acc_present_or_copyin and acc_present_or_create procedures,
respectively.
* testsuite/libgomp.oacc-fortran/lib-32-1.f: Exercise these, and
generally different variants of OpenACC Runtime Library functions.
* testsuite/libgomp.oacc-fortran/lib-32-2.f: Likewise.

From-SVN: r248412

libgomp/ChangeLog
libgomp/openacc_lib.h
libgomp/testsuite/libgomp.oacc-fortran/lib-32-1.f
libgomp/testsuite/libgomp.oacc-fortran/lib-32-2.f

index af8c5ca07fc2ed9d1535d445b1e50ef03f3112bf..55869d2bfbca836b36f5032818a5787a16596976 100644 (file)
@@ -1,5 +1,12 @@
 2017-05-24  Thomas Schwinge  <thomas@codesourcery.com>
 
+       * openacc_lib.h (acc_pcopyin, acc_pcreate): Route to
+       acc_present_or_copyin and acc_present_or_create procedures,
+       respectively.
+       * testsuite/libgomp.oacc-fortran/lib-32-1.f: Exercise these, and
+       generally different variants of OpenACC Runtime Library functions.
+       * testsuite/libgomp.oacc-fortran/lib-32-2.f: Likewise.
+
        * testsuite/libgomp.oacc-fortran/lib-32-1.f: New file.
        * testsuite/libgomp.oacc-fortran/lib-32-2.f: Likewise.
 
index 65f47a8c13868bec29f043e8fab4719ee5de6291..7818bd7efad5bf92cdf0836da525a5ef4feb9b2d 100644 (file)
       end interface
 
       interface acc_pcopyin
-        subroutine acc_pcopyin_32_h (a, len)
-          use iso_c_binding, only: c_int32_t
-          !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
-          type (*), dimension (*) :: a
-          integer (c_int32_t) len
-        end subroutine
-
-        subroutine acc_pcopyin_64_h (a, len)
-          use iso_c_binding, only: c_int64_t
-          !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
-          type (*), dimension (*) :: a
-          integer (c_int64_t) len
-        end subroutine
-
-        subroutine acc_pcopyin_array_h (a)
-          type (*), dimension (..), contiguous :: a
-          end subroutine
+        procedure :: acc_present_or_copyin_32_h
+        procedure :: acc_present_or_copyin_64_h
+        procedure :: acc_present_or_copyin_array_h
       end interface
 
       interface acc_create
       end interface
 
       interface acc_pcreate
-        subroutine acc_pcreate_32_h (a, len)
-          use iso_c_binding, only: c_int32_t
-          !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
-          type (*), dimension (*) :: a
-          integer (c_int32_t) len
-        end subroutine
-
-        subroutine acc_pcreate_64_h (a, len)
-          use iso_c_binding, only: c_int64_t
-          !GCC$ ATTRIBUTES NO_ARG_CHECK :: a
-          type (*), dimension (*) :: a
-          integer (c_int64_t) len
-        end subroutine
-
-        subroutine acc_pcreate_array_h (a)
-          type (*), dimension (..), contiguous :: a
-          end subroutine
+        procedure :: acc_present_or_create_32_h
+        procedure :: acc_present_or_create_64_h
+        procedure :: acc_present_or_create_array_h
       end interface
 
       interface acc_copyout
       ! acc_map_data: Only available in C/C++
       ! acc_unmap_data: Only available in C/C++
       ! acc_deviceptr: Only available in C/C++
-      ! acc_ostptr: Only available in C/C++
+      ! acc_hostptr: Only available in C/C++
 
       interface acc_is_present
         function acc_is_present_32_h (a, len)
index 4606d7732ec331caa155db2ccd03f239f2513279..177e4fb6641a5294310e07e28b6e64b80bc50097 100644 (file)
@@ -20,8 +20,8 @@
 
       SHARED_MEM = ACC_IS_PRESENT (H)
 
-      CALL ACC_PRESENT_OR_CREATE (H)
-      IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT
+      CALL ACC_PRESENT_OR_CREATE (H, INT (SIZEOF (H), 4))
+      IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
@@ -48,8 +48,7 @@
          H(I) = I + 4
       END DO
 
-!      CALL ACC_PCREATE (H)
-      CALL ACC_PRESENT_OR_CREATE (H)
+      CALL ACC_PCREATE (H, INT (SIZEOF (H), 4))
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
@@ -63,7 +62,7 @@
          H(I) = I + 6
       END DO
 
-      CALL ACC_PRESENT_OR_COPYIN (H)
+      CALL ACC_PRESENT_OR_COPYIN (H, INT (SIZEOF (H), 8))
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
@@ -77,8 +76,7 @@
          H(I) = I + 8
       END DO
 
-!      CALL ACC_PCOPYIN (H)
-      CALL ACC_PRESENT_OR_COPYIN (H)
+      CALL ACC_PCOPYIN (H, INT (SIZEOF (H), 4))
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
          H(I) = I + 10
       END DO
 
-      CALL ACC_COPYOUT (H)
+      CALL ACC_COPYOUT (H, INT (SIZEOF (H), 4))
       IF (.NOT. SHARED_MEM) THEN
-         IF (ACC_IS_PRESENT (H)) CALL ABORT
+         IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
       ENDIF
 
       DO I = 1, N
          IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) CALL ABORT
       END DO
 
-!      CALL ACC_PCOPYIN (H)
-      CALL ACC_PRESENT_OR_COPYIN (H)
-      IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT
+      CALL ACC_PCOPYIN (H)
+      IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) CALL ABORT
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
          H(I) = I + 12
       END DO
 
-!      CALL ACC_PCOPYIN (H)
-      CALL ACC_PRESENT_OR_COPYIN (H)
+      CALL ACC_PCOPYIN (H, INT (SIZEOF (H), 8))
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
          H(I) = I + 14
       END DO
 
-!      CALL ACC_PCREATE (H)
-      CALL ACC_PRESENT_OR_CREATE (H)
+      CALL ACC_PCREATE (H)
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
          H(I) = I + 16
       END DO
 
-!      CALL ACC_PCREATE (H)
-      CALL ACC_PRESENT_OR_CREATE (H)
+      CALL ACC_PCREATE (H, INT (SIZEOF (H), 8))
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
          H(I) = I + 18
       END DO
 
-      CALL ACC_UPDATE_SELF (H)
-      IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT
+      CALL ACC_UPDATE_SELF (H, INT (SIZEOF (H), 4))
+      IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
 
       DO I = 1, N
          IF (H(I) .NE. I + MERGE (18, 17, SHARED_MEM)) CALL ABORT
 
       CALL ACC_DELETE (H)
       IF (.NOT. SHARED_MEM) THEN
-         IF (ACC_IS_PRESENT (H)) CALL ABORT
+         IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) CALL ABORT
       ENDIF
 
       DEALLOCATE (H)
index 88f55667ab51a96d875871c09f8a68def268cfa1..a08eb8470f77ac5d442a9b2dfee5c79be65b663c 100644 (file)
@@ -20,8 +20,8 @@
 
       SHARED_MEM = ACC_IS_PRESENT (H)
 
-      CALL ACC_PRESENT_OR_CREATE (H)
-      IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT
+      CALL ACC_PRESENT_OR_CREATE (H, INT (SIZEOF (H), 4))
+      IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
@@ -48,7 +48,7 @@
          H(I) = I + 4
       END DO
 
-      CALL ACC_PCREATE (H)
+      CALL ACC_PCREATE (H, INT (SIZEOF (H), 4))
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
@@ -62,7 +62,7 @@
          H(I) = I + 6
       END DO
 
-      CALL ACC_PRESENT_OR_COPYIN (H)
+      CALL ACC_PRESENT_OR_COPYIN (H, INT (SIZEOF (H), 8))
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
@@ -76,7 +76,7 @@
          H(I) = I + 8
       END DO
 
-      CALL ACC_PCOPYIN (H)
+      CALL ACC_PCOPYIN (H, INT (SIZEOF (H), 4))
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
@@ -90,9 +90,9 @@
          H(I) = I + 10
       END DO
 
-      CALL ACC_COPYOUT (H)
+      CALL ACC_COPYOUT (H, INT (SIZEOF (H), 4))
       IF (.NOT. SHARED_MEM) THEN
-         IF (ACC_IS_PRESENT (H)) CALL ABORT
+         IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
       ENDIF
 
       DO I = 1, N
       END DO
 
       CALL ACC_PCOPYIN (H)
-      IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT
+      IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) CALL ABORT
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
          H(I) = I + 12
       END DO
 
-      CALL ACC_PCOPYIN (H)
+      CALL ACC_PCOPYIN (H, INT (SIZEOF (H), 8))
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
          H(I) = I + 16
       END DO
 
-      CALL ACC_PCREATE (H)
+      CALL ACC_PCREATE (H, INT (SIZEOF (H), 8))
 
 !$ACC PARALLEL LOOP DEFAULT (PRESENT)
       DO I = 1, N
          H(I) = I + 18
       END DO
 
-      CALL ACC_UPDATE_SELF (H)
-      IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT
+      CALL ACC_UPDATE_SELF (H, INT (SIZEOF (H), 4))
+      IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
 
       DO I = 1, N
          IF (H(I) .NE. I + MERGE (18, 17, SHARED_MEM)) CALL ABORT
 
       CALL ACC_DELETE (H)
       IF (.NOT. SHARED_MEM) THEN
-         IF (ACC_IS_PRESENT (H)) CALL ABORT
+         IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) CALL ABORT
       ENDIF
 
       DEALLOCATE (H)