Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两个上下文中CUDA内核的执行是否可以重叠?_Cuda_Gpgpu - Fatal编程技术网

两个上下文中CUDA内核的执行是否可以重叠?

两个上下文中CUDA内核的执行是否可以重叠?,cuda,gpgpu,Cuda,Gpgpu,从中可以看出,来自不同上下文的两个内核不能同时执行。在这方面,当我从两个应用程序中读取CuTi活性痕迹时,我感到困惑。跟踪显示内核开始时间戳、内核结束时间戳和持续时间(即内核结束时间戳-内核开始时间戳) 应用1: ....... 8024328958006530 8024329019421612 61415082 应用2: ....... 8024328940410543 8024329048839742 108429199 要使长时间戳和持续时间更具可读性,请执行以下操作: 应用程序1:61

从中可以看出,来自不同上下文的两个内核不能同时执行。在这方面,当我从两个应用程序中读取CuTi活性痕迹时,我感到困惑。跟踪显示内核开始时间戳、内核结束时间戳和持续时间(即内核结束时间戳-内核开始时间戳)

应用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\u to\u cuda\u install/extras/CUPTI/sample/activity\u trace\u async来跟踪应用程序。我将CUPTI_活动属性设备缓冲区大小修改为1024,将CUPTI_活动属性设备缓冲区池限制修改为1。我只启用了CUPTI_ACTIVITY_KIND_MEMCPY、CUPTI_ACTIVITY_KIND_并发_内核和CUPTI_ACTIVITY_KIND_开销的跟踪。我的应用程序在各自的逻辑时间步中调用cuptiActivityFlushAll(0)一次

我看到的这些错误的CUPTI值是由于使用不当还是其他原因造成的

说明:MPS未启用,在单个GPU上运行

更新:存档,这似乎是CUDA 6.5的已知问题
等待机会用CUDA 7测试(多个用户共享一个GPU,需要一个非活动窗口才能临时切换到CUDA 7)

我不知道如何设置CUPTI活动跟踪。但是,即使没有MPS服务器,两个内核也可以在一个GPU上共享一个时间跨度,尽管一次只有一个内核在GPU上运行

若CUDA MPS服务器未使用,则来自不同上下文的内核不能重叠。我假设您没有使用MPS服务器,那么时间片调度程序将决定一次访问GPU的上下文。如果没有MPS,上下文只能访问时间切片调度器分配给它的时间段中的GPU。因此,一次只有来自单个上下文的内核在GPU上运行(没有MPS服务器)


请注意,在一个GPU上,可能有多个内核彼此共享一个时间跨度,但在该时间跨度内,只有来自单个上下文的内核可以访问GPU资源(我也假设您使用的是单个GPU)


有关更多信息,您也可以查看文档

我已经更新了OP。您的两个假设都是正确的。“请注意,在一个GPU上,可能有多个内核彼此共享一个时间跨度,但在该时间跨度内,只有来自单个上下文的内核可以访问GPU资源。”你能详细解释一下吗?在我看来,这只有在内核被中断并随后恢复(上下文切换)时才可能实现。我认为上下文切换只能在内核边界进行。我建议您向NVIDIA注册的开发人员程序提交一份错误报告。请提供可复制的操作系统、驱动程序版本和GPU信息。出现这种情况的唯一情况是(a)MPS,(b)具有线程块级抢占(CC>=3.5)的Linux/MacOS,以及(c)内核在两个不同的GPU上运行。时间戳的距离比我预期的(b)更近。@GregSmith By(b),你的意思是抢占CDP内核吗?