@hackage pooled-io0.0.2.3
Run jobs on a limited number of threads and support data dependencies
Categories
License
BSD-3-Clause
Maintainer
Henning Thielemann <haskell@henning-thielemann.de>
Links
Versions
Installation
Dependencies (7)
- base >=4 && <5
- concurrent-split >=0.0 && <0.1
- containers >=0.4 && <0.9
- deepseq >=1.3 && <1.6
- transformers >=0.2.2 && <0.7
- unsafe >=0.0 && <0.1 Show all…
Dependents (8)
@hackage/hocker, @hackage/battleship-combinatorics, @hackage/acme-everything, @hackage/set-cover, @hackage/ghostscript-parallel, @hackage/accelerate-cublas, Show all…
Package Flags
buildexamples
(off by default)
Build example executables
The motivation for this package was to run computations on multiple cores
that need to write intermediate results to disk.
The functions restrict the number of simultaneously running jobs
to a user given number or to the number of capabilities
the Haskell program was started with,
i.e. the number after the RTS option -N.
There are some flavors of this functionality:
Control.Concurrent.PooledIO.Independent: run independent actions without results in parallelControl.Concurrent.PooledIO.Final: run independent actions with a final result in parallelControl.Concurrent.PooledIO.InOrder: run jobs in parallel with data dependencies likemake -j n
Additionally there is the module
Control.Concurrent.PooledIO.Sequence
that helps to serialize I/O actions from multiple threads.
It is certainly most useful in connection with
Control.Concurrent.PooledIO.Independent.
Related packages:
lazyio: interleave IO actions in a single threadasync: start threads and wait for their results, forward exceptions, but do not throttle concurrency with respect to number of available coresparallel-tasks:parallel-io:threadPool:threads-pool:cio:Control-Engine:taskpool,async-pool: