分析我的解决方案,我看到了内存传输和内核计算之间的依赖关系。对于60Mb的数据传输,每个重叠的内核计算都有2ms的开销。
我计算我的基本解决方案和增强的解决方案(重叠)以查看差异。它们使用相同的内核(不依赖于数据值)处理相同数量的数据。
所以我错了或遗漏某些地方,或者重叠是否确实使用了重要的" GPU的一部分?
我认为重叠过程必须对数据传输进行排序并控制其问题,您可以添加上下文切换。但与2毫秒相比似乎太多了?
答案 0 :(得分:1)
当您将数据副本与计算机重叠时,两个操作都在争夺GPU内存带宽。如果你的内核绑定了内存带宽,那么重叠操作可能会导致计算和内存副本运行的时间比单独运行的时间长。
如果没有争用,PCIE Gen2链路上的60兆字节数据将花费大约10毫秒的时间。当存在争用时额外的2ms对我来说不会超出范围,但它将在很大程度上取决于您正在使用的GPU。它还不清楚"开销"您指的是传输长度,内核计算或整个程序的扩展。不同的GPU具有不同的GPU内存带宽数。