所以我需要创建一个具有不同行长的矩阵,这就是它在普通 C/C++ 中的样子
int** MpesosT = (int**)malloc(N * sizeof(int*));
for (int i = 0; i < N; i++)
{
MpesosT[i] = (int*)malloc(vecinosT[i] * sizeof(int));
}
但是,我不知道如何使用 CUDA 函数来分配内存:
int* Vector; cudaMallocManaged(&Vector, VectorSize* sizeof(int));
我不能只使用大小为 N*N 或其他大小的 vector ,因为每一行都有不同的大小,所以我该怎么做呢?
最佳答案
花了几个小时,但我找到了方法。如果有人遇到同样的问题:
double** Matrix;
cudaMallocManaged((double***)&Matrix, N * sizeof(double*));
for (i = 0; i < N; i++)
{
cudaMallocManaged((double**)&Matrix[i], rowlength[i] * sizeof(double));
}
这样,每一行的长度都不同
关于c++ - 在统一内存 CUDA C/C++ 中分配一个二维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59162457/