CUDA | 您所在的位置:网站首页 › gta5玩法视频 › CUDA |
前言
线程的组织形式对程序的性能影响是至关重要的,本篇博文主要以下面一种情况来介绍线程组织形式: 2D grid 2D block 线程索引矩阵在memory中是row-major线性存储的: 在kernel里,线程的唯一索引非常有用,为了确定一个线程的索引,我们以2D为例: 线程和block索引矩阵中元素坐标线性global memory 的偏移首先可以将thread和block索引映射到矩阵坐标: ix = threadIdx.x + blockIdx.x * blockDim.x iy = threadIdx.y + blockIdx.y * blockDim.y 之后可以利用上述变量计算线性地址: idx = iy * nx + ix 上图展示了block和thread索引,矩阵坐标以及线性地址之间的关系,谨记,相邻的thread拥有连续的threadIdx.x,也就是索引为(0,0)(1,0)(2,0)(3,0)...的thread连续,而不是(0,0)(0,1)(0,2)(0,3)...连续,跟我们线代里玩矩阵的时候不一样。 现在可以验证出下面的关系: thread_id(2,1)block_id(1,0) coordinate(6,1) global index 14 ival 14 下图显示了三者之间的关系: 下图展示了不同配置的性能; 关于性能的分析将在之后的博文中总结,现在只是了解下,本文在于掌握线程组织的方法。 |
CopyRight 2018-2019 实验室设备网 版权所有 |