DPCT1097
目次
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);
修正方法の提案
オリジナルコードを調整する必要があります。