Как выполнить глубокое копирование структуры с помощью 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