cuda - 入住率低的原因
问题描述
Nvidia网站提到了导致占用率低的几个原因,其中包括块之间的工作负载分布不均匀,这导致块囤积共享内存资源,直到块完成才释放它们。建议是减小块的大小,从而增加块的总数(当然,假设我们保持线程数不变)。
在 stackoverflow上也给出了一个很好的解释。
鉴于上述信息,正确的操作过程不应该是(为了最大化性能)简单地将块的大小设置为尽可能小(等于扭曲的大小,比如 32 个线程)吗?也就是说,除非您需要确保大量线程需要通过共享内存进行通信,否则我假设。
解决方案
鉴于上述信息,正确的操作过程不应该是(为了最大化性能)简单地将块的大小设置为尽可能小(等于扭曲的大小,比如 32 个线程)吗?
不。
如此处的文档所示,每个多处理器的块数存在限制,这将使您在使用 32 个线程块时的最大理论占用率为 25% 或 50%,具体取决于您运行内核的硬件。
推荐阅读
- python - 在 Python 中更改每个活动主机的按钮的背景颜色
- docker - 在 Dockerfile 中创建用户:选项 d 不明确
- python - 我可以只使用 nginx 或 Gunicorn 部署我的 Django 应用程序吗?
- sql - 查找客人最后评论并在昨天离开的所有帖子
- node.js - Node.JS dns.reverse 多个名称服务器
- c++ - c++ - 如何从使用c ++中的recv接收的数据中去除标头?
- javascript - 无法读取 forEach 推送函数中的数组属性
- java - 当我单击按钮时,我的列表没有显示
- r - 如何计算数据框中每一行的平均值?[R]
- architecture - 跨国家数据的系统设计