【发布时间】:2015-09-15 02:36:22
【问题描述】:
来自this,似乎来自不同上下文的两个内核无法同时执行。在这方面,我在从两个应用程序中读取 CUPTI 活动跟踪时感到困惑。跟踪显示 kernel_start_timestamp、kernel_end_timestamp 和持续时间(即 kernel_end_timestamp - kernel_start_timestamp)。
应用 1: ………… 8024328958006530 8024329019421612 61415082 .......
应用 2: ………… 8024328940410543 8024329048839742 108429199
为了使长时间戳和持续时间更具可读性:
应用程序 1:61.415 毫秒的内核 X 从 xxxxx28.958 秒运行到 xxxxx29.019 秒
应用 2:108.429 毫秒的内核 Y 从 xxxxx28.940 秒运行到 xxxxx29.0488 秒
因此,内核 X 的执行与内核 Y 的执行完全重叠。
我正在使用 /path_to_cuda_install/extras/CUPTI/sample/activity_trace_async 来跟踪应用程序。我将 CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_SIZE 修改为 1024,将 CUPTI_ACTIVITY_ATTR_DEVICE_BUFFER_POOL_LIMIT 修改为 1。我只启用了对 CUPTI_ACTIVITY_KIND_MEMCPY、CUPTI_ACTIVITY_KIND_CONCURRENT_KERNEL 和 CUPTI_ACTIVITY_KIND_OVERHEAD 的跟踪。我的应用程序在各自的逻辑时间步中调用 cuptiActivityFlushAll(0) 一次。
我看到这些错误的 CUPTI 值是由于使用不当还是其他原因?
澄清:未启用 MPS,在单 GPU 上运行
更新:bug 归档,这似乎是 CUDA 6.5 的一个已知问题 正在等待使用 CUDA 7 进行测试的机会(在多个用户之间共享一个 GPU,并且需要一个不活动窗口来临时切换到 CUDA 7)
【问题讨论】:
-
我建议您向 NVIDIA 注册开发者计划提交错误报告。请包括可重现的、操作系统、驱动程序版本和 GPU 信息。可能发生这种情况的唯一情况是 (a) MPS,(b) 具有线程块级抢占 (CC >= 3.5) 的 Linux/MacOS,以及 (c) 内核在两个不同的 GPU 上运行。时间戳比我预期的 (b) 已经发生的更接近。
-
@GregSmith (b),你的意思是抢占 CDP 内核吗?