! Test for omp_target_memcpy_async without considering dependence objects. program main use omp_lib use iso_c_binding implicit none (external, type) integer :: d, id, i, j integer, target :: q(0:127), q2(0:127) type(c_ptr) :: p integer(omp_depend_kind) :: obj(1:0) d = omp_get_default_device () id = omp_get_initial_device () if (d < 0 .or. d >= omp_get_num_devices ()) & d = id p = omp_target_alloc (130 * c_sizeof (q), d) if (.not. c_associated (p)) & stop 0 ! okay q = [(i, i = 0, 127)] if (omp_target_memcpy_async (p, c_loc (q), 128 * sizeof (q(0)), 0_c_size_t, & 0_c_size_t, d, id, 0, obj) /= 0) & stop 1 !$omp taskwait q2 = [(0, i = 0, 127)] if (omp_target_memcpy_async (c_loc (q2), p, 128 * sizeof (q2(0)), 0_c_size_t,& 0_c_size_t, id, d, 0, obj) /= 0) & stop 2 !$omp taskwait do j = 0, 127 if (q(j) /= q2(j)) & stop 3 end do call omp_target_free (p, d) end program main