Как я могу заставить это работать?
Конструктор и деструктор должны быть разными для хоста и устройства, используя new[] и cudaMalloc() соответственно.
Как можно аккуратно отправлять эту структуру в обоих направлениях без дублирования кода каждый раз, когда я хочу отправить версию хоста на устройство, отправив внутренний массив, а затем отправить дубликат структуры с другим указателем на массив устройств вместо массива хостов.
Я пробовал что-то подобное, но безрезультатно:
Код: Выделить всё
struct MyStruct {
int array_size;
int* array;
MyStruct(int size) {
array_size = size;
array = new int[size];
}
~MyStruct() {
delete[] array;
array = nullptr;
}
__host__ __device__ int getValue(index) {
if (index >= 0 && index < array_size) {
return array[index];
}
// Throw an error;
}
}
Приносим извинения за множество вопросов.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -with-cuda
Мобильная версия