一个GPU设备中的多个流

时间:2016-07-04 14:42:45

标签: multithreading cuda gpu

我有一个多线程程序,应该在6个GPU设备上运行。 我希望在每个设备上打开6个流,以便在我的程序生命周期内重复使用(总共36个)。

我正在使用cudaStreamCreate()cublasCreate()cublasSetStream()来创建每个流和句柄。 我还使用GPU内存监视器来查看每个句柄的内存使用情况。 但是,当我查看每个设备上的GPU内存使用情况时,它仅在第一个流创建时增长,并且在我创建的其余流中不会改变。

据我所知,我想要使用的流量没有任何限制。 但我无法弄清楚为什么句柄和流的内存使用量没有显示在GPU内存使用上。

1 个答案:

答案 0 :(得分:2)

您创建的所有流都驻留在给定设备上的单个上下文中,因此在第一个流之后创建其他流不会产生与上下文相关的开销。流本身是轻量级的,并且(主要)是主机端调度程序抽象。正如您所观察到的,它们本身并不消耗很多(如果有的话)设备内存。