我有一个与SMx上的块执行有关的问题。我做了一个实验,在GPU K20c中从不同的MPI进程启动了几个内核。 GPU由CUDA MPS共享用于MPI进程。根据MPS文档(https://docs.nvidia.com/deploy/pdf/CUDA_Multi_Process_Service_Overview.pdf),流与每个MPI进程相关联,以便每个MPI进程可以与属于其他MPI进程的其他内核同时执行其内核。为了理解这种行为,我用Visual Profiler工具可视化了这个实验。 Visual Profiler向我展示了一些内核正在同时执行,但同时也是如此。也就是说,两个内核在它们之间绝对重叠(不仅是它们中的一小部分)。似乎属于两个内核的块同时共享SMx。据我所知,SMx只能拥有属于同一内核的块。你知道为什么会这样吗?非常感谢你。
修改:
感谢您的回复@RobertCrovella。我看了你建议我的幻灯片。根据幻灯片,每个SMx都有4个warps调度程序,warp可以来自不同的线程块或不同的并发内核,Ok。我理解,当命名表达“不同并发内核”时,它指的是在不同流上(并发)启动的不同内核。因此,我认为属于来自不同内核的不同块的warp可以由属于SMx的4个warps调度器来调度。但是,当我的应用程序使用CUDA MPS启动时,我才发现这种行为。当我的应用程序仅使用流启动时,只有一小部分内核(内核的末尾与其他内核的开头)重叠。据我所知这是正常的,但另一种行为对我来说很奇怪。