找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 91|回复: 1

关于内核函数中申请动态共享内存

[复制链接]
发表于 2018-12-29 22:09:16 | 显示全部楼层 |阅读模式
GTC
    问题是这样的,我想在内核函数中动态的申请共享内存达到跟之前用静态共享内存同样的功能,也就是下面的代码所示__globla__ void kernel(PtrStepSz<float>Image)
{       int i = threadIdx.x;
        int j = threadIdx.y;
        int x = threadIdx.x + blockDim.x * blockIdx.x;
        int y = threadIdx.y+ blockDim.y *  blockIdx.y;}
      _shared__ float temp[32][32];
        temp[j][i] = Image(y, x);
        __syncthreads();       
}

但是关于这里如何申请二维的共享内存数组以及如何将相应Id的全局内存的矩阵的值写入到该共享内存中很疑惑。    查了很多资料 只看到一段这样的代码
   __global__ void kernel(int *out)
    {//dynamic shared memory
        extern __shared__ int tile[];
       // mapping from thread index to global memory index
     unsigned int row_idx=threadIdx.y*blockDim.x+threadIdx.x;
     unsigned int col_idx=threadIdx.x*blockDim.y+threadIdx.y;

     //shared memory store_operation
      tile[row_idx]=row_idx;

      //wait for all threads to complete
    __synchreads();

      // shared memory load operation
     out[row_idx]=tile[col_idx];
    }
这段代码就看的很不明白,不知道能不能用。
求大神看看






回复

使用道具 举报

发表于 2019-1-2 12:18:17 | 显示全部楼层
Jetson TX2
请参考Kernel启动配置章节(本论坛的Sisiy妹子的阅读手册100天上有)。

里面有讲述如何用<<<>>>语法,在启动kernel的时候,指定动态分配的Shared Memory大小。

(注意,使用动态分配的Shared Memory需要你自行推断指针。)
(注意,如果同时使用了静态+动态分配的Shared Memory, 则实际大小为两者总和)
请阅读手册相关章节,获取更多信息。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表