【发布时间】:2014-12-06 07:18:54
【问题描述】:
简而言之:是否可以确定一个块是否是该特定 SM 上的最后一个(以及是否是第一个)?
详情: 我有一个问题,每个块都进行了非常复杂的计算,这导致了一个大约 2K 元素的数组,我想对这些元素求和。我有大约 3K 块。但是如果我 atomic add 在每个块的末尾添加到全局内存数组,这可能会严重减慢。 所以我想做什么:
- 使用共享数组对每个 SM 中的值求和
- 如果该块是该 SM 中的第一个块(该特定 SM 上尚未运行任何块),则初始化共享数组(用 0 清除)
- 进行计算,并将结果添加到共享数组中
- 如果是此 SM 中的最后一个块,则将共享数组值原子添加到全局数组中。
这可能吗?还是其他解决方案?
【问题讨论】:
标签: cuda