Skip to content
Snippets Groups Projects

Variant of copy for 2d dpsp

Merged Dylan Kierans requested to merge feature-copy2d-dpsp into master
1 file
+ 31
0
Compare changes
  • Side-by-side
  • Inline
+ 31
0
@@ -165,6 +165,7 @@ MODULE mo_fortran_tools
MODULE PROCEDURE copy_3d_sp
MODULE PROCEDURE copy_4d_sp
MODULE PROCEDURE copy_5d_sp
MODULE PROCEDURE copy_2d_dpsp
MODULE PROCEDURE copy_3d_dpsp
MODULE PROCEDURE copy_2d_spdp
MODULE PROCEDURE copy_3d_spdp
@@ -848,6 +849,36 @@ CONTAINS
CALL acc_wait_if_requested(1, opt_acc_async)
END SUBROUTINE copy_5d_sp
!> copy state, omp parallel, does not wait for other threads to complete
SUBROUTINE copy_2d_dpsp(src, dest, lacc, opt_acc_async)
REAL(dp), INTENT(IN) :: src(:, :)
REAL(sp), INTENT(OUT) :: dest(:, :)
LOGICAL, INTENT(IN) :: lacc
LOGICAL, INTENT(IN), OPTIONAL :: opt_acc_async
INTEGER :: i1, i2, m1, m2
LOGICAL :: lzacc
CALL set_acc_host_or_device(lzacc, lacc)
m1 = SIZE(dest, 1)
m2 = SIZE(dest, 2)
!$ACC PARALLEL LOOP DEFAULT(PRESENT) ASYNC(1) COLLAPSE(3) IF(lzacc)
#if (defined(__INTEL_COMPILER))
!$omp do private(i1,i2)
#else
!$omp do collapse(2)
#endif
DO i2 = 1, m2
DO i1 = 1, m1
dest(i1, i2) = REAL(src(i1, i2), KIND=sp)
END DO
END DO
!$omp end do nowait
CALL acc_wait_if_requested(1, opt_acc_async)
END SUBROUTINE copy_2d_dpsp
!> copy state, omp parallel, does not wait for other threads to complete
SUBROUTINE copy_3d_dpsp(src, dest, lacc, opt_acc_async)
REAL(dp), INTENT(IN) :: src(:, :, :)
Loading