Personal tools

Parallel GHC Project

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
m (Project artefacts)
(TS&perf update)
 
(46 intermediate revisions by 3 users not shown)
Line 3: Line 3:
 
== Overview ==
 
== Overview ==
   
The Parallel GHC Project is an [http://research.microsoft.com MSR]-funded project to push the real-world use of parallel Haskell. The aim is to demonstrate that parallel Haskell can be employed successfully in industrial projects.
+
The Parallel GHC Project is an [http://research.microsoft.com MSR]-funded project to push the real-world use of [[Parallel|parallel Haskell]]. The aim is to demonstrate that parallel Haskell can be employed successfully in industrial projects.
   
 
In the last few years GHC has gained impressive support for parallel programming on commodity multi-core systems. In addition to traditional threads and shared variables, it supports pure parallelism, software transactional memory (STM), and data parallelism. With much of this research and development complete, the next stage is to get the technology into more widespread use.
 
In the last few years GHC has gained impressive support for parallel programming on commodity multi-core systems. In addition to traditional threads and shared variables, it supports pure parallelism, software transactional memory (STM), and data parallelism. With much of this research and development complete, the next stage is to get the technology into more widespread use.
Line 9: Line 9:
 
This project aims to do the engineering work to solve whatever remaining practical problems are blocking organisations from making serious use of parallelism with GHC. The driving force is the ''applications'' rather than the ''technology''.
 
This project aims to do the engineering work to solve whatever remaining practical problems are blocking organisations from making serious use of parallelism with GHC. The driving force is the ''applications'' rather than the ''technology''.
   
The project involves a partnership with [[#Participating organisations|four groups from commercial and scientific organisations]]. Over the course of two years these groups are applying parallel Haskell in their specific domains. They are being supported by GHC HQ and [http://www.well-typed.com/ Well-Typed] who are providing advice on Haskell tools and techniques, and applying engineering effort to resolve any issues that are hindering these groups' progress.
+
The project involves a partnership with [[#Participating organisations|six groups from commercial and scientific organisations]]. Over the course of two years these groups are applying parallel Haskell in their specific domains. They are being supported by GHC HQ and [http://www.well-typed.com/ Well-Typed] who are providing advice on Haskell tools and techniques, and applying engineering effort to resolve any issues that are hindering these groups' progress.
   
 
The project is being coordinated by [http://www.well-typed.com/ Well-Typed] and they are providing the bulk of the support and engineering effort. The project started in the summer of 2010.
 
The project is being coordinated by [http://www.well-typed.com/ Well-Typed] and they are providing the bulk of the support and engineering effort. The project started in the summer of 2010.
Line 15: Line 15:
 
== Project News ==
 
== Project News ==
   
The Parallel GHC project is expading! Our recent search for a new project partner has been successful. In fact, we will be welcoming two new partners to the project, the research and development group of Spanish telecoms company Telefónica, and VETT a UK-based payment processing company. We are excited to be working with the teams at Telefónica I+D and VETT.
 
   
Meanwhile, we have completed a pure Haskell implementation of the "Modified Additive [https://github.com/bjpop/lfg Lagged Fibonacci]" random number generator. This generator is attractive for use in Monte Carlo simulations because it is splittable and has good statistical quality, while providing high performance. The LFG implementation will be released on Hackage when it has undergone more extensive quality testing.
 
   
We have recently released
+
=== ThreadScope and friends ===
* the [http://projects.haskell.org/gtk2hs/archives/2011/09/07/gtk2hs-0121-pre-release-packages-available/ the gtk2hs] library (0.12.1, pre-release), adding GHC 7.2 compatibility,
 
* the [http://hackage.haskell.org/package/ghc-events ghc-events] library (0.3.0.1), adding support for custom events,
 
* and [https://groups.google.com/d/topic/parallel-haskell/8hXVb7p41bs/discussion ThreadScope] (0.2.0), with a new spark profiling visualisation, bookmarks, and other enhancements
 
 
Coming up are a couple of Monad Reader articles featuring work from the Parallel GHC project. Kazu Yamamoto has written article for the upcoming Monad Reader special edition on parallelism and concurrency. He'll be revisiting Mighttpd, a high-performance web server written in Haskell in late 2009. Kazu's article covers recent changes to Mighttpd, taking advantage of recent developments in the Haskell web programming landscape, GHC 7's new IO manager (with various bugfixes made possible by the project). Bernie Pope and Dmitry Astapov wrote an article about the [https://github.com/bjpop/haskell-mpi Haskell MPI binding] developed in the context of Parallel GHC.
 
   
For the longer term, we are continuing to [http://groups.google.com/group/parallel-haskell/t/276c59039e4dc7e2 extend ThreadScope] and the [http://hackage.haskell.org/trac/ghc/wiki/EventLog GHC EventLog]. The aim is to support profiling of multi-process or distributed Haskell systems such as client/server or MPI programs. This involves incorporate some changes made in related projects ([http://www.mathematik.uni-marburg.de/~eden/ Eden], [http://www.mathematik.uni-marburg.de/~eden/?content=trace_doku&navi=docu EdenTV]). This work may have some benefits even for profiling single-process programs. It should also allow comparative profiling where multiple runs of the same program (e.g. different inputs or slightly different code) are viewed on the same timeline.
+
We have been continuing our work to make [[ThreadScope]] more helpful and informative in tracking down your parallel and concurrent Haskell performance problems. We now have the ability to collect heap (and some other) statistics from the GHC runtime system and present them in ThreadScope for a selected runtime interval. These features are available for users of GHC 7.6 or newer. On feedback from users, we have improved support for user events of different granularity. We have released a preliminary version of tools for collecting information from hardware performance counters, more specifically the Linux Perf Events. This can be useful for studying IO-heavy programs, the idea being to visualise system calls as being distinct from actual execution of Haskell code. The perf events support will be available for users of a recent development GHC (7.7.x) or the eventual 7.8 release.
  +
  +
=== Cloud Haskell ===
  +
  +
The reimplementation of Cloud Haskell is now [http://hackage.haskell.org/package/distributed-process avaiable from Hackage] and in a state where it is ready for serious experiments. Compared to the prototype it is much faster; it can run on [http://hackage.haskell.org/package/network-transport multiple kinds of networks];
  +
it has backends to support different environments (like cluster or cloud, with a proof-of-concept [http://hackage.haskell.org/package/distributed-process-azure backend for Azure]);
  +
has a new system for dealing with node disconnect and reconnect, and a more [https://github.com/haskell-distributed/distributed-process/blob/master/doc/semantics/CloudHaskellSemantics.pdf precisely defined semantics]; supports [http://hackage.haskell.org/package/distributed-static composable], [http://hackage.haskell.org/package/rank1dynamic polymorphic] serialisable closures; and internally the code is better structured and easier to work with.
  +
  +
The wiki lists some [https://github.com/haskell-distributed/distributed-process/wiki/Important-Open-Issues important open issues] of the implementation; the semantics document mentioned above lists some important open semantic issues.
   
 
== Project artefacts ==
 
== Project artefacts ==
  +
  +
Some of the work by our project partners is available to the public
  +
  +
{| class="wikitable"
  +
! Project
  +
! Partner
  +
! Description
  +
! Status
  +
|-
  +
| [http://www.mew.org/~kazu/proj/mighttpd/en/ mightttpd2]
  +
| IIJ
  +
| File/CGI server on top of Warp
  +
| version 2.5.7 released 2012-04-05
  +
|-
  +
| [http://hackage.haskell.org/package/webserver webserver]
  +
| IIJ
  +
| HTTP server library
  +
| version 0.4.6 released 2011−10−05
  +
|-
  +
| [http://hackage.haskell.org/package/wai-app-file-cgi wai-app-file-cgi]
  +
| IIJ
  +
| File/CGI WAI application (used by Mighttpd)
  +
| version 0.5.8 released 2012-04-05
  +
|-
  +
| [http://hackage.haskell.org/package/wai-logger wai-logger]
  +
| IIJ
  +
| Logging system for WAI (used by Mighttpd)
  +
| version 0.1.4 released 2012-02-13
  +
|-
  +
| [http://hackage.haskell.org/package/http-date http-date]
  +
| IIJ
  +
| Fast parser and formatter for HTTP Date
  +
| version 0.0.2 released 2012-02-17
  +
|-
  +
| dns
  +
| IIJ
  +
| DNS library
  +
| version 0.2.0 released 2011−08−31
  +
|-
  +
| [http://www.mew.org/~kazu/proj/iproute/en/ iproute]
  +
| IIJ
  +
| IP routing table
  +
| version 1.2.5 released 2012-04-02
  +
|-
  +
| [http://hackage.haskell.org/package/domain-auth domain-auth]
  +
| IIJ
  +
| Library for Sender Policy Framework, SenderID, DomainKeys and DKIM.
  +
| version 0.2.0 released 2011−08-31
  +
|-
  +
| [http://www.mew.org/~kazu/proj/rpf/en/ RPF]
  +
| IIJ
  +
| Receiver Policy Framework (milter)
  +
| version 0.2.0 released 2011−08-31
  +
|}
   
 
In addition to helping the [[#participating organisations|participating organisations]], the project will whenever possible make improvements to libraries and tools that are useful to Haskell users more generally.
 
In addition to helping the [[#participating organisations|participating organisations]], the project will whenever possible make improvements to libraries and tools that are useful to Haskell users more generally.
Line 44: Line 96:
 
| '''in progress'''
 
| '''in progress'''
 
|-
 
|-
| ThreadScope improvements
+
| [http://hackage.haskell.org/package/threadscope ThreadScope] improvements
| new spark profiling visualisation, bookmarks, GUI enhancements, bug fixes
+
| new spark profiling tools, heap statistics, GUI enhancements, bug fixes
| version 0.2.0 released 2011-09-05
+
| version 0.2.2 released 2012-11-02
 
|-
 
|-
| ghc-events improvements
+
| [http://hackage.haskell.org/package/ghc-events ghc-events] improvements
| custom events support
+
| spark events support, eventlog verification, improved eventlog merging
| version 0.3.0.1 released 2011-09-05
+
| version 0.4.2.0 released 2012-11-01
 
|-
 
|-
| gtk2hs improvements
+
| [http://hackage.haskell.org/package/linux-perf linux-perf]
  +
| Library for manipulating the data file output of the Linux perf command, with special support for displaying GHC RTS perf events in ghc-events and ThreadScope
  +
| version 0.3 released 2012-11-03
  +
|-
  +
| gtk2hs maintenance & release
 
| GHC 7.2 support
 
| GHC 7.2 support
| '''prerelease'''
+
| version 0.12.2 released 2011-11-13
 
|-
 
|-
 
| [http://hackage.haskell.org/package/haskell-mpi Haskell-MPI]
 
| [http://hackage.haskell.org/package/haskell-mpi Haskell-MPI]
 
| Haskell bindings to C MPI library
 
| Haskell bindings to C MPI library
| version 1.0 released 2010-12-09
+
| version 1.2.1 released 2012-02-15
 
|-
 
|-
 
| rowspan="5" | GHC RTS improvements
 
| rowspan="5" | GHC RTS improvements
Line 78: Line 130:
 
| [http://www.cse.unsw.edu.au/~chak/haskell/c2hs/ c2hs] improvements
 
| [http://www.cse.unsw.edu.au/~chak/haskell/c2hs/ c2hs] improvements
 
| marshalling functions now can have arguments supplied to them.
 
| marshalling functions now can have arguments supplied to them.
| version 0.16.3 released 2011-03-24
+
| version 0.16.3 released 2011−03−24
  +
|-
  +
| [http://hackage.haskell.org/package/libssh2 libssh2]
  +
| Major refactoring of the libssh2 bindings for Haskell to use the Haskell I/O manager to deal with blocking, rather than block in C land (necessary for the Cloud Haskell Azure backend)
  +
| version 0.2 released 2012-10-14
  +
|-
  +
| [http://hackage.haskell.org/package/http-conduit http-conduit]
  +
| Added support for client SSL certificates (necessary for the Cloud Haskell Azure backend)
  +
| version 1.8.1 released 2012-10-24
  +
|-
  +
| [http://hackage.haskell.org/package/network-transport network-transport] / [http://hackage.haskell.org/package/network-transport-tcp network-transport-tcp]
  +
| Generic Network Transport interface and TCP instantiation, used by Cloud Haskell, HdpH, and MetaPar
  +
| version 0.3.0 released 2012-10-03 / version 0.3.1 released 2012-10-19
  +
|-
  +
| [http://hackage.haskell.org/package/distributed-process distributed-process] / [http://hackage.haskell.org/package/distributed-static distributed-static] / [http://hackage.haskell.org/package/distributed-process-simplelocalnet distributed-process-simplelocalnet]
  +
| Reimplementation of Cloud Haskell
  +
| version 0.4.0.2 released 2012-10-23 / version 0.2.1 released 2012-10-03 / version 0.2.0.7 released 2012-10-23
  +
|-
  +
| [http://hackage.haskell.org/package/distributed-process-azure distributed-process-azure] / [http://hackage.haskell.org/package/azure-service-api azure-service-api]
  +
| Proof-of-concept Cloud Haskell backend for the Microsoft Azure
  +
| version 0.1.0 released 2012-11-05
 
|}
 
|}
   
Line 88: Line 140:
 
! Status
 
! Status
 
|-
 
|-
| ThreadScope tutorial
+
| [[ThreadScope Tour]]
 
| a short guide to using ThreadScope to help analyse parallel program performance
 
| a short guide to using ThreadScope to help analyse parallel program performance
| '''in progress'''
+
| unveiled 2012-01-14
 
|-
 
|-
| rowspan="2" | TMR 19 articles
+
| rowspan="2" | submissions to TMR 19
 
| Mighttpd – a High Performance Web Server in Haskell (Kazu Yamamoto)
 
| Mighttpd – a High Performance Web Server in Haskell (Kazu Yamamoto)
 
| submitted
 
| submitted
 
|-
 
|-
| Haskell MPI (Bernie Pope and Dmitry Astapov)
+
| High Performance Haskell with MPI (Bernie Pope and Dmitry Astapov)
| '''in progress'''
+
| submitted
 
|-
 
|-
| Parallel Haskell Portal
+
| [[Parallel|Parallel Haskell Portal]]
 
| one-stop resource oriented for users of parallelism and concurrency in Haskell
 
| one-stop resource oriented for users of parallelism and concurrency in Haskell
| unveiled 2011-04-20
+
| unveiled 2011−04−20
  +
|-
  +
| [http://www.haskell.org/haskellwiki/Cloud_Haskell Cloud Haskell wiki]
  +
| Collection of Cloud Haskell resources, as well as links to a number of new blog posts about Cloud Haskell
  +
| last update 2012-11-12
 
|}
 
|}
  +
  +
== The Parallel Haskell Digest ==
  +
  +
We have been publishing a regular newsletter containing project news, other parallel news from around the Haskell community and short "Word of the Month" articles giving brief introductions to important concepts in parallelism.
  +
  +
The back issues are here:
  +
  +
* [http://www.well-typed.com/blog/52 Parallel Haskell Digest 1] with word of the month '''spark'''
  +
* [http://www.well-typed.com/blog/53 Parallel Haskell Digest 2] with word of the month '''thread of execution'''
  +
* [http://www.well-typed.com/blog/55 Parallel Haskell Digest 3] with word of the month '''parallel arrays'''
  +
* [http://www.well-typed.com/blog/56 Parallel Haskell Digest 4] with words of the month '''par''' and '''pseq'''
  +
* [http://www.well-typed.com/blog/58 Parallel Haskell Digest 5] with word of the month '''strategy'''
  +
* [http://www.well-typed.com/blog/60 Parallel Haskell Digest 6] with word of the month '''dataflow''' as in dataflow parallelism
  +
* [http://www.well-typed.com/blog/62 Parallel Haskell Digest 7] (catching up on community news)
  +
* [http://www.well-typed.com/blog/64 Parallel Haskell Digest 8] with word of the month '''MVar'''
  +
* [http://www.well-typed.com/blog/65 Parallel Haskell Digest 9] with the word of the month '''transaction'''
  +
* [http://www.well-typed.com/blog/66 Parallel Haskell Digest 10] with the word of the month '''channel'''
  +
* [http://www.well-typed.com/blog/67 Parallel Haskell Digest 11] with the word of the month '''actor''' (see part 2, [http://www.well-typed.com/blog/68 A Cloud Haskell Appetiser])
   
 
== Getting involved ==
 
== Getting involved ==
Line 137: Line 207:
   
 
:Willow Garage aims to lay the groundwork for personal robotics applications in everyday life. ROS ([http://ros.org Robot Operating System]) is an open source, meta-operating system for your robot.
 
:Willow Garage aims to lay the groundwork for personal robotics applications in everyday life. ROS ([http://ros.org Robot Operating System]) is an open source, meta-operating system for your robot.
  +
  +
; [http://www.tid.es/en/ Telefónica I+D]
  +
  +
: This project is to demonstrate parallel Haskell technology using the example of graph algorithms in large graphs representing social networks. The current work is on parallel versions of the [http://en.wikipedia.org/wiki/Bron%E2%80%93Kerbosch_algorithm Bron-Kerbosch algorithm] for finding maximal cliques in a graph. The initial goal is to demonstrate good speedups on multi-core and the overall aim to demonstrate good speedups of a distributed version of the algorithm using Cloud Haskell.
  +
  +
; [http://www.vett.co.uk/ VETT UK]
  +
  +
: VETT are working on a transaction processing application using Cloud Haskell. More details will be available shortly.

Latest revision as of 09:39, 13 November 2012


Contents

[edit] 1 Overview

The Parallel GHC Project is an MSR-funded project to push the real-world use of parallel Haskell. The aim is to demonstrate that parallel Haskell can be employed successfully in industrial projects.

In the last few years GHC has gained impressive support for parallel programming on commodity multi-core systems. In addition to traditional threads and shared variables, it supports pure parallelism, software transactional memory (STM), and data parallelism. With much of this research and development complete, the next stage is to get the technology into more widespread use.

This project aims to do the engineering work to solve whatever remaining practical problems are blocking organisations from making serious use of parallelism with GHC. The driving force is the applications rather than the technology.

The project involves a partnership with six groups from commercial and scientific organisations. Over the course of two years these groups are applying parallel Haskell in their specific domains. They are being supported by GHC HQ and Well-Typed who are providing advice on Haskell tools and techniques, and applying engineering effort to resolve any issues that are hindering these groups' progress.

The project is being coordinated by Well-Typed and they are providing the bulk of the support and engineering effort. The project started in the summer of 2010.

[edit] 2 Project News

[edit] 2.1 ThreadScope and friends

We have been continuing our work to make ThreadScope more helpful and informative in tracking down your parallel and concurrent Haskell performance problems. We now have the ability to collect heap (and some other) statistics from the GHC runtime system and present them in ThreadScope for a selected runtime interval. These features are available for users of GHC 7.6 or newer. On feedback from users, we have improved support for user events of different granularity. We have released a preliminary version of tools for collecting information from hardware performance counters, more specifically the Linux Perf Events. This can be useful for studying IO-heavy programs, the idea being to visualise system calls as being distinct from actual execution of Haskell code. The perf events support will be available for users of a recent development GHC (7.7.x) or the eventual 7.8 release.

[edit] 2.2 Cloud Haskell

The reimplementation of Cloud Haskell is now avaiable from Hackage and in a state where it is ready for serious experiments. Compared to the prototype it is much faster; it can run on multiple kinds of networks; it has backends to support different environments (like cluster or cloud, with a proof-of-concept backend for Azure); has a new system for dealing with node disconnect and reconnect, and a more precisely defined semantics; supports composable, polymorphic serialisable closures; and internally the code is better structured and easier to work with.

The wiki lists some important open issues of the implementation; the semantics document mentioned above lists some important open semantic issues.

[edit] 3 Project artefacts

Some of the work by our project partners is available to the public

Project Partner Description Status
mightttpd2 IIJ File/CGI server on top of Warp version 2.5.7 released 2012-04-05
webserver IIJ HTTP server library version 0.4.6 released 2011−10−05
wai-app-file-cgi IIJ File/CGI WAI application (used by Mighttpd) version 0.5.8 released 2012-04-05
wai-logger IIJ Logging system for WAI (used by Mighttpd) version 0.1.4 released 2012-02-13
http-date IIJ Fast parser and formatter for HTTP Date version 0.0.2 released 2012-02-17
dns IIJ DNS library version 0.2.0 released 2011−08−31
iproute IIJ IP routing table version 1.2.5 released 2012-04-02
domain-auth IIJ Library for Sender Policy Framework, SenderID, DomainKeys and DKIM. version 0.2.0 released 2011−08-31
RPF IIJ Receiver Policy Framework (milter) version 0.2.0 released 2011−08-31

In addition to helping the participating organisations, the project will whenever possible make improvements to libraries and tools that are useful to Haskell users more generally.

Project Description Status
multiprocess Threadscope profiling of multi-process or distributed Haskell systems such as client/server or MPI programs. in progress
LFG Haskell implementation of some pseudo random number generators from the SPRNG library testing
SPRNG binding Haskell wrapper around SPRNG in progress
ThreadScope improvements new spark profiling tools, heap statistics, GUI enhancements, bug fixes version 0.2.2 released 2012-11-02
ghc-events improvements spark events support, eventlog verification, improved eventlog merging version 0.4.2.0 released 2012-11-01
linux-perf Library for manipulating the data file output of the Linux perf command, with special support for displaying GHC RTS perf events in ghc-events and ThreadScope version 0.3 released 2012-11-03
gtk2hs maintenance & release GHC 7.2 support version 0.12.2 released 2011-11-13
Haskell-MPI Haskell bindings to C MPI library version 1.2.1 released 2012-02-15
GHC RTS improvements  #4449 - GHC 7 can't do IO when daemonized fixed in 7.0.x branch
 #4504 - "awaitSignal Nothing" does not block thread with -threaded fixed in 7.0.2
 #4512 - EventLog does not play well with forkProcess fixed in 7.0.x branch
 #4514 - IO manager can deadlock if a file descriptor is closed behind its back fixed in 7.0.x branch
 #4854 - Validating on a PPC Mac OS X: Fix miscellaneous errors and warnings fixed in 7.0.x branch
c2hs improvements marshalling functions now can have arguments supplied to them. version 0.16.3 released 2011−03−24
libssh2 Major refactoring of the libssh2 bindings for Haskell to use the Haskell I/O manager to deal with blocking, rather than block in C land (necessary for the Cloud Haskell Azure backend) version 0.2 released 2012-10-14
http-conduit Added support for client SSL certificates (necessary for the Cloud Haskell Azure backend) version 1.8.1 released 2012-10-24
network-transport / network-transport-tcp Generic Network Transport interface and TCP instantiation, used by Cloud Haskell, HdpH, and MetaPar version 0.3.0 released 2012-10-03 / version 0.3.1 released 2012-10-19
distributed-process / distributed-static / distributed-process-simplelocalnet Reimplementation of Cloud Haskell version 0.4.0.2 released 2012-10-23 / version 0.2.1 released 2012-10-03 / version 0.2.0.7 released 2012-10-23
distributed-process-azure / azure-service-api Proof-of-concept Cloud Haskell backend for the Microsoft Azure version 0.1.0 released 2012-11-05

The project will also aim to document existing tools and parallel programming practices, making them accesible to a wider public.

Project Description Status
ThreadScope Tour a short guide to using ThreadScope to help analyse parallel program performance unveiled 2012-01-14
submissions to TMR 19 Mighttpd – a High Performance Web Server in Haskell (Kazu Yamamoto) submitted
High Performance Haskell with MPI (Bernie Pope and Dmitry Astapov) submitted
Parallel Haskell Portal one-stop resource oriented for users of parallelism and concurrency in Haskell unveiled 2011−04−20
Cloud Haskell wiki Collection of Cloud Haskell resources, as well as links to a number of new blog posts about Cloud Haskell last update 2012-11-12

[edit] 4 The Parallel Haskell Digest

We have been publishing a regular newsletter containing project news, other parallel news from around the Haskell community and short "Word of the Month" articles giving brief introductions to important concepts in parallelism.

The back issues are here:

[edit] 5 Getting involved

Progress reports will be posted to the parallel Haskell mailing list and to the Well-Typed blog.

The best starting point to get involved is to join the mailing list. Note that the list is for parallel Haskell generally, not just the Parallel GHC Project.

[edit] 6 Participating organisations

Dragonfly
Cloudy Bayes: Hierarchical Bayesian modeling in Haskell
The Cloudy Bayes project aims to develop a fast Bayesian model fitter that takes advantage of modern multiprocessor machines. It will support model descriptions in the BUGS model description language (WinBUGS, OpenBUGS, and JAGS). It will be implemented as an embedded domain specific language (EDSL) within Haskell. A wide range of model hierarchical Bayesian model structures will be possible, including many of the models used in medical, ecological, and biological sciences.
Cloudy Bayes will provide an easy to use interface for describing models, running Monte Carlo Markov chain (MCMC) fitters, diagnosing performance and convergence criteria as it runs, and collecting output for post-processing. Haskell's strong type system will be used to ensure that model descriptions make sense, providing a fast, safe development cycle.
IIJ Innovation Institute Inc.
Haskell is suitable for many kinds of domain, and GHC's support for lightweight threads makes it attractive for concurrency applications. An exception has been network server programming because GHC 6.12 and earlier have an IO manager that is limited to 1024 network sockets. GHC 7 has a new IO manager implementation that gets rid of this limitation.
This project will implement several network servers to demonstrate that Haskell is suitable for network servers that handle a massive number of concurrent connections.
Los Alamos National Laboratory
This project will use parallel Haskell to implement high-performance Monte Carlo algorithms, a class of algorithms which use randomness to sample large or otherwise intractable solution spaces. The initial goal is a particle-based MC algorithm suitable for modeling the flow of radiation, with application to problems in astrophysics. From this, the project is expected to move to identification of suitable abstractions for expressing a wider variety of Monte Carlo algorithms, and using models for different physical phenomena.
Willow Garage Inc.
Distributed Rigid Body Dynamics in ROS
Willow Garage seeks a high-level representation for a distributed rigid body dynamics simulation, capable of excellent parallel speedup on current and foreseeable hardware, yet linking to existing optimized libraries for low-level message passing and matrix math.
This project will drive API, performance, and profiling tool requirements for Haskell's interface to the Message Passing Interface (MPI) specification, an industry-standard in High Performance Computing (HPC), as used on clusters of many nodes.
Competing internal initiatives use C++/MPI and CUDA directly.
Willow Garage aims to lay the groundwork for personal robotics applications in everyday life. ROS (Robot Operating System) is an open source, meta-operating system for your robot.
Telefónica I+D
This project is to demonstrate parallel Haskell technology using the example of graph algorithms in large graphs representing social networks. The current work is on parallel versions of the Bron-Kerbosch algorithm for finding maximal cliques in a graph. The initial goal is to demonstrate good speedups on multi-core and the overall aim to demonstrate good speedups of a distributed version of the algorithm using Cloud Haskell.
VETT UK
VETT are working on a transaction processing application using Cloud Haskell. More details will be available shortly.