如何在CUDA中返回块中的其他线程?

时间:2018-01-23 10:53:43

标签: c++ cuda

我试图访问同一个块中的其他线程,我想返回一些。我想做这样的事情:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>

__global__ void returnKernel()
{
    if (blockIdx.x == threadIdx.x)
    {
        //exit/return thread 1
    }
}

int main()
{
    returnKernel<<<4, 4>>>();
    return 0;
}

提前致谢!

1 个答案:

答案 0 :(得分:1)

没有办法“杀死”其他正在运行的线程,他们需要“投降”自己。以下是您修改的问题的代码,以退出第1个主题:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>

__global__ void returnKernel()
{
    if (blockIdx.x < blockDim.x && threadIdx.x == 1)
    {
        return;
    }
}

int main()
{
    returnKernel<<<4, 4>>>();
    return 0;
}