[Haskell-cafe] ANN: LogicGrowsOnTrees-1.1.0.2
Gregory Crosswhite
gcrosswhite at gmail.com
Mon Mar 17 04:16:20 UTC 2014
Dear Haskellers,
First, for those eager to skip directly to the more detailed documentation
you can find an FAQ after the list of files at
http://github.com/gcross/LogicGrowsOnTrees
as well as a tutorial and users guide in respectively TUTORIAL.md<http://github.com/gcross/LogicGrowsOnTrees/blob/master/TUTORIAL.md>and
USERS_GUIDE.md<http://github.com/gcross/LogicGrowsOnTrees/blob/master/USERS_GUIDE.md>in the list of files. The Hackage page with the reference documentation is
at:
http://hackage.haskell.org/package/LogicGrowsOnTrees
Like many other packages on Hackage, LogicGrowsOnTrees provides an
implementation of logic programming using MonadPlus; in this sense it is
nothing new. What sets it apart is that it has been designed from the
beginning to work in a distributed environment, allowing it to be
parallelized over large numbers of processors with no shared memory. The
benchmarks I have run (using the N-Queens problem with 17-19 queens) showed
essentially perfect speed-up all the way up to 256 cores, and the only
reason why this number is not larger is because I haven't had the
opportunity to run tests on a larger cluster. Furthermore, I know from
personal experience that complicated interfaces can take even the most
powerful system and make it impotent, so I have tried hard to design
interfaces that are easy to use and well-documented with a tutorial and
several examples.
There are three packages that are sibling to this:
- LogicGrowsOnTrees-processes<http://hackage.haskell.org/package/LogicGrowsOnTrees-processes>
- LogicGrowsOnTrees-network<http://hackage.haskell.org/package/LogicGrowsOnTrees-network>
- LogicGrowsOnTrees-MPI<http://hackage.haskell.org/package/LogicGrowsOnTrees-MPI>
The base package (LogicGrowsOnTrees<http://hackage.haskell.org/package/LogicGrowsOnTrees>)
provides an "adapter" that allows one to use threads for parallelization;
the other packages above provide adapters for, respectively: processes, a
network, and MPI. Each one of these packages provides specialized
functionality that can be used directly, but there is also an abstraction
over all of them that can be used such that the only difference between the
adapters for end-users is a single line of code.
For more information, see the links at the top of the post.
Thank you for your attention! :-)
- Greg
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20140316/c4d63726/attachment.html>
More information about the Haskell-Cafe
mailing list