gpt4 book ai didi

haskell - 如何在 Repa 中计算 a[i] = f(a[i-1])?

转载 作者:行者123 更新时间:2023-12-02 11:15:01 25 4
gpt4 key购买 nike

是否可以在 Repa 中计算依赖于过去值(即较小索引)的数组?给出了数组的初始部分(例如,a[0])。 (请注意,我使用类似 C 的表示法来指示数组的元素;请不要混淆。)

我读了tutorial并快速检查 hackage,但我找不到执行此操作的函数。

(我猜在一维数组中进行这种计算在 Repa 中没有意义,因为你无法并行化它。但我认为你可以在二维或更多维的情况下并行化它。)

编辑:也许我应该更具体地说明我想使用哪种 f 。由于在 a[i] 是标量的情况下无法并行化,因此我们将重点关注 a[i] 是 N 个暗向量的情况。我不需要 a[i] 是更高维度的(例如矩阵),因为您可以将其“展开”为向量。因此,f 是将 R^N 映射到 R^N 的函数。

大多数情况是这样的:

b = M a[i-1]
a[i][j] = g(b)[j]

其中 b 是一个 N 暗向量,M 是一个 N × N 矩阵(不假设稀疏性),g 是一些非线性函数。我想计算给定 a[0]gM< 的 i=1,..N-1/。我希望有一些通用的方法来(1)并行化这种类型的计算,(2)使诸如 b 之类的中间变量的分配更加高效(在类似 C 的语言中,你可以重用它,如果 Repa 或类似的库能够像魔术一样做到这一点而不破坏纯度,那就太好了)。

最佳答案

我看不到 Repa 这样做的方法。但向量有:Data.Vector.iterateN构建你想要的向量。然后Data.Array.Repa.fromUnboxed将其从 Vector 转换为 Repa。

iterateN :: Int -> (a -> a) -> a -> Vector aSource

O(n) Apply function n times to value. Zeroth element is original value.

关于haskell - 如何在 Repa 中计算 a[i] = f(a[i-1])?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11228676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com