cuda结构体数组拷贝

本文讨论了在CUDA编程中遇到的结构体数组拷贝问题,发现直接传入CUDA函数会导致值异常。为了解决这个问题,作者建议避免使用结构体,而是将结构体元素拆分开来进行拷贝和处理。
摘要由CSDN通过智能技术生成

逐一拷贝结构体元素

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&#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值