En essayant de tracer la sortie de certains Data.Array.Accelerate
calculs avec des gnuplot
j'ai rencontré un problème étrange. Lorsqu'il est exécuté par l'interpréteur, tout est parfait, comme l'est le tracé rectiligne Haskell données ou juste l'impression de les Accélérer les valeurs, cependant en essayant de tracer les Accélérer les données échoue. L'erreur donnée est - forkOS_entry: interrupted
.
Depuis, j'ai réalisé que je devrais être plus UNIXy et de faire une chose (bien) dans chaque programme. Mais je suis intéressé à trouver la raison de cet échec. Je comprend un minimum l'exemple de code ci-dessous.
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
mise à jour 2014/09/11
Basé sur user2141650
s'suggestion (merci!) modification de la dernière ligne de
plotList [] $! points
résout le problème. En fait, elle rend l'intrigue fait apparaître, alors que sans cela, le programme pour la fin, avec ou sans erreur, mais ne serait jamais réellement affichage de l'intrigue. Je suppose que je serais accepter cela comme une réponse si il a été écrit, mais il serait toujours bon de savoir ce qu'il se passe.
Peut-être liés:
(Par la voie, arrête d'essayer de les modifier, par la grammaire. Il n'y a pas quelque chose de mal avec la question aussi, j'en suis un locuteur natif et écrire exactement ce que je veux dire. Je vous remercie pour votre contribution.)