[Haskell-cafe] (Repa) hFlush: illegal operation
Michael Orlitzky
michael at orlitzky.com
Wed Aug 24 23:15:41 CEST 2011
I'm using Repa to process a ton of MRI data. The basic process is,
* Read in the data
* Create a big 'ol data structure (grid) from it
* Compute the output in parallel using 'traverse'
* Write the output to file
However, during the last step, I'm getting,
$ ./bin/spline3 +RTS -N4
spline3: output.txt: hFlush: illegal operation (handle is closed)
Here's the entirety of my Main.hs:
> module Main
> where
>
> import Data.Array.Repa (
> DIM3,
> Z(..),
> (:.)(..),
> )
>
> import Values
> import Grid(make_grid, zoom)
>
> mri_shape :: DIM3
> mri_shape = (Z :. 256 :. 256 :. 109)
>
> main :: IO ()
> main = do
> mridata <- read_values_3d mri_shape "./data/mridata.txt"
> let g = make_grid 1 mridata
> let output = zoom g 1
> write_values_1d output "output.txt"
And the two functions used from the Values module,
> type Values1D = Array DIM1 Double
> type Values3D = Array DIM3 Double
>
> read_values_1d :: FilePath -> IO Values1D
> read_values_1d path = readVectorFromTextFile path
>
>
> read_values_3d :: DIM3 -> FilePath -> IO Values3D
> read_values_3d sh path = do
> one_d <- read_values_1d path
> return $ reshape sh one_d
>
>
> write_values_1d :: Values3D -> FilePath -> IO ()
> write_values_1d v3d path = do
> let size3d = size $ extent v3d
> let shape1d = (Z :. size3d)
> let v1d = reshape shape1d v3d
> writeVectorToTextFile v1d path
Am I doing something obviously wrong here? It takes about 45 minutes to
run up to the point of failure, so I haven't attempted much trial & error.
Packages:
* ghc-7.2.1
* repa-2.1.1.6
* repa-io-2.1.0.1
More information about the Haskell-Cafe
mailing list