DPCT1124
目次
DPCT1124#
メッセージ#
<API 名> は非同期 memcpy API に移行されます。元の API は同期的である可能性がありますが、オペランドのメモリーのタイプに依存することから、同期動作を確実にするため memcpy API のイベントの戻り時に wait() を呼び出す必要がある場合があります。
詳細な説明#
一部の CUDA* 非同期 API は、ホストと同期している可能性があります。たとえば、非同期 memcpy API は、デバイスメモリーとページング可能なホストメモリー間とのデータ転送、ホストメモリー間とのデータ転送、固定メモリーを含むデータ転送の 3 つのケースで同期される可能性があります。
修正方法の提案#
例えば、以下のオリジナル CUDA* コードについて考えてみます。
1 cudaMemcpyAsync(host_dst, host_src, size, cudaMemcpyHostToHost);
このコードは、以下の SYCL* コードに移行されます。
1 /*
2 DPCT1124:0: cudaMemcpyAsync is migrated to asynchronous memcpy API.While the
3 origin API might be synchronous, it depends on the type of operand memory, so
4 you may need to call wait() on event return by memcpy API to ensure
5 synchronization behavior.
6 */
7 dpct::get_in_order_queue().memcpy(host_dst, host_src, size);
上記は次のように書き換える必要があります。
1 dpct::get_in_order_queue().memcpy(host_dst, host_src, size).wait();