C#/OpenCL - 二维数组作为内核参数
C#/OpenCL - 2D array as kernel argumment
我正在使用 C# 的 Cloo 库。
我无法弄清楚或找不到有关如何将二维数组添加为内核参数的任何信息。
这是我的代码:
ComputeBuffer<char> field = new ComputeBuffer<char>(Program.context, ComputeMemoryFlags.ReadWrite | ComputeMemoryFlags.CopyHostPointer, veld);
它只是给我错误:'Cannot convert from char[,] to long'。
暗示它将其视为其他重载之一。
我做错了什么?
veld
变量应该是连续的内存区域。使用一维数组,但大小足以在设备端用作二维数组。
当需要主机端操作时,使用i+w*j索引访问,仿二维访问。如果您在使用固定数组的不安全上下文中执行此操作,这可能不会造成性能损失。
我正在使用 C# 的 Cloo 库。
我无法弄清楚或找不到有关如何将二维数组添加为内核参数的任何信息。
这是我的代码:
ComputeBuffer<char> field = new ComputeBuffer<char>(Program.context, ComputeMemoryFlags.ReadWrite | ComputeMemoryFlags.CopyHostPointer, veld);
它只是给我错误:'Cannot convert from char[,] to long'。 暗示它将其视为其他重载之一。
我做错了什么?
veld
变量应该是连续的内存区域。使用一维数组,但大小足以在设备端用作二维数组。
当需要主机端操作时,使用i+w*j索引访问,仿二维访问。如果您在使用固定数组的不安全上下文中执行此操作,这可能不会造成性能损失。