1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
Index: ectrans-1.5.0/src/trans/gpu/algor/ext_acc.F90
===================================================================
--- ectrans-1.5.0.orig/src/trans/gpu/algor/ext_acc.F90
+++ ectrans-1.5.0/src/trans/gpu/algor/ext_acc.F90
@@ -17,7 +17,7 @@ module openacc_ext_type
end type
end module
module openacc_ext
- use iso_c_binding, only: c_ptr, c_size_t, c_loc
+ use iso_c_binding, only: c_ptr, c_size_t, c_loc, c_f_pointer
use openacc, only: acc_create, acc_copyin, acc_handle_kind
use openacc_ext_type, only: ext_acc_arr_desc
implicit none
@@ -32,14 +32,15 @@ module openacc_ext
end type
interface ext_acc_pass
- module procedure ext_acc_pass_2d_r4, ext_acc_pass_3d_r4, ext_acc_pass_4d_r4, ext_acc_pass_2d_r8, ext_acc_pass_3d_r8, ext_acc_pass_4d_r8
+ module procedure ext_acc_pass_2d_r4, ext_acc_pass_3d_r4, ext_acc_pass_4d_r4, ext_acc_pass_2d_r8, ext_acc_pass_3d_r8, &
+ & ext_acc_pass_4d_r8
end interface
contains
function ext_acc_pass_2d_r4(arr) result(ret)
implicit none
type(ext_acc_arr_desc) :: ret
- real(4), intent(in) :: arr(:,:)
+ real(4), intent(in), target :: arr(:,:)
type(c_ptr) :: ptr1, ptr2
integer(c_size_t) :: ptr1_v, ptr2_v
@@ -63,7 +64,7 @@ contains
function ext_acc_pass_3d_r4(arr) result(ret)
implicit none
type(ext_acc_arr_desc) :: ret
- real(4), intent(in) :: arr(:,:,:)
+ real(4), intent(in), target :: arr(:,:,:)
type(c_ptr) :: ptr1, ptr2
integer(c_size_t) :: ptr1_v, ptr2_v
@@ -87,7 +88,7 @@ contains
function ext_acc_pass_4d_r4(arr) result(ret)
implicit none
type(ext_acc_arr_desc) :: ret
- real(4), intent(in) :: arr(:,:,:,:)
+ real(4), intent(in), target :: arr(:,:,:,:)
type(c_ptr) :: ptr1, ptr2
integer(c_size_t) :: ptr1_v, ptr2_v
@@ -111,7 +112,7 @@ contains
function ext_acc_pass_2d_r8(arr) result(ret)
implicit none
type(ext_acc_arr_desc) :: ret
- real(8), intent(in) :: arr(:,:)
+ real(8), intent(in), target :: arr(:,:)
type(c_ptr) :: ptr1, ptr2
integer(c_size_t) :: ptr1_v, ptr2_v
@@ -135,7 +136,7 @@ contains
function ext_acc_pass_3d_r8(arr) result(ret)
implicit none
type(ext_acc_arr_desc) :: ret
- real(8), intent(in) :: arr(:,:,:)
+ real(8), intent(in), target :: arr(:,:,:)
type(c_ptr) :: ptr1, ptr2
integer(c_size_t) :: ptr1_v, ptr2_v
@@ -159,7 +160,7 @@ contains
function ext_acc_pass_4d_r8(arr) result(ret)
implicit none
type(ext_acc_arr_desc) :: ret
- real(8), intent(in) :: arr(:,:,:,:)
+ real(8), intent(in), target :: arr(:,:,:,:)
type(c_ptr) :: ptr1, ptr2
integer(c_size_t) :: ptr1_v, ptr2_v
@@ -275,6 +276,7 @@ contains
end subroutine
subroutine ext_acc_copyin(ptrs, stream)
use openacc, only: acc_async_sync
+ use iso_c_binding, only: c_f_pointer
implicit none
type(ext_acc_arr_desc), intent(in) :: ptrs(:)
integer(acc_handle_kind), optional :: stream
@@ -302,6 +304,7 @@ contains
end subroutine
subroutine ext_acc_copyout(ptrs, stream)
use openacc, only: acc_async_sync, acc_copyout
+ use iso_c_binding
implicit none
type(ext_acc_arr_desc), intent(in) :: ptrs(:)
integer(acc_handle_kind), optional :: stream
|