内核OpenCL不保存结果?

内核OpenCL不保存结果?,opencl,Opencl,我在OpenCL中迈出了第一步,但我遇到了一个问题,我认为结果没有正确保存。我首先做了一个简单的程序,就是工作,给出正确的结果,等等。所以main功能正常,数组按预期的方式填充,等等 节目简介: 我有一个4x4点的网格,在一个40x40的区域内。有一架飞机在这个区域上空飞行,它的路线被分成100段。Coord是一个typedef结构,当前只有一个双x和双y值。我知道有更简单的解决方案,但我以后必须使用它,所以我这样做。内核应该计算从一个点到一个段的距离。结果必须保存在阵列距离中 内核描述:它获取

我在OpenCL中迈出了第一步,但我遇到了一个问题,我认为结果没有正确保存。我首先做了一个简单的程序,就是工作,给出正确的结果,等等。所以main功能正常,数组按预期的方式填充,等等

节目简介: 我有一个4x4点的网格,在一个40x40的区域内。有一架飞机在这个区域上空飞行,它的路线被分成100段。Coord是一个typedef结构,当前只有一个双x和双y值。我知道有更简单的解决方案,但我以后必须使用它,所以我这样做。内核应该计算从一个点到一个段的距离。结果必须保存在阵列距离中

内核描述:它获取的是全局id,从中计算出它必须使用的OP和段。根据这些信息,它从这两个数据中获取x和y,并计算彼此之间的x和y距离。根据这些信息,它将距离和飞行高度作为平方根

问题是,距离表仅显示零:p

内核:有一个参数说uu global const Coord*Afstanden,这必须是u global double*Afstanden

OpenCL的东西主要是:因为我不是100%确定我这样做是对的

我可以给你整个计划,但大部分是荷兰语:p

我尽量把一切都解释清楚,如果有不清楚的地方,我会尽量把它弄清楚

由于我在第一个内核中犯了很多小错误,下面是他的继任者:OpenCL部分也有一些更新:因为它也有一两个错误


在我看来,它现在应该起作用了。。。但事实并非如此,问题仍然存在

嗯,似乎Afstanden变量被声明为const-Coord*。删除constness,即Coord*only,并确保在使用CL_MEM_WRITE_only或CL_MEM_READ_WRITE作为参数时

问题是,距离表仅显示零:p
您可能正在用零初始化CPU端的Afstanden。我说得对吗?这可以解释这种行为。

好吧,似乎Afstanden变量被声明为const-Coord*。删除constness,即Coord*only,并确保在使用CL_MEM_WRITE_only或CL_MEM_READ_WRITE作为参数时

问题是,距离表仅显示零:p
您可能正在用零初始化CPU端的Afstanden。我说得对吗?这可以解释这种行为。

我认为问题在于内核无法从Coord获取x和y值。。。但不确定,仍在寻找能够阐明我的问题的人:我认为问题在于内核无法从Coord获得x和y值。。。但不确定,仍在寻找能为我的问题提供答案的人:我确实已经删除了constness,因为我已经认为这会很奇怪。我发布的内核中也有很多错误,所以我上传了第二个,我现在正在使用的那个。我还在我的主页上发布了OpenCL的一个稍加修改的版本。回答你的第二段:但是在内核的末尾,它应该有一些其他的值。但事实并非如此。它只是显示了那些初始的零。我已经删除了常数,因为我已经认为这会很奇怪。我发布的内核中也有很多错误,所以我上传了第二个,我现在正在使用的那个。我还在我的主页上发布了OpenCL的一个稍加修改的版本。回答你的第二段:但是在内核的末尾,它应该有一些其他的值。但事实并非如此。它只是显示那些初始的零。