0

我是论坛的新手,希望你能帮助我解决我的问题。最近,我开发了一个应用程序,其中我使用了 CUDA 流,目的是重叠计算和数据传输。我已经在 GPU Nvidia(Maxwell 架构)上执行了这个应用程序。我使用 Visual Profiler 工具观察到一些数据传输 HostToDevice 同时发生。Maxwell GPU 只有 2 个复制引擎。一个复制引擎用于 HostToDevice 传输,另一个复制引擎用于 DeviceToHost 传输,对吧?考虑到这一点,我认为两个 HostToDevice 传输不能同时发生。但是,我使用 Visual Profiler 观察到此行为出现在我的应用程序中。所以,我的问题是:在这个架构中,

太感谢了。

4

1 回答 1

4

所以,我的问题是:在这个架构中,是否有可能同时发生两个 HostToDevice(或 DeviceToHost)数据传输?

不,这是不可能的。

在同一方向上同时发生 2 次传输是不可能的。这可以说是基于 PCI Express,与 CUDA 没有任何关系。当 PCI Express 事务在给定方向上进行时,该方向上不会发生其他事务。要么你误解了视觉分析器的输出,要么视觉分析器有某种错误。

通过将鼠标悬停在可视化分析器中的特定交易上,您可以在可视化分析器显示右侧的窗口中获得有关它的更多详细信息。这个附加信息应该包括每个事务的开始和结束时间(以及以字节为单位的大小等)。我将从那里开始,看看视觉分析器是否认为它们在同一个方向上并且具有相同的开始时间。

于 2015-01-16T12:57:07.753 回答