我是论坛的新手,我希望你能帮我回答我的问题。最近,我开发了一个应用程序,其中我使用了CUDA streams,目的是重叠计算和数据传输。我已经在GPU Nvidia (Maxwell架构)上执行了这个应用程序。我用Visual Profiler工具观察到一些数据传输HostToDevice是同时发生的。Maxwell GPU只有2个复制引擎。一个复制引擎用于HostToDevice传输,另一个复制引擎用于DeviceToHost传输,对吧?考虑到这一点,我认为两个HostToDevice传输不能同时发生。然而,我用Visual Profiler观察到,这种行为出现在我的应用程序中。因此,我的问题是:在此体系结构中,是否有可能同时进行两个HostToDevice (或DeviceToHost)数据传输?
非常感谢。
发布于 2015-01-16 20:57:08
所以,我的问题是:在这个体系结构中,是否可能同时发生两个HostToDevice (或DeviceToHost)数据传输?
不,这不可能。
两次传输不可能同时在同一方向上发生。这可以说是基于PCI express的,与CUDA没有任何关系。当PCI express事务在给定方向上进行时,不能在该方向上发生其它事务。要么你曲解了visual profiler的输出,要么visual profiler有某种bug。
通过将鼠标悬停在可视探查器中的特定事务上,可以在可视探查器显示右侧的窗口中获取有关该事务的其他详细信息。此附加信息应包括每个事务的开始和结束时间(以及以字节为单位的大小等)。我会从这里开始,看看visual profiler是否认为它们在相同的方向上,并且具有相同的开始时间。
https://stackoverflow.com/questions/27979487
复制相似问题