cuda结构体数组拷贝

来源:互联网 发布:网络的利与弊辩论赛 编辑:程序博客网 时间:2024/05/02 02:48

逐一拷贝结构体元素

code:

  struct cudaWeakr { int* loc; float* detaSb; };int main()  {   float arrayA[2][3] = { {1, 2 ,3},{11,22,33}};int arrayB[3]={1, 2 ,3};const int K=3;    cudaWeakr*cuda_weaks;cudaWeakr tempweaks[3];float*sb;int*loc;size_t size;for(int i=0;i<3;i++){size=sizeof(float)*6;sb=(float*)malloc(size);memcpy(sb,arrayA,size);loc=(int*)malloc(sizeof(int)*3);memcpy(loc,arrayB,sizeof(int)*3);tempweaks[i].loc=loc;tempweaks[i].detaSb=sb;}size=K*(sizeof(int)*6+sizeof(float)*3);    cudaMalloc((void**)&cuda_weaks,size); for (int i=0; i<K; i++) { cudaMemcpy(&(cuda_weaks[i]),&tempweaks[i],size,cudaMemcpyHostToDevice);          } cudaWeakr testweak[K];   for (int i=0; i<K; i++) { cudaMemcpy(testweak,cuda_weaks,(sizeof(int)*6+sizeof(float)*6)*K,cudaMemcpyDeviceToHost); }for(int i=0;i<K;i++){for(int j=0;j<6;j++)cout<<tempweaks[i].detaSb[j]<<endl;}return 0;}

发现将结构体数组传入cuda函数,值很奇怪,索性拒绝结构体,直接拆开用!

0 0
原创粉丝点击