这段代码,没有i用到kernel函数,只是分配内存等操作,结果显示:0.000000,iz=0,ix=0
-1.#QNAN0,iz=0,ix=1
-1.#QNAN0,iz=0,ix=2
-1.#QNAN0,iz=0,ix=3
-1.#QNAN0,iz=0,ix=4
-1.#QNAN0,iz=0,ix=5
-1.#QNAN0,iz=0,ix=6
-1.#QNAN0,iz=0,ix=7
-1.#QNAN0,iz=0,ix=8
-1.#QNAN0,iz=0,ix=9
-1.#QNAN0,iz=1,ix=0
-1.#QNAN0,iz=1,ix=1
-1.#QNAN0,iz=1,ix=2
。。。。。。。。。
是怎么回事呢?还有屏蔽的那句cudamemset函数是可以对其清0的对嘛
#include <stdio.h>
#include <cuda_runtime.h>
#define Nx 10
#define Nz 4
int main()
{
float *CPU_V;
CPU_V=(float*)malloc(Nx*Nz*sizeof(float));
float *GPU_V;
cudaMalloc((void**)&GPU_V,Nx*Nz*sizeof(float));
//cudaMemset((void**)&GPU_V,0,Nx*Nz*sizeof(float));
cudaMemcpy(CPU_V,GPU_V,Nx*Nz*sizeof(float),cudaMemcpyDeviceToHost);
for (int iz=0;iz<Nz;iz++)
{
for (int ix=0;ix<Nx;ix++)
{
printf("%f,iz=%d,ix=%d\n",CPU_V[iz*Nx+ix],iz,ix);
}
}
return 0;
}