【发布时间】:2018-10-14 19:02:50
【问题描述】:
Nvidia web-site 提到了导致占用率低的几个原因,其中包括块之间的工作负载分布不均,这导致块囤积共享内存资源并且直到块完成才释放它们。建议是减小块的大小,从而增加块的总数(当然,假设我们保持线程数不变)。
stackoverflow 上的here 也对此给出了很好的解释。
鉴于上述信息,正确的做法不应该是(为了最大限度地提高性能)简单地将块的大小设置为尽可能小(等于 warp 的大小,比如 32 个线程)吗?也就是说,除非您需要确保大量线程需要通过共享内存进行通信,否则我假设。
【问题讨论】: