本文备注/经验分享:
动态并行时候的, 设备端使用的stream.我们常用的stream是指Host上的, 但动态并行的时候, 因为CUDA和OpenCL相反, 设备端的流总是顺序的,也就是同一个流里面的...kernel总是串行执行的,所以如果需要在设备端, 通过动态并行启动多个能同时执行的kernel, 则必须在设备端使用多流.这也是论坛上面, 为何很多"我只想使用同一个流, 却需要让里面的多个kernel...再说一下动态并行的时候, 设备端使用的stream和host端的主要区别.这个区别主要体现在创建, 使用, 和同步上....的一个子集.像是流查询, 流同步之类的函数(cudaStreamQuery/Synchronize)都不能使用,因为动态并行的CUDA Runtime, 是一个简化版本,就没有这些东西。...因为试图使用这些设备端的动态并行时候, 超出使用范围的API, 编译的时候都会报错.不过虽然只是简化版本的, 但对于动态并行的时候, 一般也够用了(不够用你可以考虑传统的从Host上启动kernel嘛!