我的问题是如何使用“ 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];
}
但是我发现除了初始化线程之外,其他线程无法读取此代码,因此我试图将此类数组存储到共享内存并以类似方式进行访问。 如果我的方法是错误的或不合理的,请提出一个更好的方法。