When I am trying to capture stream execution to build CUDA graph, call to thrust::reduce causes a runtime error cudaErrorStreamCaptureUnsupported: operation not permitted when stream is capturing. I have tried returning the reduction result to both host and device variables, and I am calling reduction in a proper stream by the means of thrust::cuda::par.on(stream). Is there any way I can add thrust functions execution to CUDA graphs?
CUDA graph stream capture with thrust::reduce
1.2k Views Asked by Cos_ma At
1
There are 1 best solutions below
Related Questions in CUDA
- direct global memory access using cuda
- Threads syncronization in CUDA
- Merge sort using CUDA: efficient implementation for small input arrays
- why cuda kernel function costs cpu?
- How to detect NVIDIA CUDA Architecture
- What is the optimal way to use additional data fields in functors in Thrust?
- cuda-memcheck fails to detect memory leak in an R package
- Understanding Dynamic Parallelism in CUDA
- C/CUDA: Only every fourth element in CudaArray can be indexed
- NVCC Cuda 5.0 on Ubuntu 12.04 /usr/lib/libudt.so file format not recognized
- Reduce by key on device array
- Does CUDA include a real c++ library?
- cuMemcpyDtoH yields CUDA_ERROR_INVALID_VALUE
- Different Kernels sharing SMx
- How many parallel threads i can run on my nvidia graphic card in cuda programming?
Related Questions in THRUST
- What is the optimal way to use additional data fields in functors in Thrust?
- Reduce by key on device array
- Thrust execution policy issues kernel to default stream
- Copy Part of Data Set to Multiple CUDA GPU's Using Thrust
- How do you build the example CUDA Thrust device sort?
- Initialize struct on different GPUs
- Does thrust copy data if its device_vector is created from iterator?
- Thrust errors upgrading from CUDA 4.0 to 8.0
- Can Thrust::sort/unique handle NaN, Inf?
- CUDA Thrust - Run Length Encoding with run index
- How to use thrust with PyCuda?
- A faster way to compute an array in thrust-cuda
- Using cuda thrust::max_element to find max element in array returns incorrect sometimes
- which function can replace the deprecated function thrust::detail::backend::dereference In thrust 1.7
- Not finding header files while compiling thrust example code
Related Questions in CUDA-STREAMS
- Thrust execution policy issues kernel to default stream
- CUDA streams are blocking despite Async
- How to make multi CUBLAS APIs (eg. cublasDgemm) really execute concurrently in multi cudaStream
- Get rid of busy waiting during asynchronous cuda stream executions
- The behavior of stream 0 (default) and other streams
- What is cuEventRecord guaranteed to do if it gets the default-stream's handle?
- How to reduce CUDA synchronize latency / delay
- What are the new unique-id's for CUDA streams and contexts useful for?
- CUDA cudaMemcpyAsync using single stream to host
- Asynchronous behavior of CUDA events within a CUDA stream
- Using multi streams in cuda graph, the execution order is uncontrolled
- Getting total execution time of all kernels on a CUDA stream
- CUDA graph stream capture with thrust::reduce
- How does the GK110's Hyper-Q enable concurrency of multiple streams?
- CUDA Dynamic Parallelism, bad performance
Related Questions in CUDA-GRAPHS
- CUDA graph does not run as expected
- How can I tell whether a copy-node search failed, or whether my node or graph are invalid?
- What type should be pointed to for the result of cuDeviceGetGraphMemAttribute()?
- What should I set the flags field of CUDA_BATCH_MEM_OP_NODE_PARAMS?
- Catching an exception thrown from a callback in cudaLaunchHostFunc
- CUDA Graph Problem: Results not computed for the first iteration
- Using multi streams in cuda graph, the execution order is uncontrolled
- simple cuda graph example doesn't product expected result
- CUDA graph stream capture with thrust::reduce
- Is changing the device in a CUDA Graph node unavailable?
- cudaGraph: Multi-threaded stream capturing causes errors only when run in cuda-memcheck
- Using a loop in a CUDA graph
- Error with a captured CUDA graph and asynchronous memory allocations in a loop
- Call graphs for CUDA
- How do the nodes in a CUDA graph connect?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Thrust's reduction operation is a blocking operation on the host side. I am assuming that you are using the result of reduction as a parameter to one of your following kernels. So that when you are capturing a CUDA graph, it cannot instantiate the graph executable because you are dependent on a variable that is on the host side but not available until the reduction kernel finishes execution. As a solution, you can try adding a host node to your graph that returns the result of the reduction.