我怎样才能帮助GHC中的SpecConstr?

Cha*_*rer 11 haskell ghc repa data-parallel-haskell

我正在使用GHC 7.4.1来尝试编译使用Repa的程序.但是在编译过程中,我的内存耗尽了.有了ghc -v,我可以看到它陷入了SpecConstr阶段.

SpecConstr是GHC的Core-to-Core转换之一.西蒙佩顿琼斯有一个很好的描述在这里,而且有一些代码在这里,但它是相当缓慢的去为我,因为我不是很熟悉,GHC的内部运作.

我希望能够以某种方式帮助编译器 - 有没有办法告诉它哪里被困?或者,有没有办法在这个阶段限制内存使用,直到我可以在更大的机器上重新编译?

谢谢,乍得

Joh*_*n L 6

你可以尝试用标志编译-fspec-constr-threshold=n-fspec-constr-count=n.GHC文档中有更多详细信息.对于7.4.1,阈值的默认值为n = 200,计数的n = 3.

但是,如果没有看到代码,您可能会遇到此错误.在这种情况下,如果上述选项不足,您可能需要完全禁用specconstr pass.