cuda - 如何暂停所有 CUDA 线程,直到线程 0 完成一些代码?
问题描述
我在下面有一个简单的 CUDA 代码。我的问题是如何在线程 0 初始化数组数据时使所有线程暂停。所以在那之后,所有线程都可以访问数据中的元素。
__device__ int *data;
__global__ void test() {
int idx = blockIdx.x * blockDim.x + threadIdx.x;
if (idx == 0) {
data = (int *) malloc(10 * sizeof (int));
}
data[idx] = idx;
printf("%d", data[idx]);
}
int main() {
test << <1, 10 >> >();
return 0;
}