加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

CUDA – 限制使用的SM数量

发布时间:2020-12-16 06:58:07 所属栏目:百科 来源:网络整理
导读:有没有什么方法可以明确地限制我的程序运行期间使用的GPU多处理器的数量?我想计算一下我的算法如何随着多处理器数量的增加而扩展. 如果它有帮助:我正在使用CUDA 4.0和具有计算能力2.0的设备. 解决方法 Aaahhh ……我知道这个问题.我在写论文时自己玩弄它.
有没有什么方法可以明确地限制我的程序运行期间使用的GPU多处理器的数量?我想计算一下我的算法如何随着多处理器数量的增加而扩展.

如果它有帮助:我正在使用CUDA 4.0和具有计算能力2.0的设备.

解决方法

Aaahhh ……我知道这个问题.我在写论文时自己玩弄它.

没有明确的方法可以做到这一点,但你可以通过让一些块无所事事来尝试“黑客攻击”它.

>如果因为有多处理器而你永远不会启动更多的块,那么你的工作很简单 – 只需启动更少的块.一些SM保证没有工作,因为块不能分割成多个SM.
>如果您启动了更多的块并且您只是依靠驱动程序来安排它们,请使用不同的方法:只需启动GPU可以处理的块数,如果其中一个块完成其工作,而不是终止它,则循环返回到开头并获取另一段数据来处理.最有可能的是,您的计划的表现不会下降;如果你仔细安排工作,它甚至可能会变得更好:)
>最大的问题是当所有块都在GPU上同时运行时,但每个SM有多个块.然后你需要正常启动,但手动“禁用”一些块并命令其他块为它们工作.问题是 – 哪些阻止禁用以保证一个SM正在工作而另一个不工作.

根据我自己的实验,1.3设备(我有GTX 285)按顺序安排块.因此,如果我在30个SM上启动60个块,则块1-30被安排到SM 1-30,然后31-60再次安排到SM从1到30.因此,通过禁用块5和35,SM 5实际上不是做任何事情.

但请注意,这是我2年前制作的私人实验观察.它不会被NVIDIA确认,支持,维护,不会改变(或已经改变)新的GPU和/或驱动程序.

我建议 – 尝试使用一些简单的内核来完成很多愚蠢的工作,看看在各种“启用”/“禁用”配置上计算需要多长时间.如果运气好的话,你会发现性能下降,表明实际上只有一个SM执行了2个块.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读