无并行化修复

即使不考虑其并发能力,我也非常喜欢Repa的界面。 实际上我需要repa的数组是连续的,因为我的数组相对较小,并且对它们的并行化是无用的,甚至是有害的。

不过,我使用并行在我与并行IO程序,所以我编译-threaded与运行+RTS -Nx 。 这使得并行化可以进行修复。 有没有办法关闭repa的并发功能?

嗯,在写这篇文章的时候,我知道我不太可能需要DIM1以外的其他东西,所以也许我应该切换到Vector 。 但是,这个问题的答案是有用的。

我用并行运行得到的警告信息是

Data.Array.Repa: Performing nested parallel computation sequentially.
  You've probably called the 'force' function while another instance was
  already running. This can happen if the second version was suspended due
  to lazy evaluation. Use 'deepSeqArray' to ensure that each array is fully
  evaluated before you 'force' the next one.

我其实在代码中没有任何force


使用http://code.ouroborus.net/repa/repa-head的Repa 3开发版。 它有一个“force”(称为computeS)的版本,可以按顺序评估数组。

Repa不会自动顺序化小阵列上的操作。 使用(map f xs),运行时对'f'的作用与'xs'的大小有关。 Repa不会试图弄清'f'在做什么(这很难),所以它不知道计算的成本是多少。

链接地址: http://www.djcxy.com/p/10295.html

上一篇: Repa Without Parallelization

下一篇: Is there a way to find out the age of an AWS account?