引用 7 楼 yjoe61 的回复: 我想了一下,貌似用device端的kernel还是可以使编程简单不少。如有不妥欢迎指教。 关于stream我是这样理解的:device启动kernel,也可以指定stream。如果不指定stream,就默认使用NULL stream。这个NULL stream是整个block共享的:也就是说这个block启动的所有子kernel都会进入这个stream……
我想了一下,貌似用device端的kernel还是可以使编程简单不少。如有不妥欢迎指教。 关于stream我是这样理解的:device启动kernel,也可以指定stream。如果不指定stream,就默认使用NULL stream。这个NULL stream是整个block共享的:也就是说这个block启动的所有子kernel都会进入这个stream。但是子ker……
一个简单的例子是quicksort。如果不在kernel里调用kernel,那么必须在host做一次synchronization,将上一层的运算结果(比如排序的pivot序号)传回host,然后再在host执行下一层的kernel。如果多个kernel同时运算,这将大大增加host控制的复杂性。总的来说,任何分而治之的算法都有这个问题。 如果能在kernel直接执……
需要3.5或以上的计算能力。 好处还是有的,比如你需要host kernel的每一个thread再调用n个block和thread。这时你不需要把数据传回host再运行kernel,而是可以直接在kernel里运行新的kernel。
CUDA最新的版本可以支持,但是关键是显卡设备需要3.0以上计算能力,一些老显卡可以排除了。而且这种特性对性能和编程复杂度上,我没看出有明显好处。
589
社区成员
2,924
社区内容
加载中
试试用AI创作助手写篇文章吧