CUDA:一个块或一个块的更多尺寸?

时间:2011-03-28 19:17:58

标签: c++ matrix cuda

我需要使用CUDA对矩阵的每个元素(基本上是内存中浮点值的向量)进行平方化。

矩阵尺寸不是'先验',可能会有所不同[2-20.000]。

我想知道:我可能会使用(如Jonathan建议的那样)一个块尺寸:

int thread_id = blockDim.x * block_id + threadIdx.x;

并检查thread_id是否低于rows * columns ...这非常简单直接。

但是有没有特别的性能原因为什么我应该使用两个(甚至三个)块网格尺寸来执行这样的计算(请记住我有一个矩阵)而不是一个?

我正在考虑合并问题,比如让所有线程按顺序读取值

1 个答案:

答案 0 :(得分:6)

尺寸仅为方便起见而存在,内部一切都是线性的,因此无论在哪种方式上效率都没有优势。如上所示,避免计算(人为的)线性索引似乎要快一些,但线程的合并方式没有任何差别。