Copyright | (c) Philipps Universitaet Marburg 2011-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 map-reduce skeletons for 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 ) Depends on the Eden Compiler.

- mapRedr :: (b -> c -> c) -> c -> (a -> b) -> [a] -> c
- mapRedl :: (c -> b -> c) -> c -> (a -> b) -> [a] -> c
- mapRedl' :: (c -> b -> c) -> c -> (a -> b) -> [a] -> c
- parMapRedr :: (Trans a, Trans b) => (b -> b -> b) -> b -> (a -> b) -> [a] -> b
- parMapRedl :: (Trans a, Trans b) => (b -> b -> b) -> b -> (a -> b) -> [a] -> b
- parMapRedl' :: (Trans a, Trans b) => (b -> b -> b) -> b -> (a -> b) -> [a] -> b
- offlineParMapRedr :: (Trans a, Trans b) => (b -> b -> b) -> b -> (a -> b) -> [a] -> b
- offlineParMapRedl :: (Trans a, Trans b) => (b -> b -> b) -> b -> (a -> b) -> [a] -> b
- offlineParMapRedl' :: (Trans a, Trans b) => (b -> b -> b) -> b -> (a -> b) -> [a] -> b

# Sequential map-reduce definitions

:: (b -> c -> c) | reduce function |

-> c | neutral for reduce function |

-> (a -> b) | map function |

-> [a] | input |

-> c | result |

:: (c -> b -> c) | reduce function |

-> c | neutral for reduce function |

-> (a -> b) | map function |

-> [a] | input |

-> c | result |

:: (c -> b -> c) | reduce function |

-> c | neutral for reduce function |

-> (a -> b) | map function |

-> [a] | input |

-> c | result |

# Simple map-reduce skeletons

parMapRedr :: (Trans a, Trans b) => (b -> b -> b) -> b -> (a -> b) -> [a] -> b Source

Basic parMapRedr skeleton - as many processes as noPe. local pre-folding per PE and final folding of PE-results via different fold variants

parMapRedl :: (Trans a, Trans b) => (b -> b -> b) -> b -> (a -> b) -> [a] -> b Source

Basic parMapRedl skeleton - as many processes as noPe. local pre-folding per PE and final folding of PE-results via different fold variants

parMapRedl' :: (Trans a, Trans b) => (b -> b -> b) -> b -> (a -> b) -> [a] -> b Source

Basic parMapRedl' skeleton - as many processes as noPe. local pre-folding per PE and final folding of PE-results via different fold variants

# offline map-reduce skeletons

offlineParMapRedr :: (Trans a, Trans b) => (b -> b -> b) -> b -> (a -> b) -> [a] -> b Source

Offline parMapRedr skeleton - as many processes as noPe. local pre-folding per PE and final folding of PE-results via different fold variants, BUT local selection of input sub-list by worker processes

offlineParMapRedl :: (Trans a, Trans b) => (b -> b -> b) -> b -> (a -> b) -> [a] -> b Source

Offline parMapRedl skeleton - as many processes as noPe. local pre-folding per PE and final folding of PE-results via different fold variants, BUT local selection of input sub-list by worker processes

offlineParMapRedl' :: (Trans a, Trans b) => (b -> b -> b) -> b -> (a -> b) -> [a] -> b Source

Offline parMapRedl' skeleton - as many processes as noPe. local pre-folding per PE and final folding of PE-results via different fold variants, BUT local selection of input sub-list by worker processes