//这个是定义的结构体
struct HostDocs{
unsigned DocCount;
unsigned short DocStreamSize[DOC_BATCH_SIZE];
unsigned short *DocStream[DOC_BATCH_SIZE];
};
//hdocs 这个是HostDocs 类型,已包含数据。想将其copy到 设备端的 ddocs中
//copy代码如下
HostDocs ddocs;
unsigned short CPU_ARRAY = (unsigned short)malloc(sizeof(unsigned short)*DOC_BATCH_SIZE);
memset(CPU_ARRAY,0,sizeof(int)*DOC_BATCH_SIZE);
int docSize=0,docsNum=hdocs->DocCount;
for(int i=0;i<docsNum;i++){
docSize=hdocs->DocStreamSize[i];
cutilSafeCall( cudaMalloc( (void **)&CPU_ARRAY[i],sizeof(unsigned short)docSize));
cutilSafeCall( cudaMemset(CPU_ARRAY[i],0,sizeof(unsigned short)(docSize)));
cutilSafeCall( cudaMemcpy(CPU_ARRAY[i],hdocs->DocStream[i],sizeof(unsigned short)*docSize,cudaMemcpyHostToDevice));
}
cutilSafeCall(cudaMalloc( (void**)&ddocs,sizeof(HostDocs)));
cutilSafeCall(cudaMemcpy(ddocs->DocStream,CPU_ARRAY,sizeof(unsigned short*)*DOC_BATCH_SIZE,cudaMemcpyDeviceToDevice));
cutilSafeCall(cudaMemcpy(ddocs,hdocs,sizeof(HostDocs),cudaMemcpyHostToDevice));
在最后一行debug自动退出。
请高人指点,该如何copy好!
多谢!
[ 本帖最后由 sebarzi 于 2010-9-6 17:44 编辑 ]