Haskell Array.Accelerate – forkOS错误

试图用gnuplot来绘制一些Data.Array.Accelerate计算的输出我遇到了一个奇怪的问题。 当通过解释器运行时,一切都很好,就像直接绘制Haskell数据或者只是打印Accelerate值一样,但是尝试绘制Accelerate数据失败。 给出的错误是forkOS_entry: interrupted

从那以后,我意识到我应该做更多的UNIX,并且在每个程序中做一件事(好)。 但我有兴趣找出为什么这个失败。 我在下面包含一个最小代码示例。

 import Prelude hiding (zip,zipWith) import Graphics.Gnuplot.Simple import Data.Array.Accelerate -- import Data.Array.Accelerate.Interpreter import Data.Array.Accelerate.CUDA f :: Vector Float -> Vector Float -> Acc (Vector Float) f xs ys = let xs' = use xs ys' = use ys in (zipWith (*) xs' ys') n=10::Int points = toList.run $ f (fromList (Z:.n) [1..10]) (fromList (Z:.n) [-5..4]) main = plotList [] points 

更新2014/09/11

根据user2141650的build议(谢谢!)改变最后一行

 plotList [] $! points 

修复了这个问题。 事实上,这使情节实际上出现,而没有这个程序将完成或没有错误,但不会实际显示情节。 我想我会接受这个作为答案,如果它被写了,但它仍然是很高兴知道发生了什么事情。

可能相关:

  • forkOS_entry:中断的错误:这是什么?

(顺便说一句,请停止尝试编辑语法,因为这个问题没有什么问题,我是一个母语的人,写的正是我的意思,谢谢你的贡献。

正如我在评论中提到的那样,这很可能是因为gnuplot的交互式交互和在GPU上加速,当加速计算被懒惰地调用时。 我不能说我知道的细节,但这[0]似乎相关。 这可能是gnuplot无法使用GPU,因为Accelerate已经声明了它,但Accelerate在完全评估之前不会释放它。 或者gnuplot 加速之前声称GPU。 毛茸茸的问题,这可能需要在加速的github问题跟踪器中提到。

[0] https://github.com/AccelerateHS/accelerate/issues/48