在统一内存CUDA C / C ++中分配2D向量

问题描述 投票:0回答:1

所以我需要创建一个具有不同行长的矩阵,这就是普通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的向量,因为每一行都有不同的大小,所以我该怎么做?

c++ memory vector cuda 2d
1个回答
1
投票

花了几个小时,但我找到了解决方法。如果有人有同样的问题:

double** Matrix;
cudaMallocManaged((double***)&Matrix, N * sizeof(double*));
for (i = 0; i < N; i++)
{
    cudaMallocManaged((double**)&Matrix[i], rowlength[i] * sizeof(double));
}

这样,每一行都有不同的长度

© www.soinside.com 2019 - 2024. All rights reserved.