求教一个由Host向device中全局存储器赋值的问题

定义结构体
struct individual
{
char chrom[lenthofpop];
double value;
};

在main()中定义
individual * GpuSpace;
int size=numofpop*sizeof(individual);
cudaMalloc((void**)&GpuSpace,size);
cudaMemcpy(GpuSpace,population,size,cudaMemcpyHostToDevice);

经调试单步运行GpuSpace中没有正确赋值,显示指针错误。
麻烦问一下这个问题怎么解决呢?

给出错误的使用变量的代码

应该不是指针的问题,就是
cudaMemcpy(GpuSpace,population,size,cudaMemcpyHostToDevice);
之后在global函数中
global static void kernel1(individual * GpuSpace,individual * GpuSpaceOut)
{
int i;
i=threadIdx.x;
int templow,temphigh;
double x1,x2;

if (i=25)
{
templow=Decode(GpuSpace[i].chrom,int(lenthofpop/2),0);
temphigh=Decode(GpuSpace[i].chrom,int(lenthofpop/2),1);

x1=4.096templow/1023-2.048;
x2=4.096
temphigh/1023-2.048;

GpuSpace[i].value=100*(x1x1-x2)(x1x1-x2)+(1-x1)(1-x1
GpuSpaceOut[i].value=GpuSpace[i].value;
}
}
中的GpuSpace[25].chrom均为0,与population[25]不符。
不知道是不是cudaMemcpy()没有起作用,导致赋值不正常?

:surprise:

没有限定线程索引的边界。