DPCT1097

メッセージ

関数 <backward function name> には、関数 <forward function name> からの中間結果を保存するためにワークスペースが必要になる場合があります。デフォルトでは、engine_ext のワークスペースがソースデータのポインターに従って選択されますが、これは正しくない可能性があり、ワークスペースのデータ競合を引き起こす可能性があります。コードを修正する必要があります。

説明

フォワード関数で生成された dnnl::memory オブジェクトを、バックエンド関数に手動で渡すことができます。

例えば、以下のオリジナル CUDA* コードについて考えてみます。


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

このコードは、以下の SYCL* コードに移行されます。


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

このコードを以下のように手動で調整します。


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

修正方法の提案

オリジナルコードを調整する必要があります。