Towards Optimized Vector Instructions for High-Performance Functional Programming
Mamtaj Akter
Committee: Boyana Norris
Masters Thesis(May 2024)
Keywords:

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.