Commit 318686c2 by Thomas Schwinge Committed by Thomas Schwinge

Fortran OpenACC "openacc_lib.h": acc_pcopyin, acc_pcreate

	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
parent a6745534
2017-05-24 Thomas Schwinge <thomas@codesourcery.com> 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-1.f: New file.
* testsuite/libgomp.oacc-fortran/lib-32-2.f: Likewise. * testsuite/libgomp.oacc-fortran/lib-32-2.f: Likewise.
......
...@@ -191,23 +191,9 @@ ...@@ -191,23 +191,9 @@
end interface end interface
interface acc_pcopyin interface acc_pcopyin
subroutine acc_pcopyin_32_h (a, len) procedure :: acc_present_or_copyin_32_h
use iso_c_binding, only: c_int32_t procedure :: acc_present_or_copyin_64_h
!GCC$ ATTRIBUTES NO_ARG_CHECK :: a procedure :: acc_present_or_copyin_array_h
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
end interface end interface
interface acc_create interface acc_create
...@@ -251,23 +237,9 @@ ...@@ -251,23 +237,9 @@
end interface end interface
interface acc_pcreate interface acc_pcreate
subroutine acc_pcreate_32_h (a, len) procedure :: acc_present_or_create_32_h
use iso_c_binding, only: c_int32_t procedure :: acc_present_or_create_64_h
!GCC$ ATTRIBUTES NO_ARG_CHECK :: a procedure :: acc_present_or_create_array_h
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
end interface end interface
interface acc_copyout interface acc_copyout
...@@ -353,7 +325,7 @@ ...@@ -353,7 +325,7 @@
! acc_map_data: Only available in C/C++ ! acc_map_data: Only available in C/C++
! acc_unmap_data: Only available in C/C++ ! acc_unmap_data: Only available in C/C++
! acc_deviceptr: 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 interface acc_is_present
function acc_is_present_32_h (a, len) function acc_is_present_32_h (a, len)
......
...@@ -20,8 +20,8 @@ ...@@ -20,8 +20,8 @@
SHARED_MEM = ACC_IS_PRESENT (H) SHARED_MEM = ACC_IS_PRESENT (H)
CALL ACC_PRESENT_OR_CREATE (H) CALL ACC_PRESENT_OR_CREATE (H, INT (SIZEOF (H), 4))
IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -48,8 +48,7 @@ ...@@ -48,8 +48,7 @@
H(I) = I + 4 H(I) = I + 4
END DO END DO
! CALL ACC_PCREATE (H) CALL ACC_PCREATE (H, INT (SIZEOF (H), 4))
CALL ACC_PRESENT_OR_CREATE (H)
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -63,7 +62,7 @@ ...@@ -63,7 +62,7 @@
H(I) = I + 6 H(I) = I + 6
END DO END DO
CALL ACC_PRESENT_OR_COPYIN (H) CALL ACC_PRESENT_OR_COPYIN (H, INT (SIZEOF (H), 8))
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -77,8 +76,7 @@ ...@@ -77,8 +76,7 @@
H(I) = I + 8 H(I) = I + 8
END DO END DO
! CALL ACC_PCOPYIN (H) CALL ACC_PCOPYIN (H, INT (SIZEOF (H), 4))
CALL ACC_PRESENT_OR_COPYIN (H)
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -92,18 +90,17 @@ ...@@ -92,18 +90,17 @@
H(I) = I + 10 H(I) = I + 10
END DO END DO
CALL ACC_COPYOUT (H) CALL ACC_COPYOUT (H, INT (SIZEOF (H), 4))
IF (.NOT. SHARED_MEM) THEN IF (.NOT. SHARED_MEM) THEN
IF (ACC_IS_PRESENT (H)) CALL ABORT IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
ENDIF ENDIF
DO I = 1, N DO I = 1, N
IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) CALL ABORT IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) CALL ABORT
END DO END DO
! CALL ACC_PCOPYIN (H) CALL ACC_PCOPYIN (H)
CALL ACC_PRESENT_OR_COPYIN (H) IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) CALL ABORT
IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -117,8 +114,7 @@ ...@@ -117,8 +114,7 @@
H(I) = I + 12 H(I) = I + 12
END DO END DO
! CALL ACC_PCOPYIN (H) CALL ACC_PCOPYIN (H, INT (SIZEOF (H), 8))
CALL ACC_PRESENT_OR_COPYIN (H)
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -132,8 +128,7 @@ ...@@ -132,8 +128,7 @@
H(I) = I + 14 H(I) = I + 14
END DO END DO
! CALL ACC_PCREATE (H) CALL ACC_PCREATE (H)
CALL ACC_PRESENT_OR_CREATE (H)
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -147,8 +142,7 @@ ...@@ -147,8 +142,7 @@
H(I) = I + 16 H(I) = I + 16
END DO END DO
! CALL ACC_PCREATE (H) CALL ACC_PCREATE (H, INT (SIZEOF (H), 8))
CALL ACC_PRESENT_OR_CREATE (H)
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -162,8 +156,8 @@ ...@@ -162,8 +156,8 @@
H(I) = I + 18 H(I) = I + 18
END DO END DO
CALL ACC_UPDATE_SELF (H) CALL ACC_UPDATE_SELF (H, INT (SIZEOF (H), 4))
IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
DO I = 1, N DO I = 1, N
IF (H(I) .NE. I + MERGE (18, 17, SHARED_MEM)) CALL ABORT IF (H(I) .NE. I + MERGE (18, 17, SHARED_MEM)) CALL ABORT
...@@ -171,7 +165,7 @@ ...@@ -171,7 +165,7 @@
CALL ACC_DELETE (H) CALL ACC_DELETE (H)
IF (.NOT. SHARED_MEM) THEN IF (.NOT. SHARED_MEM) THEN
IF (ACC_IS_PRESENT (H)) CALL ABORT IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) CALL ABORT
ENDIF ENDIF
DEALLOCATE (H) DEALLOCATE (H)
......
...@@ -20,8 +20,8 @@ ...@@ -20,8 +20,8 @@
SHARED_MEM = ACC_IS_PRESENT (H) SHARED_MEM = ACC_IS_PRESENT (H)
CALL ACC_PRESENT_OR_CREATE (H) CALL ACC_PRESENT_OR_CREATE (H, INT (SIZEOF (H), 4))
IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
H(I) = I + 4 H(I) = I + 4
END DO END DO
CALL ACC_PCREATE (H) CALL ACC_PCREATE (H, INT (SIZEOF (H), 4))
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
H(I) = I + 6 H(I) = I + 6
END DO END DO
CALL ACC_PRESENT_OR_COPYIN (H) CALL ACC_PRESENT_OR_COPYIN (H, INT (SIZEOF (H), 8))
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
H(I) = I + 8 H(I) = I + 8
END DO END DO
CALL ACC_PCOPYIN (H) CALL ACC_PCOPYIN (H, INT (SIZEOF (H), 4))
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -90,9 +90,9 @@ ...@@ -90,9 +90,9 @@
H(I) = I + 10 H(I) = I + 10
END DO END DO
CALL ACC_COPYOUT (H) CALL ACC_COPYOUT (H, INT (SIZEOF (H), 4))
IF (.NOT. SHARED_MEM) THEN IF (.NOT. SHARED_MEM) THEN
IF (ACC_IS_PRESENT (H)) CALL ABORT IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
ENDIF ENDIF
DO I = 1, N DO I = 1, N
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
END DO END DO
CALL ACC_PCOPYIN (H) 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) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -114,7 +114,7 @@ ...@@ -114,7 +114,7 @@
H(I) = I + 12 H(I) = I + 12
END DO END DO
CALL ACC_PCOPYIN (H) CALL ACC_PCOPYIN (H, INT (SIZEOF (H), 8))
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -142,7 +142,7 @@ ...@@ -142,7 +142,7 @@
H(I) = I + 16 H(I) = I + 16
END DO END DO
CALL ACC_PCREATE (H) CALL ACC_PCREATE (H, INT (SIZEOF (H), 8))
!$ACC PARALLEL LOOP DEFAULT (PRESENT) !$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N DO I = 1, N
...@@ -156,8 +156,8 @@ ...@@ -156,8 +156,8 @@
H(I) = I + 18 H(I) = I + 18
END DO END DO
CALL ACC_UPDATE_SELF (H) CALL ACC_UPDATE_SELF (H, INT (SIZEOF (H), 4))
IF (.NOT. ACC_IS_PRESENT (H)) CALL ABORT IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
DO I = 1, N DO I = 1, N
IF (H(I) .NE. I + MERGE (18, 17, SHARED_MEM)) CALL ABORT IF (H(I) .NE. I + MERGE (18, 17, SHARED_MEM)) CALL ABORT
...@@ -165,7 +165,7 @@ ...@@ -165,7 +165,7 @@
CALL ACC_DELETE (H) CALL ACC_DELETE (H)
IF (.NOT. SHARED_MEM) THEN IF (.NOT. SHARED_MEM) THEN
IF (ACC_IS_PRESENT (H)) CALL ABORT IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) CALL ABORT
ENDIF ENDIF
DEALLOCATE (H) DEALLOCATE (H)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment