【发布时间】:2014-12-24 08:51:14
【问题描述】:
我想将数据从主机复制到设备并并行运行一些内核。关于运行 cublasSetMatrixAsync 函数调用是否会阻塞默认流,似乎存在相互矛盾的信息?
我看到它阻止了执行,我想知道使用它的正确方法是什么。 cublasSetMatrixAsync 应该在非默认流上吗?如果是这样,如果默认流将来需要设备上的矩阵用于某些内核,是否有一种简单的方法可以阻止默认流?
【问题讨论】:
-
您能否指出您认为有冲突的 NVIDIA 文档的相关部分?
-
一个或多或少有根据的猜测是,它会显示与普通 CUDA memcopy 函数相同的行为,因为我很确定在内部,CUBLAS 函数只是使用普通的 CUDA 函数。后者的行为在developer.download.nvidia.com/compute/cuda/4_1/rel/toolkit/docs/… 中有详细解释(不幸的是,这个概述部分似乎不再包含在最近的文档中......)
-
@njuffa 我在看 pg。 Cheng, Grossman & Mckercher 在“专业 CUDA 编程”中排名第 269。作者说“如果你想重叠不同的 CUDA 操作,你必须使用非空流。”但后来在该页面上建议 cudaMemcpyAsync 可能可用于默认流。
-
@Marco13 感谢您的链接。这很有趣,但似乎没有涵盖与流的关系。
标签: asynchronous cuda