0

我对 OpenCL 很陌生。我的 OpenCL 代码非常简单。它包含 2 个函数,其中 __kernel-functions 调用另一个(非内核)函数。我想将数组传递给这个函数,但是当我这样做时,我的函数(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
    }

我在这里做错什么了吗?

4

2 回答 2

1

您在此行缺少分号:

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

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

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

于 2013-11-12T01:13:54.920 回答
0

谢谢大家......这是我的错误。我为 0 分配了一些值,我只是尝试添加这些值。

于 2013-11-12T11:20:51.443 回答