OpenCL数组返回0

时间:2019-03-05 17:02:30

标签: opencl gpu-programming

我是OpenCL的新手,在访问数组时遇到问题。我正在使用printf调试程序。

(公认的)代码如下:

__constant static int array_2[4] = {
    0, 1,
    2, 3
};

void __kernel first_kernel(__global const int* input, __global int* output) {
    __private int array_0[2];
    __private int array_1[] {
        100, 101, 102, 103
    };
    for (int index < 0; index < 2; index++) {
        array_0[0] = array_1[array_2[2 * index]];
        array_0[1] = array_1[array_2[2 * index + 1]];
        printf("array_0: [%d, %d]\n", array_0[0], array_0[1]);
        printf("array_1[0] = %d\n", array_1[0]);
        printf("array_2[2 * index] = %d\n", array_2[2 * index]);
        printf("array_1[array_2[2 * index]] = %d\n", array_1[array_2[2 * index]]);
    }
}

第一次迭代的输出是:
    array_0:[0,0]
    array_1 [0] = 100
    array_2 [2 * index] = 0
    array_1 [array_2 [2 * index]] = 0

为什么最后一行的输出为“ 0”?似乎使用常数0访问数组会得到正确的结果,但是使用等于0的“ array_2 [2 * index]”访问同一数组会导致错误的结果。怎么回事?

感谢您的帮助!

0 个答案:

没有答案