内核函数的OpenCL调用函数 - 数组元素为0

时间:2013-11-11 18:52:40

标签: arrays function opencl d

我对OpenCL很陌生。我的OpenCL代码非常简单。它包含2个函数,其中__kernel函数调用另一个(非内核)函数。我想将数组传递给这个函数,但是当我这样做时,我的函数(add)总是返回0.完整的数组是0。 但是当我在我的内核函数中访问相同的索引时,结果是预期的......这是我正在使用的代码:

    int add(__global  int * numArray) {
        return numArray[1]+numArray[2];

    }

    __kernel void sum(__global int * numArray, __global int * result) {
        result[get_global_id(0)] = numArray[0] //
        result[get_global_id(0)] = add(numArray); // = 0
    }

我在这里做错了吗?

2 个答案:

答案 0 :(得分:1)

您在此行中缺少分号:

result[get_global_id(0)] = numArray[0] //

因此第二行只是第一行的延续(虽然我希望它会产生错误)。

如果不是这样,我会更改add()以使用“numArray [0]”与不调用add()的版本进行精确比较,因此您将苹果与苹果进行比较(而不是依赖于元素1和2中的值。

答案 1 :(得分:0)

感谢所有......这是我的错误。我将一些值分配给0,我只是尝试添加这些值。