假设我在cuda内核中定义了一个共享变量,如下所示:
__shared__ int var;
Run Code Online (Sandbox Code Playgroud)
现在,让我们在我的内核某些时候,我想分配一些值,说,说100来var.话
var = 100;
Run Code Online (Sandbox Code Playgroud)
导致块中的所有线程执行此赋值.
如何才能让作业只进行一次?这是我唯一的选择:
if( threadIdx.x == 0)
var = 100;
Run Code Online (Sandbox Code Playgroud)
?
tal*_*ies 10
你唯一的选择就是:
if( threadIdx.x == 0)
var = 100;
__syncthreads();
Run Code Online (Sandbox Code Playgroud)
如果省略同步障碍,则无法保证块中的所有线程都将读取var赋值语句执行后的值.