我对线程的形成和执行方式有很多疑问.
首先,文档将GPU线程描述为轻量级线程.假设我希望将两个100*100
矩阵相乘.100*100
如果每个元素都由不同的线程计算,这将需要线程.但是,我的GPU(NVIDIA GT 640M LE)规格显示了两个SM,每个SM只能支持2048个线程.考虑到我的GPU不能支持如此多的线程,如何计算其余的并行元素是两个可能的.
还要考虑基本的矢量添加代码.假设我调用一个包含1个块和64个线程的内核来添加两个包含100个元素的数组,如下所示:
__global__ void add(int* a,int* b,int* c)
{
int i = threadIdx.x;
for(i<100)
{
c[i] = a[i] + b[i];
{
}
Run Code Online (Sandbox Code Playgroud)
由于只初始化了64个线程,我假设并行添加了64个元素.
我的主要问题是:
我不明白线程如何知道要操作的元素.
cuda ×1