DPH and the new code generator

Edward Z. Yang ezyang at MIT.EDU
Thu Mar 31 18:22:03 CEST 2011


Reified this email thread into #5070

http://hackage.haskell.org/trac/ghc/ticket/5070

Edward

Excerpts from Edward Z. Yang's message of Sun Mar 13 16:22:58 -0400 2011:
> I'm looking at the current failure of DPH with the new code generator,
> which is a bit different from what I've dealt with before.  The bug appears
> to be in the compiled libraries code, and I can tickle it with the
> following minimized example:
> 
>     {-# LANGUAGE ParallelArrays #-}
>     {-# OPTIONS -fvectorise #-}
>     module PrimesVect where
> 
>     import Data.Array.Parallel.Prelude
>     import qualified Prelude
> 
>     f :: PArray Bool
>     f = toPArrayP f'
> 
>     f' :: [:Bool:]
>     f' = [: True | _ <- singletonP True, g emptyP:]
> 
>     g :: [:Bool:] -> Bool
>     g ps = andP [: True | _ <- ps:]
> 
> and a runner:
> 
>     import qualified Data.Array.Parallel.PArray as P
>     import PrimesVect
> 
>     main = print (P.toList f)
> 
> I expect to get [True], but instead I get:
> 
>     dph-primespj-fast: libraries/vector/Data/Vector/Generic.hs:369 (slice): invalid slice (0,1,0)
>     dph-primespj-fast: thread blocked indefinitely in an MVar operation
> 
> Now, in the situation that the library code is broken, I'd usually try to inline
> all of the library code and then pare that down into something manageable.  Unfortunately,
> DPH is pretty closely tied to the compiler, so I don't see an easy way to do that.
> So I'm not really sure how to go about debugging this.
> 
> Cheers,
> Edward



More information about the Cvs-ghc mailing list