新手求助 CUDA诡异现象

hitaka 2012-03-03 09:53:55
核函数如下:
__global__ void testKernel( float *inData,float *oData,int num)
{
oData[blockIdx.x*8+threadIdx.x]=threadIdx.x;
}
程序如下
#define MEMSIZE 4090

运行结果是输出全为0,但是如果把MEMSIZE改成4089以下,结果就是正确的……求助各位大神……这究竟是为了神马……搞了一天,崩溃了

void output(float *inData,int size)
{
for (int i=0;i!=size;i++)
{
std::cout<<inData[i]<<" ";
}
std::cout<<std::endl;
}
void run( int argc, char** argv)
{
cutilDeviceInit(argc,argv);
int memSize=MEMSIZE*sizeof(float);
float *devInData,*devOutData;

float *hostA,*hostB;
hostA=(float *)malloc(memSize);
hostB=(float *)malloc(memSize);
for (int i=0;i<MEMSIZE;i++)
{
hostA[i]=1.1;
hostB[i]=2;
}

cudaError_t err;
cutilSafeCall(err=cudaMalloc((void **)&devInData,memSize));
cutilSafeCall(err=cudaMalloc((void **)&devOutData,memSize));
cutilSafeCall(err=cudaMemcpy(devInData,hostA, memSize,cudaMemcpyHostToDevice));
cutilSafeCall(cudaMemcpy(hostB,devInData, memSize,cudaMemcpyDeviceToHost));


dim3 grid(512);
dim3 thread(8);

testKernel<<<grid,thread,memSize>>>(devInData,devOutData,MEMSIZE);
cutilSafeCall(cudaMemcpy(hostB,devOutData, memSize,cudaMemcpyDeviceToHost));
std::cout<<"out";
output(hostB,MEMSIZE);
}
...全文
92 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjb19880803 2012-04-05
  • 打赏
  • 举报
回复
我认为没有错误。但是我也不知道你要的到的是神马结果。得到threadIdx没有意义。不应该出现结果是全0的。
snipekevin 2012-03-28
  • 打赏
  • 举报
回复
看不懂的是你的 inData 是不是没有用?还有就是你的程序是4096个线程,但是只分配了4090个float空间给oData,那oData[4091]~oData[4095]是不是越界了?

__global__ void testKernel( float *inData,float *oData,int num)
{
if(blockIdx.x*8+threadIdx.x<MEMSIZE)
oData[blockIdx.x*8+threadIdx.x]=threadIdx.x;
}

还有就是请教一个问题,kernel<<<>>>的第三个参数是什么含义?
jimye 2012-03-08
  • 打赏
  • 举报
回复
程序这样还能运行正确?

核函数上面这行
cutilSafeCall(cudaMemcpy(hostB,devInData, memSize,cudaMemcpyDeviceToHost));
应该改成这样的吧:
cutilSafeCall(cudaMemcpy(devInData,hostB, memSize,cudaMemcpyHostToDevice));

580

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧