Matriz Haskell.Acelerar-Error de forkOS


Tratando de trazar la salida de algunos Data.Array.Accelerate cálculos con gnuplot me encontré con un problema extraño. Cuando se ejecuta a través del intérprete todo está bien, como lo está trazando directamente los datos de Haskell o simplemente imprimiendo los valores de Aceleración, sin embargo, tratar de trazar los datos de aceleración falla. El error dado es forkOS_entry: interrupted.

Desde entonces me he dado cuenta de que debería ser más UNIXy y hacer una cosa (bien) en cada programa. Pero estoy interesado en averiguar por qué esto falla. Incluyo un ejemplo de código mínimo debajo.

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

Actualización 2014/09/11

Basado en la sugerencia de user2141650 (¡gracias!) cambiando la última línea a

plotList [] $! points

Soluciona el problema. De hecho, hace que la trama realmente aparezca, mientras que sin esto el programa terminaría con o sin error, pero nunca mostraría la trama. Supongo que aceptaría esto como respuesta si estuviera escrito, pero aún así sería bueno saber qué está pasando.

, Posiblemente, relacionado:

(Por cierto, por favor deja de intentar editar para gramática. No hay nada malo con la pregunta como es, soy un hablante nativo y escribo exactamente lo que quiero decir. Gracias por su contribución sin embargo.)

Author: Community, 2014-02-05

1 answers

Como mencioné en un comentario, esto es probablemente debido a la interacción intercalada de gnuplot y accelerate en la GPU, cuando el cálculo de aceleración se llama perezosamente. No puedo decir que conozco los detalles ,pero esto [0] parece relevante. Puede ser que gnuplot no pueda usar la GPU ya que Accelerate ya la ha reclamado, pero Accelerate no la lanzará hasta que se evalúe completamente. O bien que gnuplot reclama la GPU antes de Acelerar. Cuestión de aspecto peludo, y podría justificar una mención en el rastreador de problemas de github para Acelerar.

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

 1
Author: user2141650,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-12 09:05:07