все программисты. Я конвертирую существующий проект C ++ в расширенную программу CUDA. Я новичок в CUDA. Так что я учусь во время работы. Я должен выделить память для динамической переменной-члена структуры, а переменная-структура будет выделена как переменная устройства.
примерно так:
_cuda_params* dcuda_params;
cudaMalloc(&dcuda_params, sizeof(_cuda_params));
cudaMemcpy((void *)dcuda_params, (void*)cuda_params, sizeof(_cuda_params), cudaMemcpyHostToDevice);
dcuda_params->DPht = (hashtb_entry *)malloc(c); // c is size to allocate.
Но во время выполнения я получаю исключение 0xC0000022. Я также попробовал это:
cudaMalloc(&dcuda_params->DPht, c);
но результат тот же. Как я могу справиться с этим?
.h file
typedef struct {
int blocksPerGrid;
int threadsPerBlock;
uint64_t HASH_SIZE;
hashtb_entry* DPht;
} _cuda_params;
.cu file
void _GpuSearch(_cuda_params* cuda_params){
...
_cuda_params* dcuda_params;
cudaMalloc(&dcuda_params, sizeof(_cuda_params));
cudaMemcpy((void *)dcuda_params, (void*)cuda_params, sizeof(_cuda_params),
cudaMemcpyHostToDevice);
dcuda_params->DPht = (hashtb_entry *)malloc(c); //c: size to allocate.
...
}