【发布时间】:2018-10-12 03:45:23
【问题描述】:
CUDA graphs 是一种从多个操作中综合复杂操作的新方法。使用“流捕获”,您似乎可以运行多种操作,包括 CuBlas 和类似的库操作,并将它们捕获为单个“元内核”。
我不清楚这些图表的数据流是如何工作的。在捕获阶段,我为输入分配内存 A,为临时值分配内存 B,为输出分配内存 C。但是当我在图表中捕获它时,我没有捕获内存分配。因此,当我随后实例化这些图的多个副本时,它们无法共享输入内存 A、临时工作空间 B 或输出内存 C。
那么这是如何工作的呢? IE。当我调用cudaGraphLaunch 时,我看不到提供输入参数的方法。我捕获的图表基本上以cudaMemcpyHostToDevice 开头,图表如何知道要复制哪个主机内存以及放在哪里?
背景:我发现 CUDA 在内核启动时存在严重瓶颈;移植到 CUDA 时,我的 AVX2 代码慢了 13 倍。内核本身看起来不错(根据 NSight),这只是调度数十万个内核启动的开销。
【问题讨论】: