各位斑竹好,小女有如下问题请教各位:
具体来讲,有100个 512512的矩阵对应元素相加求和,我如下设计kernel, thread为5121,block为512*100,也就是block的每一行是一个矩阵,最后要求出这100行的对应元素之和。因为block间无法通信,不知有何方法可以快速实现,或者要实现这种N个矩阵(规模较大)求和的问题,因为如何设计thread和block的大小?
麻烦各位斑竹解答~
各位斑竹好,小女有如下问题请教各位:
具体来讲,有100个 512512的矩阵对应元素相加求和,我如下设计kernel, thread为5121,block为512*100,也就是block的每一行是一个矩阵,最后要求出这100行的对应元素之和。因为block间无法通信,不知有何方法可以快速实现,或者要实现这种N个矩阵(规模较大)求和的问题,因为如何设计thread和block的大小?
麻烦各位斑竹解答~
LZ您好:
直接给您说一个简单的实现供您参考吧:
1:选block含有512个线程,选grid含有512个block。
2:每个block计算着100个矩阵的某一行的求和,也就是每个thread计算着100个矩阵里面同一个位置的元素的求和,这可以简单循环实现,以及注意合并访问即可。
3:每步都读取并累加到局部的寄存器里面,加完以后回写。
此方法即可解决您的问题,请您参考此方法考虑下您的问题。
祝您好运~
谢谢斑竹,对合并访问不是很清楚,劳烦斑竹解释下,谢谢啦
LZ您好:
简而言之就是相邻的线程访问相邻的数据,即可满足合并访问要求。
细节情况请参阅Programming Guide以及论坛以前的讨论帖。
大致如此,祝您好运~