在共享内存中定义2d动态内存

时间:2019-04-05 05:37:28

标签: cuda

我的问题是如何使用“ new”在共享内存中分配更多存储空间,而不是如何传递常量。

我正在编写一个代码,该代码创建两个m * m 2D数组,它们的大小由用户定义。为了使该数组的创建对用户更方便,更快捷,我决定创建一个指向指针数组的指针,该数组中的每个点都指向另一个数组以创建2D数组。另外,我希望每个指针都由一个指针数组中的每个指针的单个线程处理。

这是单线程编译中这种想法的代码

int** arrX = new int*[6 * s + 1];   //create the X's matrix;
    for (i = 0; i < (6 * s + 1); i++)
        arrX[i] = new int[6 * s + 1];

这是我尝试过的:

    if(threadIdx.x == 0){
      int** arrX = new int*[row_size];    //create the X's matrix;
    }
    if(threadIdx.x < size_row ){       // the first row extened to colmuns
        arrX[threadIdx.x] = new int[row_size];
    }

但是我发现除了初始化线程之外,其他线程无法读取此代码,因此我试图将此类数组存储到共享内存并以类似方式进行访问。 如果我的方法是错误的或不合理的,请提出一个更好的方法。

0 个答案:

没有答案