0
我从头创建了CUDA的扫描算法,并尝试将其用于小于80,000字节的较小数据量。内核调用CUDA上的流延迟
创建了两个单独的实例,其中一个在可能的情况下使用流运行内核,另一个只在默认流中运行。
我观察到的是,对于这个数据大小范围,与其他方法相比,运行流需要更长的时间来完成任务。
当使用nvprofiler分析,什么观察到的是,对数据大小较小的量,在数据流上运行将不会单独kernals
但是当数据大小增加时,某种并行性可能是ob tained
我的问题是,是否有一些额外的参数,以减少这个内核调用时间延迟或者是正常的,有这种更小的数据大小的行为,其中使用流是不利的
UPDATE:
我已经包括了运行时API调用的时间表,以及明确的答案
这就是我所怀疑的。仍然从时间线上我可以看到第二个内核的cudaLaunch API调用在第一个内核的执行结束之前结束。因此技术上仍然可以在第一个内核完成之前运行第二个内核。我希望是否有可能将API cudaLaunch时间缩短到实际的内核执行时间。但我认为,正如你所提到的,这个启动时间对于执行时间来说是相当高的,因为数据量很小 而你在CPU数据量较低的情况下胜过GPU的事实是正确的。谢谢 – BAdhi