【发布时间】:2012-08-01 09:52:03
【问题描述】:
我有一个用 Java 编写的程序,其中涉及大量的多维数组。我正在尝试使用 JOCL (OpenCL) 对其进行并行化,但在传递给 OpenCL 之前,必须将多维数组转换为一维数组。
除了用一维数组重写整个程序,还有其他的解决办法吗?
【问题讨论】:
-
@HighPerformanceMark 我认为除了复制整个数组之外,没有其他方法可以展平数组。在这种情况下这是不可能的,因为 OpenCL 内核是在一个巨大的循环中执行的,并且数组有 500M~2GB 大。我错了吗?
-
我不知道 JOCL 是什么或做什么,但 Java 没有多维数组。它所拥有的只是数组的数组。所以你实际上有一个平面阵列。这个平面数组的每个元素都是一个数组。
-
@JBNizet 在这种情况下,我想最好的解决方案是将所有数组更改为平面数组并使用复杂的索引使其“多维” - 我想我可以编写一个脚本来大规模创建索引函数和将每个多维索引替换为一维等效索引。
标签: java parallel-processing opencl gpgpu jocl