0

我有一个问题,我想用 Android Renderscript 进行并行化。为此,我必须将输入数据分配给 renderscript 并将它们分配回去。我想做大小为 8x8 或 64x64 矩阵的大矩阵乘法。有两个问题:1)我不能分配二维数组。2) forEach 执行循环的频率与分配的大小一样。例如,输入向量有 10 个元素,循环将执行 10 次。为了找到解决方案,我进行了编码。所以我的矩阵是在字节数组中随机生成的。这个字节数组将被编码为一个整数数组的行或列。所以我把一个二维数组放在一个长度为大小的一维数组中。另一方面(Renderscript)我必须对它们进行解码,计算结果并将其与分配放在后面。我想避免编码并加快应用程序。

array[a][b] --> vector[a] or vector[b] but not vector[a*b] 是否存在可能的解决方案?

4

2 回答 2

0

为了帮助解决问题的第二部分,请将矩阵 Allocations 单独绑定到 Renderscript 并将 rsForEach 传递给另一个根据您要执行的操作数量调整大小的 Allocation。您可以使用此分配中设置的值和/或 root() 函数的 x 参数来帮助您找到对矩阵数据进行操作的位置。

我对图像的每行/列进行操作的答案提供了更多详细信息。

于 2013-04-20T08:01:58.163 回答
0

我不确定我是否完全理解您的问题。

让我试着根据我的理解提出一个一般性的建议。

您可以创建一个包装器类,通过 getter 和 setter 将输入索引转换为内部索引,这个包装器还可以实现 java.lang.Iterable。

于 2013-04-18T13:30:25.523 回答