1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
|
Name: monad-par
Version: 0.3.6
Synopsis: A library for parallel programming based on a monad
-- Version history:
-- 0.1 : First release
-- 0.1.0.1 :
-- 0.1.0.2 :
-- 0.1.1.0 : module reorganization, moving ParClass
-- 0.2 : Bumped for new class-based API
-- 0.2.1 : Bumped for change AList
-- 0.2.2 : incorporation of real deque package
-- 0.2.3 : Restricted module export for 0.2 release.
-- 0.3 : Factored/reorganized modules and packages.
-- *This* package is the original, core monad-par.
-- 0.3.1 : fix for ghc 7.6.1, expose Par.IO
-- 0.3.4 : switch to direct scheduler as default (only 1-level nesting allowed)
-- 0.3.4.1 : fix build with GHC 7.0, and fix test
-- 0.3.4.2 : Bugfix, 0.3.4.1 was released with debugging switches flipped.
-- 0.3.4.3 : Bugfix, Trace scheduler is now the default
-- 0.3.4.4 : Use the Trace scheduler in Control.Monad.Par.IO too
-- 0.3.4.5 : Extremely minor, fix to unit tests.
-- 0.3.4.6 : Add newgeneric flag, supporting the par-classes module.
-- 0.3.4.7 : bugfix #38 for GHC 7.10
Description:
The 'Par' monad offers a simple API for parallel programming. The
library works for parallelising both pure and @IO@ computations,
although only the pure version is deterministic. The default
implementation provides a work-stealing scheduler and supports
forking tasks that are much lighter weight than IO-threads.
.
For complete documentation see "Control.Monad.Par".
.
Some examples of use can be found in the @examples/@ directory of
the source package.
.
Other related packages:
.
* @abstract-par@ provides the type classes that abstract over different
implementations of the @Par@ monad.
.
* @monad-par-extras@ provides extra combinators and monad transformers layered on top of
the @Par@ monad.
.
Changes in 0.3.4 relative to 0.3:
.
* Fix bugs that cause "thread blocked indefinitely on MVar" crashes.
.
* Added "Control.Monad.Par.IO"
Homepage: https://github.com/simonmar/monad-par
License: BSD3
License-file: LICENSE
Author: Simon Marlow, Ryan Newton
Maintainer: Simon Marlow <marlowsd@gmail.com>, Ryan Newton <rrnewton@gmail.com>
Copyright: (c) Simon Marlow 2011
Stability: Experimental
Category: Control,Parallelism,Monads
Build-type: Simple
Cabal-version: >=1.10
extra-source-files:
tests/AListTest.hs
tests/AllTests.hs
tests/AsyncTest.hs
tests/Makefile
tests/ParTests1.hs
tests/ParTests2.hs
tests/ParTests_shared.hs
tests/TestHelpers.hs
tests/TestParDist.hs
tests/Test_ContReaderT.hs
tests/Test_ReaderContT.hs
tests/hs_cassandra_microbench.hs
tests/hs_cassandra_microbench2.hs
Flag chaselev
Description: Use Chase-Lev Deques for higher-perf work-stealing.
Default: False
Flag newgeneric
Description: Provide instances for the new par-classes generic Par programming interface.
Default: False
Source-repository head
type: git
location: https://github.com/simonmar/monad-par
Library
Default-Language: Haskell98
Exposed-modules:
-- The classic, simple monad-par interface:
Control.Monad.Par
, Control.Monad.Par.IO
-- This is the default scheduler:
, Control.Monad.Par.Scheds.Trace
, Control.Monad.Par.Scheds.TraceInternal
-- Replacement scheduler for Trace:
, Control.Monad.Par.Scheds.Direct
-- This scheduler uses sparks rather than IO threads.
-- It only supports Futures, not full IVars. Fork
-- becomes lighter weight.
, Control.Monad.Par.Scheds.Sparks
Build-depends: base >= 4 && < 5
-- This provides the interface which monad-par implements:
, abstract-par
, abstract-deque >= 0.1.4
-- Extras such as parMap, RNG, State
, monad-par-extras >= 0.3
, deepseq >= 1.1
, array >= 0.3
, mwc-random >= 0.11
, containers
, parallel >= 3.1
, mtl >= 2.0.1.0
if flag(chaselev)
cpp-options: -DUSE_CHASELEV
build-depends: chaselev-deque
if flag(newgeneric)
cpp-options: -DNEW_GENERIC
build-depends: par-classes
ghc-options: -O2
Other-modules:
------------------------------------------------------------
-- Schedulers & Infrastructure --
------------------------------------------------------------
-- Strawman scheduler that forks IO threads:
-- Control.Monad.Par.Scheds.ContFree,
-- Internal logging framework:
-- Control.Monad.Par.Logging,
-- Serial Elision scheduling is currently experimental:
-- Control.Monad.Par.Scheds.SerialElision
Control.Monad.Par.Scheds.DirectInternal
------------------------------------------------------------
-- Data Structures --
------------------------------------------------------------
-- ILists are internal:
-- , Control.Monad.Par.IList
-- RRN: Not exposing Streams or OpenLists yet. Need to improve performance.
-- We have some ideas for enabling bounded chans while preventing deadlock:
-- , Control.Monad.Par.OpenList
-- , Control.Monad.Par.Stream
Test-Suite test-monad-par
Default-Language: Haskell98
type: exitcode-stdio-1.0
main-is: tests/AllTests.hs
hs-source-dirs: tests/ ./
-- Run tests in parallel:
ghc-options: -O2 -threaded -rtsopts -with-rtsopts=-N4
build-depends: base >= 4.3 && < 5
, abstract-par, monad-par-extras
, array >= 0.3
, deepseq >= 1.2
, time
, QuickCheck, HUnit
, test-framework-hunit
, test-framework-quickcheck2 >= 0.3
, test-framework, test-framework-th
, abstract-deque >= 0.1.4
, mwc-random >= 0.11
, mtl >= 2.0.1.0
, containers
|