2017-08-25 84 views
0

我有兴趣获得并发cuda内核的内存性能计数器。我试图使用几个nvprof选项,如--metrics all--print-gpu-trace。输出似乎表明内核不再是并发的。每个内核的并发性能指标与单独运行每个内核的指标几乎完全相同。我认为这些并发内核按顺序运行。我怎么能得到并发内核的内存性能指标计数器,例如L2缓存?配置文件并发CUDA内核

+0

见[这里](https://devtalk.nvidia.com/default/topic/1015752/visual-profiler/profiling-deadloop-replay-kernel-with-nvprof-on-deep-neural-network/ post/5205577 /#5205577)“*当您尝试使用nvprof分析度量标准或事件时,应用程序中的所有并发内核都将被序列化*”因此,它目前是对'nvprof'的限制。 –

+0

@RobertCrovella谢谢罗伯特。有什么办法可以获得并发内核的性能指标吗? – palebluedot

+0

我不知道有什么办法。 –

回答

1

在内核同时执行的同时,不能执行每个内核的分析。但是,您可以尝试以下解决方法:

  1. 只做跟踪。如果您未指定--metrics--events,则nvprof将只执行跟踪运行。在这种情况下,nvprof将同时运行内核,但只会获得内核时序 - 而不是度量/事件数据。
  2. 如果您拥有NVIDIA Tesla GPU(与GeForce或Quadro相对),则可以使用CUPTI librarycuptiSetEventCollectionMode(CUPTI_EVENT_COLLECTION_MODE_CONTINUOUS) API对内核同时运行时所需的指标进行抽样。但是,这将只允许您在该采样间隔中获取聚合度量标准/事件数据 - 这意味着您将无法将此数据关联到单个内核。 CUPTI附带一个名为event_sampling的代码示例,演示如何使用此API。
  3. 剖析你想要的度量/事件,并让内核序列化。对于某些度量/事件,您可以简单地总结这些值以估计并发执行期间的行为。