万能的Openhero,请教一个问题,呵呵
vbskj 博客专家认证 2008-12-10 07:34:16 定义一个结构
typedef struct{
float *a;
float *b;
}PARADATA;
1)在host上申请内存
PARADATA *pData = new PARADATA;
2)为pData中的指针成员申请device上的global memory
CUDA_SAFE_CALL(cudaMalloc((void**)&(pData->a),sizeof(float)*4));
CUDA_SAFE_CALL(cudaMalloc((void**)&(pData->b),sizeof(float)*4));
可以成功通过,没问题
3)写一个简单的test
__global__ void test(float *pData,int N)
{
int i = threadIdx.x;
if(i<N)
pData[i]=10.0;
}
4) 启动test
test<<<1,1>>>(a,4);
此时出错,不能实现device内存的写操作
P.S.:本来意图是用host上的结构来管理device上的内存,但是发现申请device内存没问题,但是到了内存使用时就出错。
P.S.: Openhero,你说的cufft是利用device api实现的,但是没看到接口函数啊,这样不还是不能在device上使用么?