矩阵乘法的一个例子不太理解,求教于大神

Sergio_ly Sergio_ly 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
本例摘自英伟达官方文档cuda c best practice guide

__global__ void coalescedMultiply(float *a, float* b, float *c,
int N)
{
__shared__ float aTile[TILE_DIM][TILE_DIM];
int row = blockIdx.y * blockDim.y + threadIdx.y;
int col = blockIdx.x * blockDim.x + threadIdx.x;
float sum = 0.0f;
aTile[threadIdx.y][threadIdx.x] = a[row*TILE_DIM+threadIdx.x];
for (int i = 0; i < TILE_DIM; i++) {
sum += aTile[threadIdx.y][i]* b[i*N+col];
}
c[row*N+col] = sum;
}


这个例子是矩阵C = A × B,利用共享内存解决全局内存跨步访问的问题。下面的解释中有这样一条不理解:
Within each iteration of the for loop, a value in shared memory is broadcast to all threads in a warp
请问这里为什么会是广播访问?
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
Sergio_ly
CUDA 591 成员 2,925 内容