【发布时间】:2016-07-04 23:24:50
【问题描述】:
我有一个应该在 6 个 GPU 设备上运行的多线程程序。 我想在每个设备上打开 6 个流以在我的程序生命周期内重复使用(总共 36 个)。
我正在使用 cudaStreamCreate() cublasCreate() cublasSetStream() 来创建每个流和句柄。 我还使用 GPU 内存监视器来查看每个句柄的内存使用情况。 但是,当我查看每个设备上的 GPU 内存使用情况时,它只会在第一次创建流时增长,并且在我创建的其余流中没有变化。
据我所知,我想使用的流的数量没有任何限制。 但我无法弄清楚为什么句柄和流的内存使用量没有显示在 GPU 内存使用量上。
【问题讨论】:
-
在每个设备上创建第一个流可能是初始化该设备的 CUDA 上下文。这将涉及大量/显着的内存使用量。每个设备上的额外流创建不涉及此上下文初始化,因此相比之下额外的内存使用量很小(或为零)。
标签: multithreading cuda gpu