在OpenCL上,我们可以假设连续写入是原子的吗?

时间:2018-05-30 04:01:31

标签: opencl

考虑OpenCL中的以下代码:

void set_vals(__global int* mem) {
    mem[0] = 1;
    mem[1] = 2;
}

void get_vals(__global int* mem) {
    int x = mem[0];
    int y = mem[1];
    printf("%d %d\n", x, y);
}

假设内存开始全部为零,并且两个工作项并行运行set_valsget_vals,那么可能要打印的值是什么?显然,0 01 2是可能的,但1 00 2也可能吗?还要注意以下代码:

void set_vals(__global int2* mem) {
    mem[0] = (int2)(1, 2);
}

void get_vals(__global int2* mem) {
    int2 a = mem[0];
    printf("%d %d\n", a.x, a.y);
}

那种情况怎么样:1 00 2是可能的,还是矢量写入原子?

0 个答案:

没有答案