首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__syncthreads()死锁

__syncthreads()死锁
EN

Stack Overflow用户
提问于 2011-06-25 15:58:21
回答 2查看 1.1K关注 0票数 2

如果只有一些线程执行__syncthreads(),它会导致死锁吗?

我有一个这样的内核:

代码语言:javascript
复制
__global__ void Kernel(int N,int *a)
{
    if(threadIdx.x<N)
    {
      for(int i=0;i<N;i++)
       {
        a[threadIdx.x]= //Some calculation using a and i
        __syncthreads()
       }
    }
}

如果块中的线程数大于N,则某些线程将不会执行代码。这会导致死锁吗?

如果是,那么我如何修改代码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-25 18:32:22

您不应该在不同的代码中使用__syncthreads()。它在这种情况下的行为是不确定的。

__syncthreads()可能会出现在条件分支中,如果您确定,此分支将以相同的方式由块中的所有线程统一计算(块中的所有线程或没有线程接受该分支)。

票数 3
EN

Stack Overflow用户

发布于 2011-06-25 16:02:46

从技术上讲,内核不会死锁;它们只能超时。但是,是的,你所描述的是真实的,并且可能发生。这个问题实际上以前已经讨论过了,例如:Realistic deadlock example in CUDA/OpenCL

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6476613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档