我在OpenCL中迈出了第一步,我遇到了问题,我认为结果没有正确保存。我首先制作了一个简单的程序,它正在工作,给出了正确的结果等。因此主要功能正常,数组以它们应该的方式填充等。
该计划的简要说明: 我有一个4x4点(OP阵列)的网格,在40x40的字段中。在该场上方有一架飞机,它的路线分为100段(段阵列)。 Coord是一个typedef结构,目前只有一个双x和双y值。我知道有更简单的解决方案,但我必须在以后使用它,所以我这样做。内核应该计算从点(OP)到段的距离。结果必须保存在数组距离中。
内核的描述:它获取的是全局id,从中计算出哪个OP以及它必须计算哪个段。使用该信息,它从那些2获取x和y,并计算彼此之间的x和y距离。根据这些信息,它可以根据距离和飞行高度进行平方根。
问题是,距离表只显示零:P
内核: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因为它也有一两个错误。< / p>
在我看来它现在应该有效......但事实并非如此,问题仍然存在
答案 0 :(得分:0)
好吧,似乎“Afstanden”变量被声明为“const Coord *”。删除常量 - 即“仅Coord * - 并确保当您使用clCreateBuffer”CL_MEM_WRITE_ONLY“或”CL_MEM_READ_WRITE“作为参数时。
“问题是,距离表只显示零:P” 您可能正在使用零初始化CPU侧的Afstanden。我对么?这可以解释这种行为。