请大神们赐教关于两个内核函数的执行问题!

如题!如果我在cpu端先后调用两个内核函数,第二个内核函数要用到第一个内核函数的计算结果,那么我在CPU端依次调用这两个内核函数,第二个内核函数是不是等到第一个内核函数计算结束再开始调用第二个内核函数呢?还是说有其他的时序。在线等!!急急急!

LZ您好:

在同一个stream(包括同在默认stream)里面的连续的两个kernel,是顺序执行的,后者会在前者执行完毕之后启动,并且可以安全地使用前者生成的结果。

祝您好运~

谢谢ice版主!我明白了!还有点小小的疑问就是您上面说的同一个stream是什么意思?

LZ您好,stream是CUDA中的一个概念,如果您启动kernel的时候不添加这个参数,那么都会在默认stream里面运行的,依然是安全的。
如果您指定某个kernel或者memcpy在某个特定的stream里面,那么他们就是在同一个stream里面的。如果不指定,就都在同一个默认stream里面。同一个stream内部是顺序执行的,不同stream之间不保证先后顺序。

stream的具体介绍和用法,您不妨参考下programming guide。

祝您好运~

好的!谢谢版主!

不客气的,欢迎您常来论坛!

祝您编码顺利~