C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了CUDA – 限制使用的SM数量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有什么方法可以明确地限制我的程序运行期间使用的GPU多处理器的数量?我想计算一下我的算法如何随着多处理器数量增加而扩展. @H_197_5@ @H_197_5@如果它有帮助:我正在使用CUDA 4.0和具有计算能力2.0的设备.

解决方法

Aaahhh ……我知道这个问题.我在写论文时自己玩弄它. @H_197_5@ @H_197_5@没有明确的方法可以做到这一点,但你可以通过让一些块无所事事来尝试“黑客攻击”它.

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

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

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

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

大佬总结

以上是大佬教程为你收集整理的CUDA – 限制使用的SM数量全部内容,希望文章能够帮你解决CUDA – 限制使用的SM数量所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。