C#/ OpenCL - 2D数组作为内核argumment

时间:2017-01-23 16:38:33

标签: c# opencl cloo

我在C#中使用Cloo库。

我无法弄清楚或找到有关如何将2D数组添加为内核参数的任何内容。

这是我的代码:

ComputeBuffer<char> field = new ComputeBuffer<char>(Program.context, ComputeMemoryFlags.ReadWrite | ComputeMemoryFlags.CopyHostPointer, veld);

它只是给了我错误:&#39;无法从char [,]转换为long&#39;。 暗示它将其视为其他重载之一。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

  

草原

变量应该是连续的内存区域。使用1D阵列但尺寸足以在设备端用作2D阵列。

当您需要主机端操作时,使用i + w * j索引访问以模仿2D访问。如果您使用固定数组在不安全的上下文中执行此操作,这可能不会造成性能损失。