diff --git a/CHANGELOG.md b/CHANGELOG.md index d6d05701132..d8d37ac2278 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -114,8 +114,8 @@ In addition, this release completes implementation of `dpnp.fft` module and adds * Resolved an issue with input array of `usm_ndarray` passed into `dpnp.ix_` [#2047](https://github.com/IntelPython/dpnp/pull/2047) * Added a workaround to prevent crash in tests on Windows in internal CI/CD (when running on either Lunar Lake or Arrow Lake) [#2062](https://github.com/IntelPython/dpnp/pull/2062) * Fixed a crash in `dpnp.choose` caused by missing control of releasing temporary allocated device memory [#2063](https://github.com/IntelPython/dpnp/pull/2063) -* Resolve compilation warning and error while building in debug mode [#2066](https://github.com/IntelPython/dpnp/pull/2066) - +* Resolved compilation warning and error while building in debug mode [#2066](https://github.com/IntelPython/dpnp/pull/2066) +* Fixed an issue with asynchronous execution in `dpnp.fft` module [#2067](https://github.com/IntelPython/dpnp/pull/2067) ## [0.15.0] - 05/25/2024 diff --git a/dpnp/fft/dpnp_utils_fft.py b/dpnp/fft/dpnp_utils_fft.py index b996890a703..b4498e0708e 100644 --- a/dpnp/fft/dpnp_utils_fft.py +++ b/dpnp/fft/dpnp_utils_fft.py @@ -264,6 +264,8 @@ def _copy_array(x, complex_input): dtype = x.dtype if numpy.min(x.strides) < 0: # negative stride is not allowed in OneMKL FFT + # TODO: support for negative strides will be added in the future + # versions of OneMKL, see discussion in MKLD-17597 copy_flag = True elif complex_input and not dpnp.issubdtype(dtype, dpnp.complexfloating): # c2c/c2r FFT, if input is not complex, convert to complex @@ -443,8 +445,6 @@ def _truncate_or_pad(a, shape, axes): else: # zero-padding exec_q = a.sycl_queue - _manager = dpu.SequentialOrderManager[exec_q] - dep_evs = _manager.submitted_events index[axis] = slice(0, a_shape[axis]) # orig shape a_shape[axis] = s # modified shape order = "F" if a.flags.fnc else "C" @@ -455,6 +455,8 @@ def _truncate_or_pad(a, shape, axes): usm_type=a.usm_type, sycl_queue=exec_q, ) + _manager = dpu.SequentialOrderManager[exec_q] + dep_evs = _manager.submitted_events ht_copy_ev, copy_ev = ti._copy_usm_ndarray_into_usm_ndarray( src=dpnp.get_usm_ndarray(a), dst=z.get_array()[tuple(index)],