Cuda 计算单个值的线程数

Cuda 计算单个值的线程数,cuda,Cuda,我正在使用计算机能力为1.2的CUDA。我正在运行我的CUDA代码,其中一个矩阵的每个元素由另外两个矩阵相加计算得出。我用一个线程计算一个元素的值。我想知道是否可以使用两个线程来计算单个值。如果可以,有人能告诉我如何使用同一块的两个不同线程来计算单个值吗?如果需要计算 q = m2[i][k] + m2[(k+1)][j] + p1[(i-1)]*p1[k]*p1[j]; 通过两个核心,使用更宽的变量+更少的迭代次数。int2: __shared__ int2 m2[N][N],p1[N],q

我正在使用计算机能力为1.2的CUDA。我正在运行我的CUDA代码,其中一个矩阵的每个元素由另外两个矩阵相加计算得出。我用一个线程计算一个元素的值。我想知道是否可以使用两个线程来计算单个值。如果可以,有人能告诉我如何使用同一块的两个不同线程来计算单个值吗?

如果需要计算

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中。同步、内核启动开销、缓存利用率会降低性能以及指令级并行性。也许内核占用增加了,但不确定它是否能容忍上述负面影响。

如果我的理解是正确的,那么你的计算看起来像
C[i,j]=A[i,j]+B[i,j]
,对吗?如果是这种情况,我认为使用两个线程计算
C[I,j]
时没有任何可能的好处。请发布一些代码,说明您的内核以及希望使用两个线程而不是一个线程的部分。@hubs,谢谢您的回复。。但是,如果我需要使用一些算法,比如动态规划,比如矩阵链积,那么就不用加法运算了。在这里,我想用两个线程来计算矩阵的一个值。这可能吗???我确信有一种方法可以使用两个线程。但不可能说这是否会带来好处。如果没有你提供的任何代码或精确的数学方程式,你是不可能回答的@好的。。我将发布我的代码here@user3155942:如果您想询问一个真实的示例或算法,请编辑您的问题以清楚地描述它。否则我不明白怎么会有人能回答这个问题。