我有一个用Java编写的程序,其中涉及大量的多维数组。我正在尝试使用 JOCL (OpenCL) 对其进行并行化,但多维数组必须先转换为单维数组,然后再传递给 OpenCL。
除了用一维数组重写整个程序之外,还有其他解决办法吗?
最佳答案
以下是当我有多维数组时我在 C++ 中所做的操作:
for (int i = 0 ; i < n ; i++) {
queue.enqueueWriteBuffer(buffer, CL_FALSE, i*m*sizeof(int), m*sizeof(int), data[i]);
}
当我需要阅读时也是如此,只是要小心你的内核和索引。
你不能在 Java 中做同样的事情吗?
关于Java:将多维数组转换或引用为一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11756750/