Implementation von Vektoroperationen für SBCL


Priv.-Doz. Dr. Nicolas Neuß
Angewandte Mathematik III
FAU Erlangen-Nürnberg

Marco Heisig
Informatik 10
FAU Erlangen-Nürnberg

Project Summary

Since decades the progamming language Common Lisp (CL) offers a very interesting mixture of interactivity and numerical efficiency. Furthermore, many CL implementations offer possibilities for parallel processing in the form of OS threads. With KONWIHR support in an earlier project, also an MPI interface for Common Lisp was created [1]. Still missing was the support of SIMD vector operations, and the goal of this project was to implement those for the well-known CL implementation SBCL.

The following was achieved within and with the help of this project:

– Integration of the SIMD-Befehlssatz (SSE/AVX) in SBCL
– Implementation of the library sb-simd for simple use of these operations
– Implementation of the library Loopus for automatic SIMD vectorization in simple loops.

At the moment, sb-simd is already a well-accepted library in the SBCL community. Both sb-simd and Loopus are described in [2] where it is also shown, that they can be used to write very simple Common Lisp Code that is compiled to vectorized native code which runs as fast as the equivalent compiled, optimized and vectorized C-Code.


[1] Marco Heisig, Nicolas Neuss: Distributed High Performance Computing in Common Lisp. In Proceedings of the 9th European Lisp Symposium 2016, ACM, New York, NY, USA.
[2] Marco Heisig, Harald Köstler (2022): Closing the Performance Gap Between Lisp and C. In Proceedings of the European Lisp Symposium (ELS’22). ACM, New York, NY, USA, 7 pages,