Copyright | (c) Philipps Universitaet Marburg 2009-2014 |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | eden@mathematik.uni-marburg.de |
Stability | beta |
Portability | not portable |
Safe Haskell | None |
Language | Haskell98 |
This Haskell module defines auxiliary functions for programming with the parallel functional language Eden.
Depends on GHC. Using standard GHC, you will get a threaded simulation of Eden. Use the forked GHC-Eden compiler from http://www.mathematik.uni-marburg.de/~eden for a parallel build.
Eden Group ( http://www.mathematik.uni-marburg.de/~eden )
- unshuffle :: Int -> [a] -> [[a]]
- shuffle :: [[a]] -> [a]
- splitIntoN :: Int -> [a] -> [[a]]
- unSplit :: [[a]] -> [a]
- chunk :: Int -> [a] -> [[a]]
- unchunk :: [[a]] -> [a]
- distribute :: Int -> [Int] -> [t] -> [[t]]
- lazy :: [a] -> [a]
- lazy1ZipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
- lazy2ZipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
- lazy1Zip :: [a] -> [b] -> [(a, b)]
- lazy2Zip :: [a] -> [b] -> [(a, b)]
- lazyTranspose :: [[a]] -> [[a]]
- takeEach :: Int -> [a] -> [a]
- transposeRt :: [[a]] -> [[a]]
- unLiftRD :: (Trans a, Trans b) => (RD a -> RD b) -> a -> b
- unLiftRD2 :: (Trans a, Trans b, Trans c) => (RD a -> RD b -> RD c) -> a -> b -> c
- unLiftRD3 :: (Trans a, Trans b, Trans c, Trans d) => (RD a -> RD b -> RD c -> RD d) -> a -> b -> c -> d
- unLiftRD4 :: (Trans a, Trans b, Trans c, Trans d, Trans e) => (RD a -> RD b -> RD c -> RD d -> RD e) -> a -> b -> c -> d -> e
- spawnPss :: (Trans a, Trans b) => [[Process a b]] -> [[a]] -> [[b]]
- fetch2 :: (Trans a, Trans b) => RD a -> RD b -> (a, b)
- fetchRDss :: Trans a => [[RD a]] -> [[a]]
- mergeS :: [[a]] -> Strategy a -> [a]
Distribution and combine functions
... of form: Int -> [a] -> [[a]]
/ [[a]] -> [a]
:: Int | number of sublists |
-> [a] | input list |
-> [[a]] | distributed output |
Round robin distribution - inverse to shuffle
:: [[a]] | sublists |
-> [a] | shuffled sublists |
Simple shuffling - inverse to round robin distribution
:: Int | number of blocks |
-> [a] | list to be split |
-> [[a]] | list of blocks |
Block distribution, splitIntoN
distributes one list on n lists with
equal distribution ((+-1) without precondition on length).
:: [[a]] | list of blocks |
-> [a] | restored list |
Inverse function to splitIntoN
- alias for concat.
:: Int |
|
-> [a] | list to be split |
-> [[a]] | list of chunks (blocks) |
Creates a list of chunks of length d
.
Result: list of chunks (blocks)
:: [[a]] | list of chunks |
-> [a] | restored list |
Inverse function to chunk
- alias for concat.
Distribution function for workpools
:: Int | number of workers |
-> [Int] | request stream (worker IDs ranging from 0 to n-1) |
-> [t] | task list |
-> [[t]] | task distribution, each inner list for one worker |
Task distribution according to worker requests.
Lazy functions
lazy1ZipWith :: (a -> b -> c) -> [a] -> [b] -> [c] Source
lazy in first argument
lazy2ZipWith :: (a -> b -> c) -> [a] -> [b] -> [c] Source
lazy in second argument
lazyTranspose :: [[a]] -> [[a]] Source
lazy in tail lists
other useful functions
transposeRt :: [[a]] -> [[a]] Source
transpose for matrices of rectangular shape (rows of equal length). Top level list of the resulting matrix is defined as soon as the first row of the original matrix is closed.
unLiftRDs
:: (Trans a, Trans b, Trans c) | |
=> (RD a -> RD b -> RD c) | Function to be unlifted |
-> a | First input |
-> b | Second input |
-> c | output |
see liftRD
unLiftRD3 :: (Trans a, Trans b, Trans c, Trans d) => (RD a -> RD b -> RD c -> RD d) -> a -> b -> c -> d Source
see liftRD
unLiftRD4 :: (Trans a, Trans b, Trans c, Trans d, Trans e) => (RD a -> RD b -> RD c -> RD d -> RD e) -> a -> b -> c -> d -> e Source
see liftRD