From 318686c21a49aa7dbf6d04e510e6e513195256e3 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Wed, 24 May 2017 15:23:55 +0200 Subject: [PATCH] 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 --- libgomp/ChangeLog | 7 ++++ libgomp/openacc_lib.h | 42 ++++--------------- .../testsuite/libgomp.oacc-fortran/lib-32-1.f | 36 +++++++--------- .../testsuite/libgomp.oacc-fortran/lib-32-2.f | 26 ++++++------ 4 files changed, 42 insertions(+), 69 deletions(-) diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index af8c5ca07fc..55869d2bfbc 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,5 +1,12 @@ 2017-05-24 Thomas Schwinge + * 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. diff --git a/libgomp/openacc_lib.h b/libgomp/openacc_lib.h index 65f47a8c138..7818bd7efad 100644 --- a/libgomp/openacc_lib.h +++ b/libgomp/openacc_lib.h @@ -191,23 +191,9 @@ 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 @@ -251,23 +237,9 @@ 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 @@ -353,7 +325,7 @@ ! 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) diff --git a/libgomp/testsuite/libgomp.oacc-fortran/lib-32-1.f b/libgomp/testsuite/libgomp.oacc-fortran/lib-32-1.f index 4606d7732ec..177e4fb6641 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/lib-32-1.f +++ b/libgomp/testsuite/libgomp.oacc-fortran/lib-32-1.f @@ -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 @@ -92,18 +90,17 @@ 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 @@ -117,8 +114,7 @@ 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 @@ -132,8 +128,7 @@ 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 @@ -147,8 +142,7 @@ 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 @@ -162,8 +156,8 @@ 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 @@ -171,7 +165,7 @@ 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) diff --git a/libgomp/testsuite/libgomp.oacc-fortran/lib-32-2.f b/libgomp/testsuite/libgomp.oacc-fortran/lib-32-2.f index 88f55667ab5..a08eb8470f7 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/lib-32-2.f +++ b/libgomp/testsuite/libgomp.oacc-fortran/lib-32-2.f @@ -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 @@ -100,7 +100,7 @@ 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 @@ -114,7 +114,7 @@ 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 @@ -142,7 +142,7 @@ 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 @@ -156,8 +156,8 @@ 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 @@ -165,7 +165,7 @@ 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) -- 2.30.2