71 votes

Haskell Tableau.Accélérer - forkOS erreur

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 user2141650s'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.)

1voto

user2141650 Points 526

Comme je l'ai mentionné dans un commentaire, c'est probablement à cause de l'entrelacement de l'interaction de gnuplot et d'accélérer sur le GPU, lorsque les accélérer le calcul est appelé paresseusement. Je ne peux pas dire que je connais les détails, mais cette [0] semble pertinent. Il se peut que gnuplot ne pouvez pas utiliser le GPU depuis Accélérer l'a déjà demandé, mais Accélérer de ne pas la relâcher jusqu'à ce que pleinement évalués. Ou d'autre que gnuplot prétend le GPU avant de s'Accélérer. Poilue-regarder question, et il peut justifier d'une mention dans le github issue tracker pour Accélérer.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X