【问题标题】:how to present a 2d array in an 1d array with a size of height or width如何在高度或宽度大小的一维数组中呈现二维数组
【发布时间】:2013-04-11 15:04:30
【问题描述】:

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

array[a][b] --> vector[a] or vector[b] but not vector[a*b] 有没有可能的解决方案?

【问题讨论】:

    标签: java android parallel-processing matrix-multiplication renderscript


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      我的回答 for operating per row/column of an image 提供了更多详细信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-20
        • 2013-09-13
        • 1970-01-01
        相关资源
        最近更新 更多