计算单个值的线程数

时间:2014-02-17 06:21:05

标签: cuda

我正在使用具有计算能力1.2的CUDA。我正在运行我的CUDA代码,其中包含通过添加其他2个矩阵计算的矩阵的每个元素。我正在通过一个Thread计算一个元素的值。我想知道是否有可能使用2个线程来计算单个值。如果有可能,任何人都可以告诉我如何使用相同块的2个不同线程来计算单个值吗?

1 个答案:

答案 0 :(得分:0)

如果你需要计算

q = m2[i][k] + m2[(k+1)][j] + p1[(i-1)]*p1[k]*p1[j];

通过两个核心,使用更宽的变量+更少的迭代。 INT2:

__shared__ int2 m2[N][N],p1[N],q;

可以使用两个核心,但不能使用两个线程。如果你坚持两个线程,

qThread1 = m2[i][k] + m2[(k+1)][j] //in a kernel
 ...
  ...
 ...
qThread2 = p1[(i-1)]*p1[k]*p1[j] //in another kernel

然后你只需通过另一个线程将它们添加到q中。同步,内核启动开销,缓存利用率可能会降低性能以及降低指令级并行化。也许内核占用增加但不确定它是否容忍上述负面因素。