DPCT1078
目次
DPCT1078#
メッセージ#
強力なメモリー順序制限が必要な場合は、正当性のため、memory_order::acq_rel
を memory_order::seq_cst
に置き換えることを検討してください。
詳細な説明#
memory_order::acq_rel
は、ほとんどのプログラムにおいてメモリーを同期するのに役立つ軽量のフェンスです。正当性を保証するため、プログラムが逐次一貫性のあるメモリー順序を必要とする場合は、memory_order::acq_rel
を memory_order::seq_cst
に置き換えます。
修正方法の提案#
より厳密なメモリーの順序付けが必要な場合、memory_order::acq_rel
を memory_order::seq_cst
に置き換えます。
例えば、以下のオリジナル CUDA* コードについて考えてみます。
1 __device__ void foo_dev() {
2 ...
3 __threadfence();
4 ...
5 }
このコードは、以下の SYCL* コードに移行されます。
1 void foo_dev() {
2 ...
3 /*
4 DPCT1078:0: Consider replacing memory_order::acq_rel with
5 memory_order::seq_cst for correctness if strong memory order restrictions are
6 needed.
7 */
8 sycl::atomic_fence(sycl::memory_order::acq_rel, sycl::memory_scope::device);
9 ...
10 }
このコードは次のように書き換えられます。
1 void foo_dev() {
2 ...
3 // Assuming strong memory order restrictions are need here
4 sycl::atomic_fence(sycl::memory_order::seq_cst, sycl::memory_scope::device);
5 ...
6 }