Приведение типа CUdeviceptr к uchar** при доступе cuda выдает ошибку незаконного доступа к памяти 700 [дубликат]C++

Программы на C++. Форум разработчиков
Anonymous
Приведение типа CUdeviceptr к uchar** при доступе cuda выдает ошибку незаконного доступа к памяти 700 [дубликат]

Сообщение Anonymous »

Мы выделили память для CUdeviceptr для объекта v1 и привели тип к типу uchar**.

Код: Выделить всё

CUdeviceptr v1;
checkCudaResult(cuMemAlloc((CUdeviceptr*)&v1, 16));
checkCudaErrors(cudaMemset((void*)v1, 1, 16));
uchar** v1char = (uchar**)v1;
foo_double(v1char);
checkCudaResult(cuMemFree(v1));
Приведенный выше код выдает ошибку незаконного доступа к памяти при доступе к v1char внутри ядра, как показано ниже:

Код: Выделить всё

_global__ void foo_double(uchar** val) {
unsigned int tid = threadIdx_x;
unsigned int bid = blockIdx_x * blockDim_x + tid;
uchar* val_ = val[bid];
printf("%d:%d\n", bid,*val_);
}
Нет ошибок компиляции или сборки. Есть ли какой-нибудь правильный способ привести v1 (указатель устройства) к указателю uchar** и правильно получить доступ к адресу?
Нет ошибок компиляции или сборки. Есть ли правильный способ привести тип v1 (указатель устройства) к указателю uchar** и правильно получить доступ к адресу?
Нет ошибок компиляции или сборки. п>

Подробнее здесь: https://stackoverflow.com/questions/787 ... ccess-erro

Вернуться в «C++»