配置并发CUDA内核

配置并发CUDA内核,cuda,Cuda,我对获取并发cuda内核的内存性能计数器感兴趣。我尝试使用几个nvprof选项,比如,--metrics all和--print gpu trace。输出似乎表明内核不再是并发的。每个内核的并发性能指标看起来几乎与单独运行每个内核的性能指标完全相同。我认为这些并发内核是按顺序运行的。如何获取并发内核(例如二级缓存)的内存性能度量计数器?当内核并发执行时,您不能进行每个内核的评测。但是,您可以尝试以下解决方法: 只进行跟踪。如果未指定--度量值或--事件,nvprof将只执行跟踪运行。在这种情况下

我对获取并发cuda内核的内存性能计数器感兴趣。我尝试使用几个nvprof选项,比如,
--metrics all
--print gpu trace
。输出似乎表明内核不再是并发的。每个内核的并发性能指标看起来几乎与单独运行每个内核的性能指标完全相同。我认为这些并发内核是按顺序运行的。如何获取并发内核(例如二级缓存)的内存性能度量计数器?

当内核并发执行时,您不能进行每个内核的评测。但是,您可以尝试以下解决方法:

  • 只进行跟踪。如果未指定
    --度量值
    --事件
    ,nvprof将只执行跟踪运行。在这种情况下,nvprof将同时运行内核,但您将只获得内核计时,而不是度量/事件数据
  • 如果您拥有NVIDIA Tesla GPU(与GeForce或Quadro相反),则可以使用的
    CuptietteventCollectionMode(CUPTI_事件_收集_模式_CONTINUOUS)
    API在内核同时运行时对所需指标进行采样。但是,这只允许您在该采样间隔内获取聚合度量/事件数据,这意味着您将无法将此数据与单个内核关联。CUPTI附带了一个名为
    事件\u采样
    的代码示例,该示例演示了如何使用此API
  • 配置所需的度量/事件,并让内核序列化。对于某些度量/事件,您可以简单地汇总值,以估计并发执行期间的行为

  • 请参阅“当您尝试使用nvprof评测度量或事件时,应用程序中的所有并发内核都是序列化的”,因此目前限制为
    nvprof
    。@RobertCrovella谢谢您,Robert。有什么方法可以获得并发内核的性能指标吗?我不知道有什么方法。另外,在“指标和事件”下的文档中也提到了这一点。诚然,这是关于远程分析的一节,但即使在普通情况下,这句话也是正确的。