CUDA 求最小值出错,同样方法最大值却无错...求解答

__global__voidCimaxCalc(intNf,float*input,float*CiMax,float*CiMin){unsignedints=Nf/2;... __global__ void CimaxCalc(int Nf,float* input,float* CiMax,float* CiMin)
{
unsigned int s=Nf/2;
int tid = blockDim.x*blockIdx.x + threadIdx.x;
if(tid<Nf)
{
CiMin[tid]=input[tid];
CiMax[tid]=input[tid];
__syncthreads();
s=Nf/2;
while(s>0)
{
if(tid<s)
{
if(CiMin[tid]>CiMin[tid+s])
CiMin[tid]=CiMin[tid+s];
if(CiMax[tid]<CiMax[tid+s])
CiMax[tid]=CiMax[tid+s];
__syncthreads();
if((0.5*s-s/2)!=0&&s!=1)
{
s++;
CiMax[s-1]=CiMin[s-1]=0;
}
s>>=1;
}
else
break;
__syncthreads();
}
__syncthreads();
}
__syncthreads();
}
最后CiMax结果正确,CiMin全部是0
为什么啊...
展开
 我来答
ASDFOoOasdf
2015-11-18 · TA获得超过111个赞
知道答主
回答量:198
采纳率:100%
帮助的人:94.9万
展开全部
如果你的数组中的数都大于零且数组元素个数不为2的幂次时,其中有赋值零的过程,这样肯定是最小值为零了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式