gpt4 book ai didi

cuda - 为什么不能使用单线程来初始化共享内存?

转载 作者:行者123 更新时间:2023-12-02 07:50:10 24 4
gpt4 key购买 nike

这看起来应该很简单,但我找不到任何引用资料,所以我在这里问。

我有以下 CUDA 内核,我在 2D 线程 block 网格中启动它:

__global__ void kernel(){

if (threadIdx.x == 0 && threadIdx.y == 0) {
__shared__ int test = 100;
}
__syncthreads();

// Do more stuff
}

当我尝试编译时,出现错误

initializer not allowed for shared variable

我做错了什么?在我看来,我只有一个线程进行初始化......

谢谢!

最佳答案

这样做:

__global__ void kernel(){
__shared__ int test;
if (threadIdx.x == 0 && threadIdx.y == 0) {
test = 100;
}
__syncthreads();

// Do more stuff
}

__shared___ 变量的声明必须与操作它的代码分开。

关于cuda - 为什么不能使用单线程来初始化共享内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21485114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com