Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Mirror of packages-dph repository. DO NOT SUBMIT PULL REQUESTS HERE

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
dph-base Update for base 4.8.
dph-buildbot Bump package versions to 0.8
dph-event-seer minor wibbles to make examples compile
dph-examples Adapt to new version of the vector library.
dph-lifted-base Update for base 4.8.
dph-lifted-boxed Update for base 4.8.
dph-lifted-copy Update for base 4.8.
dph-lifted-vseg Update for base 4.8.
dph-plugin Update Git repo URL in `.cabal` file
dph-prim-interface Update for base 4.8.
dph-prim-par Update for base 4.8.
dph-prim-seq
dph-test
dtrace Add dtrace lib
icebox Add placeholder dph-seq and dph-par packages
make
.gitignore Update gitignore
GNUmakefile Adapt to new build system
LICENSE Bump year on license files
README Describe the other dph dirs in the readme file
defineTOP.mk Change how dph is built
ghc-packages ghc build goop
ghc.mk Allow dph to be disabled

README

Directories in libraries/dph

   dph-base/
        Common config and debugging functions for Data Parallel Haskell.

   dph-buildbot/
        Performance regression buildbot.

   dph-examples/
        Examples using Data Parallel Haskell.

   dph-prim-interface/
        Empty implementation of flat parallel arrays. 
        This package exists only so that dph-prim-par and dph-prim-seq
        can provide the same interface.

   dph-prim-seq/
        Sequential implementation of the flat parallel array API defined
        in dph-prim-interface.
        This is only used during debugging.
        You probably want dph-prim-par instead.

   dph-prim-par/
        Production implementation of the flat parallel array API defined
        in dph-prim-interface.

   dph-lifted-base/
        Common definitions used by the other dph-lifted packages.


   The following packages provide:
     Nested arrays and the primitive operators that work on them (PA functions).
     The lifted array combinators that the vectoriser introduces (PP functions).
     The user facing library functions that work on [::] style arrays (P functions).

     dph-lifted-boxed/
        Incomplete implementation using boxed array elements.
        This is very slow, but sometimes useful for debugging.
        
     dph-lifted-copy/
        Deprecated implementation that performs deep copying replicate.
        Using this package can cause the vectorised program to have worse
        asymptotic complexity than the original.
        Use dph-lifted-vseg instead.

     dph-lifted-vseg/
        This implementation directly encodes sharing between array segments,
        and avoids the copying that dph-lifted-copy would otherwise do.
        Use this version for production code.


   Odds and ends:
   make/
        Makefiles used for development and debugging

   dph-test/
        Quickcheck tests for the array operators.

   dtrace/
        Old code to add dtrace support to DPH.

   examples/
        Rotted example code that doesn't build anymore and should 
        probably just be deleted.
    

To compile programs use:
     ghc -rtsopts -threaded 
         -fllvm -optlo-O3 
         -Odph -fcpr-off -fno-liberate-case 
         -package dph-lifted-vseg

Why:
     -rtsopts -threaded         -- You'll want to pass +RTS -Nwhatever when running
                                --  the compiled program to enable threads.

     -fllvm                     -- LLVM produces much better numerical code than GHC's
                                --  default native code generator.

     -optlo-O3                  -- Turn on more LLVM optimisations. 
                                --  This can produce better numerical code, 
                                --  but sometimes tickles bugs in LLVM.

     -fcpr-off                  -- The Constructed Product Result transform sometimes
                                --  interferes with fusion in the Data.Vector Library.

     -fno-liberate-case         -- The LiberateCase transform can duplicate lots of 
                                --  intermediate code, result in slow compile times,
                                --  large binaries, and minimal performance improvement.
                                --  The implementation of the DPH backend library should
                                --  manually handle most cases where LiberateCase
                                --  would fire.

Something went wrong with that request. Please try again.