是否可以在 Repa 中计算一个依赖于过去值(即较小的索引)的数组?给出了数组的初始部分(例如,a[0]
)。(请注意,我使用类似 C 的符号来表示数组的元素;请不要混淆。)
我阅读了教程并快速检查了hackage,但我找不到执行此操作的功能。
(我想在一维数组中进行这种计算在 Repa 中没有意义,因为你不能并行化它。但我认为你可以在二维或更多维的情况下并行化它。)
编辑f
:也许我应该更具体地说明我想使用哪种。由于没有办法在 casea[i]
是标量的情况下进行并行化,所以让我们关注 casea[i]
是 N dim 向量的情况。我不需要a[i]
更高维(例如矩阵),因为您可以将其“展开”为向量。因此,f
是一个将 R^N 映射到 R^N 的函数。
大多数情况下,它是这样的:
b = M a[i-1]
a[i][j] = g(b)[j]
其中b
是一个 N 暗向量,M
是一个 N × N 矩阵(不假设稀疏性),并且g
是一些非线性函数。我想为i=1,..N-1
给定a[0]
的g
和计算它M
。我希望有一些通用的方法来(1)并行化这种类型的计算和(2)分配中间变量,例如b
高效的(在类 C 语言中,你可以重用它,如果 Repa 或类似的库可以像魔术一样做到这一点而不会破坏纯度)。