wiki:DataParallel/Dec2010Release

Version 36 (modified by simonpj, 3 years ago) (diff)

--

Plan for the December 2010 Release (moved to early 2011)

To be released components

  • GHC 7.0.2 7.2
  • DPH packages
  • Repa packages

(No release of vector should be necessary, as 0.7.0.1 should work fine.)

Before the release we must achieve the following

Documentation:

API adaptation: APIs of vector, Repa, and Accelerate should be unified as far as possible

  • Repa's current 'replicate' should be renamed and a new 'replicate' that turns a scalar into an array should be introduced ???
  • Check similarity of singleton/unit between all three libraries ???

Changes:

  • -fdph-par should be the default (and sensible error message if the dph package is not available) (still needs to be passed explicitly) [DONE]
  • -Odph should be equivalent to '-O2 -fsimplifier-phases=3 -fsimplifier-iterations=20' [DONE]
  • Move GHC.PArr into the DPH libs. (Needed for Haddock.) [MANUEL]
  • Find out if we still need the NoSpecConstr annotation and remove it if not [ROMAN]

Bug fixes:

  • Vectoriser needs to be adapted to Simon's recursive superclasses patch; partially done, but recursive data types don't work yet [ROMAN]
  • The combination '-fvectorise -O0' should work [ROMAN]
  • Trying to vectorise the DotP example from the tutorial on the Haskell Wiki, -fdph-seq fails with (-fdph-par works fine)
    *** Vectorisation error ***
        Tycon not vectorised:  Data.Array.Parallel.Lifted.PArray.PArray
    
  • LLVM back end only partially working with DPH (held up due to LLVM backend problems in the HEAD #4838); only affects BarnesHut [BEN]
  • Repa edge-detection is deadlocking with more than 2 threads [DONE]
  • Fix the BH seg fault in DPH. Roman has found the problem [DONE]

Performance goals:

  • Vector works fast, sequentially, compared to C, Haskell mutable-array version [FINE]
    • Benchmarks: NoSlow, vector versions of Repa benchmarks
  • Repa works fast in parallel
    • MMult [OK, but about 20% slower than in 6.13; try with LLVM and w/o bounds checks] [BEN]
    • Laplace (new stencil implementation) [BEN]
    • Blur [OK]
    • EdgeDetect [OK]
    • FFT [OK]
  • Statically-nested DPH programs should work fast, in parallel
    • SumSquares [FINE]
    • Dot product [FINE]
    • Evens [OK (but more than 3 times slower than C; any improvement since #4830 was fixed?)]
      • rl reckons this is due to GHC compiling modulo of powers of two inefficiently; c.f., #3065 (in packByTags)
    • SMVM (blocked on optimisation of lifted indexing) [BROKEN] [BEN & ROMAN] Roman is thinking about this over Xmas.
  • Dynamically-nested DPH programs without user-defined datatypes should run correctly and scale, but absolute performance may be lacking
    • Quicksort [BROKEN (SpecConstr loop when using -dph-seq) & SLOW] [SIMON & BEN]
    • Quickhull [OK, but has a SpecConstr problem that we want to fix; pair not being inlined] (should be fixed now, needs to be checked) [ROMAN]
      • Probably affected by the same optimisation issue with the compilation of modulo operations as Evens
      • #4830: this fix wasn't sufficient, still doesn't optimise properly [ROMAN]
  • Dynamically-nested DPH programs with user-defined datatypes should run correctly, but not necessarily fast
    • Words [BROKEN (SpecConstr loop again, when using -dph-seq; same as Quicksort)] [ROMAN & SIMON]
    • BarnesHut. [ROMAN]

Legend

[FINE]
Works well
[OK]
Fine for the release, but could be better
[SLOW]
Not usable
Tags in bold require attention before the release.

More benchmarks details at DataParallel/BenchmarkStatus