linux - 是否有可能在 GPU 中禁用某些 SMX?

标签 linux cuda gpu nvidia

在单个GPU如P100中有56个SM(Streaming Multiprocessors),不同的SM可能相关性很小。我想知道不同SM的应用程序性能变化。所以有什么办法可以禁用一些SM某个 GPU。我知道 CPU 提供了相应的机制,但还没有为 GPU 提供一个好的机制。谢谢!

最佳答案

没有 CUDA 提供的方法来禁用 SM(流式多处理器)。对于不同程度的难度和行为,存在一些使用间接方法进行尝试的可能性:

  1. 使用 CUDA MPS,并通过仔细控制启动的 block 数和这些 block 的资源利用率来启动一个完全“占用”一个或多个 SM 的应用程序。使用 CUDA MPS,另一个应用程序可以在同一个 GPU 上运行,并且内核可以同时运行,前提是要充分注意它。这可能不允许直接修改被测应用程序代码(但需要启动额外的应用程序以及 MPS)。内核持续时间需要“长”,以便在被测应用程序运行时占用 SM。

  2. 在您的应用程序代码中,通过从与被测代码相同的应用程序启动“虚拟”内核,并让虚拟内核“占用”一个或多个,有效地重新创建上面第 1 项中列出的行为短信。然后被测应用程序可以启动所需的内核。这应该允许在没有 MPS 的情况下实现内核并发。

  3. 在您的应用程序代码中,对于被测内核本身,修改内核 block 调度行为,probably using the smid special register via inline PTX , 使应用内核本身只使用某些 SM,有效减少使用总数。

关于linux - 是否有可能在 GPU 中禁用某些 SMX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47968815/

相关文章:

linux - 在 CD 上运行的 Grep 脚本

java - GUI javafx 应用程序无法通过 Linux 中的服务打开

c++ - C CUDA 内核的 PtrStepSz(GpuMat) 数组

linux - CUDA 是否正确安装在我的 Ubuntu 10.04 上?一些样本不运行。

tensorflow - 级联矩阵乘法是否比多个非级联矩阵乘法更快?如果是这样,为什么?

linux - 删除 shell 命令后的换行符

c - pkg-config 目标在哪里定义?

在 thrust 中调用用户定义的函数

python - tensorflow 内存 MNIST 教程

synchronization - OpenCL 和 GPU 全局同步