Я пытаюсь использовать локальную переменную для синхронизации всех рабочих элементов в рабочей группе.Однако остальная часть условной проверки всегда дает сбой.Значение d [0] для других рабочих элементов не равно нулю.Почему локальная переменная не видна в рабочей группе?
Я использую AMD APU A12-9800
__kernel void test(__global int *input_vector,__global atomic_int *mem_flag)
{
local int d[32];
if(get_local_id(0)==0) {
d[0] = 100;
}
barrier(CLK_GLOBAL_MEM_FENCE| CLK_LOCAL_MEM_FENCE);
while(1) {
if(get_local_id(0) == 0) {
d[0] = 0;
break;
}
else {
if(d[0] == 0)
break;
}
}
}