【发布时间】:2011-07-03 08:34:33
【问题描述】:
哈,
我写了一个cuda程序,下面给出了内核函数。设备内存是
通过CUDAMalloc()分配;
*md 的值为 10;
__global__ void add(int *md)
{
int x,oper=2;
x=threadIdx.x;
* md = *md*oper;
if(x==1)
{
*md = *md*0;
}
if(x==2)
{
*md = *md*10;
}
if(x==3)
{
*md = *md+1;
}
if(x==4)
{
*md = *md-1;
}
}
执行了上面的代码
add<<<1,5>>(*md) , add<<<1,4>>>(*md)
for <<<1,5>>> the output is 19
for <<<1,4>>> the output is 21
1) 我怀疑 cudaMalloc() 是否会在设备主内存中分配? 2) 为什么上面的程序总是只执行最后一个线程?
谢谢
【问题讨论】:
-
有一堆错误。检查您的退货状态,您编写了您不知道的段错误。
标签: cuda