小编mas*_*141的帖子

CUDA线程如何工作

我对线程的形成和执行方式有很多疑问.

首先,文档将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个元素.

  • 如何添加其余元素?
  • warp调度程序如何决定分配哪些线程来添加最后36个元素?

我的主要问题是:

我不明白线程如何知道要操作的元素.

cuda

3
推荐指数
1
解决办法
1170
查看次数

标签 统计

cuda ×1