Передача структуры, включающей указатель на другую структуру, в ядро в CUDA
У меня есть две структуры, как
struct collapsed {
char **seq;
int num;
};
struct data {
collapsed *x;
int num;
int numblocks;
int *blocksizes;
float *regmult;
float *learnmult;
};
Я передаю его в свое ядро как;
__global__ void KERNEL(data* X,...){
...
collapsed x = X->x[0]; // GIVES CUDA_EXPECTION_1:Lane Illegal Address
}
data X;
//init X
data *X_dev;
cudaMalloc((data **) & X_dev, sizeof(data));
cudaMemcpy(X_dev, &X, sizeof(data), cudaMemcpyHostToDevice);
KERNEL(X_dev,...);
Этот код даетCUDA_EXPECTION_1: незаконный адрес переулка в коде ядра. Что не так или как правильно это сделать? Любая идея?