February 2012
2 posts
3 tags
The n-body problem and vectorisation of nested...
Last year, we spent a lot of energy on reducing the memory consumption of vectorised Data Parallel Haskell (DPH) programs that use large shared data structures. This work was driven by an implementation of the Barnes-Hut algorithm in DPH. Ben produced an illustrative video animating an n-body simulation with his Gloss library. The video is part of his blog article Vectorisation without Replication...
Feb 1st
January 2012
1 post
4 tags
Released Data.Array.Accelerate 0.9.0.0 — the...
I just released accelerate 0.9.0.0 on Hackage. This is the version that has been available from the GitHub repository for a while (supporting shape polymorphism, stencil computations, block I/O, and much more), but adapted such that it works with the forthcoming GHC 7.4.1 release. (I tested it with 7.4.1 RC2).It doesn’t yet include Trevor’s recent work that improved the CUDA backend in...
Jan 31st
1 tag
Free, nicely presented textbooks with good...
Free, nicely presented textbooks with good distribution have got quite an appeal. Begun it has RT @stevedekorte: First version of Io Programming Guide available for free on iTunes book store itunes.apple.com/us/book/io/id4…— Mac (@wmacgyver) January 26, 2012 Posted via email from Just Testing | Comment »
Jan 25th
November 2011
1 post
3 tags
Seminar by John Hughes & Simon Peyton Jones @ UNSW
As part of YOW! 2011 (the Australian Software Developer Conference), Simon Peyton Jones and John Hughes will be in Sydney on the 7th and 8th of December 2011. On the evening of the 7th, they will appear at the YOW! Night Sydney. On Thursday (8 December), John and Simon will give two presentations at the School of Computer Science and Engineering (CSE) of the University of New South Wales. The...
Nov 20th
8 notes
September 2011
1 post
Video and slides of "Data Parallelism in Haskell"...
Video @ vimeo The Brisbane FP Group (BFPG) kindly invited me to give a talk about our work on data parallel programming in Haskell. The talk motivates the use of functional programming for parallel, and in particular, data parallel programming and explains the difference between regular and irregular (or nested) data parallelism. It also discusses the Repa library (regular data parallelism for...
Sep 2nd
August 2011
1 post
4 tags
Data Parallel Haskell and Repa for GHC 7.2.1
As an add-on to the just released GHC 7.2.1, Ben just uploaded the Data Parallel Haskell packages (version 0.5) to Hackage. This version is still largely a technology preview and not a production-ready system. Nevertheless, it is significantly more robust than previous versions, especially for programs with a statically fixed depth of nesting of parallelism. For further information on how to...
Aug 11th
10 notes
April 2011
1 post
4 tags
Data.Array.Accelerate now on GitHub
Prompted by GHC’s move to Git and the unreliability of the community.haskell.org infrastructure, I decided to move Data.Array.Accelerate to GitHub: mchakravarty/accelerate. The GitHub repository is now the main public repository for the project. I will also move the tickets of the old Trac bug tracker over to GitHub Issues. Posted via email from Just Testing | Comment »
Apr 16th
19 notes
March 2011
2 posts
5 tags
Real-time edge detection with the latest release...
We just released version 2.0.0.1 of the Repa array library for Haskell, which includes Ben’s recent work on high-performance, parallel stencil computations. The work on stencil computations is described in detail in a draft paper entitled  Efficient Parallel Stencil Convolution in Haskell. Be sure to check out Ben’s screencast of a real-time edge detection application, written in...
Mar 29th
11 notes
4 tags
Simon Peyton Jones: parallel = functional
Simon Peyton Jones recently gave a talk on parallel programming in Haskell at Functional Programming eXchange 2011. It provides a comprehensive overview of the state of the art of parallel programming in Haskell. It covers Software Transactional Memory, Erlang-style communicating processes, parallel strategies as well as our Data Parallel Haskell, Repa, and Accelerate projects. Watch the video. ...
Mar 29th
27 notes
January 2011
1 post
Moving mail archives to MobileMe (or other Sun...
I recently consolidated all my email on MobileMe (for easy access from both my Mac and iPad).  However, I ran into a problem with the MobileMe IMAP server when I tried to move my old mail archives to the MobileMe IMAP server.  MobileMe uses the Sun Java System Messaging Server (which has since become the Oracle Communications Messaging Exchange Server).  It turns out that this IMAP server (like...
Jan 20th
November 2010
3 posts
4 tags
Final version of the Accelerate paper (GPGPU in...
We will present our paper Accelerating Haskell Array Codes with Multicore GPUs at ACM SIGLAN Declarative Aspects of Multicore Programming (DAMP 2011), which is co-located with POPL’11 in Austin, TX, in January. The final version of our paper is now available, and we plan to soon release a significantly improved version of the Accelerate library (matching the API used in the paper), which...
Nov 25th
4 notes
4 tags
Final version of the Singleton paper
Our paper Singleton: A General-Purpose Dependently-Typed Assembly Language will be presented at the ACM SIGPLAN Workshop on Types in Language Design and Implementation (TLDI’11) co-located with POPL’11 in Austin, TX, in January.  The final version of the paper is now available. Posted via email from Just Testing | Comment »
Nov 24th
3 tags
Quickly searching Hackage and Hoogle on Mac OS X
Haskellers on Macs should check out Alfred App.  It’s a launcher application that also does web searches and a few other things.  In particular, it enables you to define custom searches that you can quickly access with a hot key from wherever you are.  I am using the two following custom searches to quickly search through Hackage and Hoogle: hackage...
Nov 3rd
7 notes
October 2010
1 post
4 tags
Accelerating Haskell Array Codes with Multicore...
In the paper Accelerating Haskell Array Codes with Multicore GPUs, we describe Accelerate, embedded language for array computations in Haskell, as well as a dynamic code generator targeting NVIDIA’s CUDA GPGPU programming environment.  Our CUDA code generator is based on the idea of algorithmic skeletons for parallel programming, minimises re-compilation overheads, and overlaps...
Oct 11th
4 notes
August 2010
1 post
4 tags
Second beta release for the CUDA backend of...
The second beta release of Data.Array.Accelerate (version 0.8.0.0) includes support for all array operations in the CUDA backend — except for a new stencil operation that is new in this release and currently only supported by the interpreter.  The CUDA backend requires CUDA 3.x and has been tested on consumer-grade GeForce cards, TESLA high-performance GPUs, and the new Fermi cards.If you are...
Aug 21st
July 2010
3 posts
4 tags
First release of the CUDA backend for Accelerate
During the first Australian Haskell Hackathon, AusHac2010, we finally managed to complete the integration of the CUDA backend, written by Sean Lee and Trevor McDonell, into the array EDSL Accelerate.  It still doesn’t cover the complete functionality of the current version of the Accelerate EDSL, but already allows for interesting GPU computations.  The package source (version 0.7.1.0) can...
Jul 18th
2 notes
4 tags
Singleton: A general-purpose dependently-typed...
In the paper Singleton: A general-purpose dependently-typed assembly language, we introduce Singleton, a typed assembly language that embeds a variant of the calculus of inductive constructions (CiC) as an assertion language in its type system.  Moreover, Singleton procedures can abstract over propositions and proof terms.  Singleton’s name comes form its support for generalised singleton...
Jul 16th
5 notes
3 tags
Haskell 2010 is complete!
The final version of the Haskell 2010 edition has been released: http://www.haskell.org/pipermail/haskell/2010-July/022189.html This completes my stewardship of the Haskell foreign function interface specification. It is now part of the language standard proper. The next language feature I personally like to see being integrated are type families, but that still requires much work. ...
Jul 6th
16 notes
June 2010
2 posts
5 tags
New paper: An LLVM Backend For GHC
In An LLVM Backend For GHC, we describe the design and implementation of an LLVM backend for the Glasgow Haskell Compiler (GHC).  We outline the conceptual obstacles that we had to overcome and give a detailed performance analysis of the new backend compared to the existing C backend and native code generator. Posted via email from Just Testing | Comment »
Jun 14th
1 tag
One week with iPad
When I decided to by an iPad, I had one killer application in mind: reading.  I was hoping the device would also be useful otherwise, but cutting down on printing papers and the like was my main aim.  As a researcher, I inevitably read a lot: research papers, books, reports, manuals, thesis drafts, the drafts of my own work-in-progress papers, and so on.  I have got reading material on my desk at...
Jun 6th
May 2010
2 posts
3 tags
GHC LLVM backend work makes it onto the LLVM...
David Terei wrote a post for the LLVM project blog summarising the motivation and experiences from his Honours project.  The blog post contains a nice summary of the GHC LLVM backend project and quotes some new benchmark results. Posted via email from PLS @ UNSW | Comment »
May 16th
5 notes
4 tags
Simon Peyton Jones on Data Parallel Haskell
Simon Peyton Jones recently got stranded in Boston due to Eyjafjallajokul.  He took the opportunity to give a talk about our joint Data Parallel Haskell project at Northeastern University.  The Northeastern folks kindly recorded and published the talk.  The talk provides a nice summary of our approach. Posted via email from PLS @ UNSW | Comment »
May 6th
1 note
April 2010
2 posts
jballer: Gizmodo's Trade Secret Liability →
A number of sources have turned to Ian Betteridge’s thoughtful analysis of the Gizmodo saga. I believe that, because he failed to address California law, Ian was too quick to dismiss the possibility of trade secret claims by Apple. As Ian points out, Federal law requires “reasonable…
Apr 23rd
391 notes
3 tags
Regular, shape-polymorphic, parallel arrays in...
The paper Regular, shape-polymorphic, parallel arrays in Haskell describes a new Haskell library, named Repa, for multi-dimensional, regular arrays based on our work on Data Parallel Haskell and a delayed array representation avoiding unnecessary data structures. As the following table shows, the sequential performance already gets close to the performance of C programs. More importantly, the...
Apr 5th
2 notes
March 2010
1 post
3 tags
Status Update on the LLVM Backend for GHC
GHC’s new LLVM backend, developed by David Terei as part of his Honours thesis at PLS, is being made ready for inclusion into the main GHC repository.  The backend requires a new calling convention to be added to LLVM.  David got a patch including the new calling convention accepted into the main LLVM distribution, just in time to become part of the forthcoming LLVM 2.7 release — the...
Mar 17th
February 2010
5 posts
5 tags
More Fun Tracing Parallel Haskell Programs
I recently wrote about profiling sparse-matrix vector multiplication implemented with Data Parallel Haskell.  Let’s take this a step further and look at a program parallelised with package parallel, instead of Data Parallel Haskell.  Specifically, we look at the dense matrix-matrix multiplication benchmark of the parallel section of the nofib benchmark suite.  This benchmark uses a linewise...
Feb 18th
2 tags
New LLVM Backend for GHC Ready to Merge
David Terei is close to merging the LLVM-based code generator that he developed for GHC (Glasgow Haskell Compiler) into the main repository.  He developed the new backend as part of his Honours thesis at PLS and just requested to merge the code on the GHC developer list. Posted via email from PLS @ UNSW | Comment »
Feb 18th
3 tags
A CUDA Interface Binding for Haskell
Trevor McDonell, who works on nested data parallelism for GPGPU programming at PLS, released package cuda, a brand new Haskell binding for CUDA, NVIDIA’s general-purpose compute language for GPUs.  The purpose of the binding is not to write CUDA code in Haskell, but to call and control existing CUDA code from Haskell.We are using package cuda to execute code generated by our, not yet...
Feb 17th
4 notes
3 tags
Version 0.5 of Package vector — high-performance...
Roman Leshchinskiy, the code ninja behind package dph, released Version 0.5 of package vector and declared the package to be now in beta — Roman provides more details on the new features and performance.  As a result, Don Stewart announced that he will stop developing uvector further (with the exception of maintenance fixes) and encouraged uvector users to move to package vector.  Both package...
Feb 17th
5 tags
Tracing Sparse Matrix-Vector Multiplication with...
The following is an example trace of a Data Parallel Haskell program multiplying a sparse matrix (10k x 10k elements with 10% non-zero elements) with a dense vector.  The program runs on both cores of an Intel Core 2 Duo processor and uses GHC’s new DTrace support on Mac OS X to gather the trace data, which I visualised in Instruments.  Of the three tracks, the topmost shows garbage...
Feb 13th
January 2010
1 post
4 tags
Profiling Garbage Collection in Haskell with...
I recently added DTrace probes to the GHC runtime system.  In the following, I will explore the use of these probes for profiling the garbage collection behaviour of Haskell programs.  Mac OS X comes with a graphical tool, called Instruments, that supports visualising data gathered with DTrace.  Let’s start by having a look at visualising the DTrace events gc-start and gc-end for the...
Jan 23rd
December 2009
1 post
4 tags
Using DTrace to track scheduler events of GHC's...
I finally got around to committing my instrumentation of the GHC runtime system with DTrace probes (commit message).  The current set of probes tracks all the events of the eventlog framework used by ThreadScope.  A detailed description of the probes is on the new Using DTrace with GHC page of the GHC developer wiki. Posted via web from Just Testing | Comment »
Dec 12th
November 2009
2 posts
2 tags
Haskell 2010
Four years ago the Haskell’ Committee was assembled, charged with the task to produce a new revision of the Haskell language standard (aka Haskell 98). There was a lot of enthusiasm and many wild ideas in the beginning, but it turned out that it was hard to agree on the scope of changes and that it was very hard to find a person willing to shoulder the rather large editorial burden that a...
Nov 24th
3 tags
Status Update of the Glasgow Haskell Compiler,...
If you are interested in Haskell generally or the Glasgow Haskell Compiler (GHC) in particular, you may want to have a look at the latest issue of the biannual GHC status updates.  It includes a summary of our recent progress in the Data Parallel Haskell project. Posted via web from Just Testing | Comment »
Nov 3rd
October 2009
9 posts
3 tags
Finally found the ghci bug on Snow Leopard
After much digging through otool output and tracing Haskell code with dtrace, log messages, and gdb, I finally found the cause of the SIGBUS errors with ghci on Snow Leopard. At the end, only a tiny change was required[1]: the homegrown dynamic linker of ghci had simply ignored a relocation type that ld on Snow Leopard chose to use. What this really shows again is that re-implementing parts of...
Oct 29th
1 note
3 tags
Data-oriented programming and the vectorisation...
I just realised that the data layout and the resulting code organisation in data-oriented programming, as proposed for games design, in many aspects resembles the data layout and code organisation favoured by the vectorisation transformation that is at the core of Data Parallel Haskell.  This should not be surprising as both have similar goals, namely to maximise data throughput, to minimise...
Oct 26th
2 tags
Fun with higher-order functions in C and...
The latest release of Mac OS X (Snow Leopard) came with an upgrade to the C and Objective-C languages, adding lambda abstractions — which they call blocks. Matt Gallagher has a nice blog post that describes some of the trickier aspects of blocks: http://cocoawithlove.com/2009/10/ugly-side-of-blocks-explicit.html Interesting is the function ‘newDoubleToIntComparison’ (in Section...
Oct 19th
5 tags
Multicore Haskell Now!
Don Stewart summarised the state of play of parallel programming in Haskell at “ACM Reflections | Projections 2009”. He covers strategies, Concurrent Haskell, STM, and Data Parallel Haskell: http://donsbot.wordpress.com/2009/10/17/multicore-haskell-now-acm-reflections-projections-2009/ Posted via email from Just Testing | Comment »
Oct 17th
3 tags
Don Stewart's talk on Domain Specific Languages...
Don argues in favour of domain-specific languages for high-performance computing. Not surprisingly, he suggests that Haskell is well suited as a host for realising such domain-specific languages as embedded languages: http://donsbot.wordpress.com/2009/10/16/lacss-2009-domain-specific-languages-and-haskell/ Posted via email from Just Testing | Comment »
Oct 16th
1 tag
The Status of the P Versus NP Problem
The current issue of CACM (Communications of the ACM) has a very nice summary of the long-standing question of whether nondeterministic polynomial-time problems (NP) can also be solved in polynomial-time (P). In particular, it discusses the implications of this question on computing and other scientific disciplines in some detail:...
Oct 8th
3 tags
Parallelism /= Concurrency
Simon Marlow posted an instructive blog article disentangling the widespread confusion about the relationship between parallelism and concurrency: http://ghcmutterings.wordpress.com/2009/10/06/parallelism-concurrency/ Posted via email from Just Testing | Comment »
Oct 6th
1 tag
The insanity of software patents
There is plenty of coverage on how illicit copying of software harms the software industry, but little is told about how Patent Pirates turn to a modern form of extortion: http://arstechnica.com/tech-policy/news/2009/10/company-that-won-585m-from-microsoft-sues-apple-google.ars Posted via email from Just Testing | Comment »
Oct 6th
September 2009
8 posts
3 tags
NVIDIA’s next generation GPU architecture has a...
Yesterday, NVIDIA presented its next-generation GPU architecture, called “Fermi”: http://insidehpc.com/2009/09/30/nvidia-next-generation-gpu-fermi-targets-hpc-supercomputing/ In addition to more raw computing power, Fermi brings advances that make it even more interesting for general-purpose computations than the current NVIDIA GPUs. In particular, it seems to support function...
Sep 30th
Heads Up: GHC devs on Macs - GHC's testsuite...
GHC’s testsuite[1] contains a test ‘encoding001’ (in the I/O library section) that generates files in various unicode encodings including one using UTF-8 with byte order markers, namely ‘encoding001.utf16.utf8_bom’. On Mac OS X 10.6 (Snow Leopard), this file causes the indexing process of Spotlight to hang. More precisely, the ‘mds’ (meta dataserver)...
Sep 23rd
Haskell Bindings to C – c2hs
TomMD posted a nice introduction to using the interface generator C- >Haskell http://tommd.wordpress.com/2009/09/22/haskell-bindings-to-c-c2hs/ Posted via email from Just Testing | Comment »
Sep 22nd
Language Specification for Blocks
Here is the language specification for blocks (that is lambda abstractions) for C, Objective-C & C++ as implemented in the Clang compiler and used in Mac OS X 10.6 (Snow Leopard):    http://clang.llvm.org/docs/BlockLanguageSpec.txt Posted via email from Just Testing | Comment »
Sep 18th
Implementing Data Parallel Haskell
Here is a video of Roman Leshchinskiy’s talk on our work on implementing Data Parallel Haskell (DPH), which he presented at the Haskell Implementors’ Workshop (co-located with ICFP’09):   Posted via email from Just Testing | Comment »
Sep 14th
Running Haskell Array Computations on a GPU
Video of my talk at the Haskell Implementors’ Workshop. The slides are available from a previous post: http://justtesting.posterous.com/haskell-arrays-accelerated-0 Posted via email from Just Testing | Comment »
Sep 14th
“Functional programming is an attitude, not a fashion style.”
– Don Stewart on his blog
Sep 12th
Grand Central Dispatch aka libdispatch is now Open...
Apple released the source code of one of the core technologies in Snow Leopard: http://libdispatch.macosforge.org/ This is an interesting move, as discussed at http://www.macresearch.org/grand-central-now-open-all — it will be very interesting to see whether this will lead to a wider adoption of Grand Central Dispatch beyond Mac OS. Posted via email from Just Testing | Comment »
Sep 11th