int i = threadid.x
C[i] = A[i] + B[i];
这是看文档里一开始就讲到的,向量相加的代码,我不太理解,i得到的数值不是线程ID吗?为什么能用作向量ABC元素的索引呢?
int i = threadid.x
C[i] = A[i] + B[i];
这是看文档里一开始就讲到的,向量相加的代码,我不太理解,i得到的数值不是线程ID吗?为什么能用作向量ABC元素的索引呢?
得到的数值C是向量A+B的结果,线程ID仅是用作标记数组下标的,与数组下标一致。
那线程是怎么把AB数组元素进行一一对应的相加呢?并没有看到循环的执行啊?
线程是用自己的ID号和数组的下标对应起来的,就是说用线程的ID来表示数组的下标 。比如A数组你想取A[10],那么就可以使用第10号线程,因为第十号线程的ID就是10,所以可以这样:A[第十号线程的ID]:
明白了,是不是这样的:一个线程执行一次相加,这个线程的ID去索引到ABC的相应元素,并执行求和的运算;
那么根据调用时指定的线程数N,就可以执行完成元素为N的向量相加了。