我想编写一个策略来并行计算数组中的项。旧策略parArr
执行此操作(see here)。但是在新的Control.Parallel.Strategies模块中找不到这个。
E.g。
并行列表评估:map f myList `using` parList rdeepseq
我希望能够执行以下操作:amap f myArr `using` parArr rdeepseq
,其中amap
来自Data.Array.Base,并将函数应用于每个元素(顺序)。
以下似乎有效,但我想知道它是否正确,并想知道我如何定义自己的parArr
。
这有效:amap ((+1) `using` rpar) $ Array.array (0,4) [(0,10),(1,20),(2,30),(3,40),(4,50)]
答案 0 :(得分:4)
对于previous question,我为矢量包编写了一个并行评估策略。这应该是一个很好的起点。您可以在see the code on hackage包中vector-strategies。
我没有时间给出完整的答案 - 也许我稍后会对此进行编辑。随意提出额外的问题和方向。
答案 1 :(得分:2)
除了给出的所有好建议之外:没有parArr
的原因仅仅是它已经被更一般的parTraversable
所取代。只是说:
amap f myArr `using` parTraversable rdeepseq
这应该会给你你要求的行为。