Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有可能让一个持久的cuda内核异步运行并与cpu通信吗?_C++_C_Cuda_Gpu_Cpu - Fatal编程技术网

C++ 有可能让一个持久的cuda内核异步运行并与cpu通信吗?

C++ 有可能让一个持久的cuda内核异步运行并与cpu通信吗?,c++,c,cuda,gpu,cpu,C++,C,Cuda,Gpu,Cpu,据我所知,Cuda streams和memorycpyasync需要我们为不同的内核和内存操作标记不同的流,以便使gpu操作与cpu操作并发 但是有可能有一个持久内核吗。这个内核只启动一次,永远循环,检查“一些标志”,看看是否有一段数据来自CPU,然后对其进行操作。当这个“数据块”完成时,GPU设置一个“标志”给CPU,CPU看到它并将数据复制回来。这个内核永远不会完成运行 当前cuda编程模型中是否存在这种情况?我能得到的最接近这个的是什么?是的,有可能。一种方法是使用零拷贝(即GPU映射)主

据我所知,Cuda streams和memorycpyasync需要我们为不同的内核和内存操作标记不同的流,以便使gpu操作与cpu操作并发

但是有可能有一个持久内核吗。这个内核只启动一次,永远循环,检查“一些标志”,看看是否有一段数据来自CPU,然后对其进行操作。当这个“数据块”完成时,GPU设置一个“标志”给CPU,CPU看到它并将数据复制回来。这个内核永远不会完成运行


当前cuda编程模型中是否存在这种情况?我能得到的最接近这个的是什么?

是的,有可能。一种方法是使用零拷贝(即GPU映射)主机内存。主机将其数据放置在映射区域中,GPU在映射区域中进行通信。显然,这需要投票,但这是你的问题所固有的

这为您提供了一个简单测试用例所需的大部分管道

还有一个问题

这提供了一个更复杂、工作更充分的示例

当然,您希望在没有启用超时监视器的环境中执行此操作