【发布时间】:2011-12-14 21:25:15
【问题描述】:
我在 OpenCL 中迈出了第一步,但我遇到了一个问题,我认为结果没有正确保存。我首先制作了一个简单的程序,它可以正常工作,给出正确的结果等。所以 main 运行正常,数组按照它们应该的方式填充等等。
程序的简要说明: 我有一个 4x4 点的网格(OP 数组),在一个 40x40 的字段中。有一架飞机在这片场地上空飞行,它的航线被分成 100 段(段数组)。 Coord 是一个 typedef 结构,目前只有双 x 和双 y 值。我知道有更简单的解决方案,但我以后必须使用它,所以我这样做。内核应该计算从点(OP)到段的距离。结果必须保存在数组 Distances 中。
内核的描述:它获取的是全局 id,从中计算它必须计算哪个 OP 和哪个段。使用该信息,它从这 2 中获取 x 和 y,并计算彼此之间的 x 和 y 距离。有了这些信息,它会根据距离和飞行高度求平方根。
问题是,距离表只显示零:P
kernel: http://pastebin.com/U9hTWvv2 有一个参数说 __global const Coord* Afstanden,这必须是 __global double* Afstanden
主要的 OpenCL 内容:http://pastebin.com/H3mPwuUH(因为我不能 100% 确定我这样做是对的)
我可以给你整个程序,但主要是荷兰语:P
我尽量解释清楚,如果有什么不清楚的地方,我会尽量澄清;)
由于我在第一个内核中犯了许多小错误,这里是他的继任者:http://pastebin.com/rs6T1nKs OpenCL 部分也进行了一些更新:http://pastebin.com/4NbUQ40L 因为它也有一个或两个错误。
在我看来,它现在应该可以工作了……但事实并非如此,问题仍然存在
【问题讨论】:
-
我认为问题在于内核无法从 Coord 获取 x 和 y 值...但不确定,仍在寻找可以解决我的问题的人 :)跨度>
标签: opencl