0

デバイスカーネルで呼び出して非同期にしたいthrust::scatter(別のホストスレッドで呼び出すこともできます)。thrust::cuda::par.on(stream)デバイスカーネルから呼び出すことができないホスト関数です。次のコードは、Turing アーキテクチャの CUDA 10.1 で試しました。


__global__ void async_scatter_kernel(float* first,
    float* last,
    int* map,
    float* output)
{
    cudaStream_t stream;
    cudaStreamCreateWithFlags(&stream, cudaStreamNonBlocking);
    thrust::scatter(thrust::cuda::par.on(stream), first, last, map, output);
    cudaDeviceSynchronize();
    cudaStreamDestroy(stream);
}

デバイスから呼び出されたときに、スラストが動的並列処理を使用してカーネルを起動することは知っていますが、ストリームを指定する方法が見つかりませんでした。

4

1 に答える 1