CUDA设备到主机的数据传输错误

CUDA设备到主机的数据传输错误,cuda,memcpy,Cuda,Memcpy,我在将设备数据检索到主机时遇到问题。。 在下面的示例程序中。。我在主机中创建了一个hostData数组,并为其提供了值。 然后,我将hostData传输到deviceData变量,并再次将相同的数据传输到新的主机数据数组,即hostDataFinal。当我将存储在hostDataFinal中的值打印到几个值时,输出为ok,其余显示为垃圾值。所有值应与hostData数组中的值相同。请帮帮我 #include "cuda_runtime.h" #include "device_launch_par

我在将设备数据检索到主机时遇到问题。。 在下面的示例程序中。。我在主机中创建了一个hostData数组,并为其提供了值。 然后,我将hostData传输到deviceData变量,并再次将相同的数据传输到新的主机数据数组,即hostDataFinal。当我将存储在hostDataFinal中的值打印到几个值时,输出为ok,其余显示为垃圾值。所有值应与hostData数组中的值相同。请帮帮我

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <iostream>

int main()
{
int totalData = 20;
int *hostData;
hostData = new int[totalData];
std::cout<<std::endl<<std::endl<<"HostData Values : "<<std::endl;
for (int i=0; i<totalData ;i++)
{
    hostData[i]= i+1;
    std::cout<<hostData[i]<<" "; 
}

int *deviceData;
int *hostDataFinal;
cudaMalloc((void**)&deviceData,totalData*sizeof(int));
hostDataFinal = new int[totalData];

cudaMemcpy(deviceData,hostData,totalData,cudaMemcpyHostToDevice);
cudaMemcpy(hostDataFinal,deviceData,totalData,cudaMemcpyDeviceToHost);

std::cout<<std::endl<<std::endl<<"HostDataFinal After Device Transfer Values : "<<std::endl;
for (int i=0; i<totalData ;i++)
{
    std::cout<<hostDataFinal[i]<<" "; 
}

free(hostData);
free(hostDataFinal);
cudaFree(deviceData);
return 0;
#包括“cuda_runtime.h”
#包括“设备启动参数.h”
#包括
int main()
{
int totalData=20;
int*主机数据;
hostData=newint[totalData];

std::cout您的问题在这些行中。
cudaMemcpy
中的第三个参数是要复制的字节数

cudaMemcpy(deviceData,hostData,totalData,cudaMemcpyHostToDevice);
cudaMemcpy(hostDataFinal,deviceData,totalData,cudaMemcpyDeviceToHost);
应该是

cudaMemcpy(deviceData,hostData,totalData *sizeof(int),cudaMemcpyHostToDevice);
cudaMemcpy(hostDataFinal,deviceData,totalData*sizeof(int),cudaMemcpyDeviceToHost);

也要确保处理返回错误代码,如“

”。如果你的问题得到解决,你能考虑接受答案吗?