Abstract:
The Basic Linear Algebra Subprograms or BLAS provide the foundation
for much of the software used in scientific computing. To date, BLAS has been
implemented in C, Fortran, and directly in assembly. These languages allow the
implementations to be well optimized by hand ensuring when a BLAS routine is
called that it is as fast a possible.
Functional programming languages, and in particular Haskell, do not allow
the fine-grained control over memory, and their high-level features make it hard
to optimize a single function to the level of C or assembly. However, Haskell
has an advantage when optimizing combinations of container-based operations.
Because of this we explore both implementing BLAS in Haskell and comparing the
Glasgow Haskell Compiler’s ability to optimize scientific programs to that of a C
compiler.