Как выполнить глубокое копирование структуры с помощью CUDA? [Дубликат]

На этот вопрос уже есть ответ:

Копирование структуры, содержащей указатели на устройство CUDA 3 ответа

Программирование с помощью CUDA Я столкнулся с проблемой, пытаясь скопировать некоторые данные с хоста на GPU.

У меня есть 3 вложенные структуры, подобные этим:

typedef struct {
    char data[128];
    short length;
} Cell;

typedef struct {
    Cell* elements;
    int height;
    int width;
} Matrix;

typedef struct {
    Matrix* tables;
    int count;
} Container;

ТакContainer "включает" некоторыеMatrix элементы, которые в свою очередь включают в себя некоторыеCell элементы.

Давайте предположим, что я динамически распределяю память хоста следующим образом:

Container c;
c.tables = malloc(20 * sizeof(Matrix));

for(int i = 0;i<20;i++){
    Matrix m;
    m.elements = malloc(100 * sizeof(Cell));
    c.tables[i] = m;
}

То есть контейнер из 20 матриц по 100 ячеек в каждом.

Как теперь я могу скопировать эти данные в память устройства с помощью cudaMemCpy ()? Есть ли хороший способ выполнить глубокое копирование «struct of struct» с хоста на устройство?

Спасибо за ваше время

Andrea

Ответы на вопрос(1)

Ваш ответ на вопрос