DPCT1097#

Message#

The function <backward function name> may require the workspace used to save intermediate results from function <forward function name>. By default, a workspace from engine_ext is selected according to the source data pointer, but this may be incorrect and cause a workspace data race. You may need to rewrite this code.

Detailed Help#

You can manually pass a dnnl::memory object generated from the forward function to the backward function.

For example, this original CUDA* code:

1  cudnnLRNCrossChannelForward(handle, ...);
2  ...
3  cudnnLRNCrossChannelBackward(handle, ...);

results in the following migrated SYCL* code:

1  handle.lrn_forward(...);
2  ...
3  handle.lrn_backward(...);

which is manually adjusted to:

1  dnnl::memory workspace;
2  handle.lrn_forward(..., &workspace);
3  ...
4  handle.lrn_backward(..., &workspace);

Suggestions to Fix#

You may need to adjust the original code.