Dr Michel Steuwer
- Lecturer (Computing Science)
telephone: +44 (0)141 330 1646
Personal Website: http://michel.steuwer.info
I am a lecturer (assistant professor) in the School of Computing Science at the University of Glasgow in Scotland. I am a member of the the GLAsgow Systems Section (GLASS), the Glasgow Parallelism Group (GPG), an associated member of the Formal Analysis, Theory and Algorithms (FATA) section, and a visiting member of the Compiler and Architecture Design Group (CArD) at the University of Edinburgh.
What is parallel programming and why is it important?
Computers have become more and more powerful by increasingly complex designs where many computations can happen at the same time in parallel. Virtually every computer from the tiny once in your smartphone to the extreme large once filling entire data centres are nowadays parallel. Programming these computers and making efficient use of them is much more difficult than it was for traditional computers.
I am researching methodologies and techniques to simplify the development of software which makes efficient use of the computer hardware. This research is fundamental for our ability to tackle many important and complex applications ranging from the artificial intelligence which makes your smartphone smart and which will drive our cars up to complex scientific simulations which enhance our understanding of climate change.
I am interested in all aspects of parallel programming. Particular research interests of mine include structured parallel programming, heterogeneous and GPU computing, and novel compilation techniques for high-level languages.
Lift is a project aiming to achieve performance portability across modern parallel architectures. The Lift compiler transforms a program expressed in the high-level Lift programming language into optimised low-level OpenCL code. In this transformation optimisations are automatically explored using a set of rewrite rules. Lift is open source software available on GitHub. Lift has been described in multiple research publications. Lift is actively developed by a research team including currently six PhD students based in Scotland and Germany.
PACXX allows programming of accelerators with modern C++. PACXX is developed by Michael Haidl at the University of Münster. In a series of collaborative publications we explore challenges of heterogeneous compiler implementations and the design of modern C++ range-based libraries for parallel programming.
GPU Compilation for Interpreted Languages is the one of the first solutions for compiling a dynamic interpreted programming language – namely R – to GPU code. The generation of GPU code happens at runtime after crucial information of the program, such as data types, have been observed by profiling. Juan Fumero has developed our implementation which is described in our recent paper.
Marawacc is a solution for GPU programming from Java. Marawacc combines a library interface similar to the stream API from Java 8 and a compiler which generates OpenCL code from Java byte code at runtime. Data management optimisations eliminate the overhead of data marshalling. Marawacc is open source software available on Bitbucket. Marawacc has been described in multiple publications and has been developed by Juan Fumero.
SkelCL is a library providing high-level abstractions to alleviate programming of modern parallel heterogeneous systems comprising of multi-core CPUs and GPUs. SkelCL is open source software available on GitHub. SkelCL has been described in multiple research publications. SkelCL is no longer under active development.
Steuwer, M., Fensch, C., Lindley, S. and Dubach, C. (2015) Generating Performance Portable Code Using Rewrite Rules: from High-Level Functional Expressions to High-Performance OpenCL Code. In: ICFP 2015 Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming, Vancouver, BC, Canada, 31 Aug - 02 Sep 2015, pp. 205-217. ISBN 9781450336697 (doi:10.1145/2784731.2784754)
Hagedorn, B., Stolzfus, L., Steuwer, M., Gorlatch, S. and Dubach, C. (2018) High Performance Stencil Code Generation with LIFT. In: International Symposium on Code Generation and Optimization (CGO'18), Vienna, Austria, 24-28 Feb 2018, pp. 100-112. ISBN 9781450356176 (doi:10.1145/3168824)
Steuwer, M., Remmelg, T. and Dubach, C. (2017) Lift: a Functional Data-Parallel IR for High-Performance GPU Code Generation. In: 2017 IEEE/ACM International Symposium on Code Generation and Optimization (CGO), Austin, TX, USA, 04-08 Feb 2017, pp. 74-85. ISBN 9781509049318 (doi:10.1109/CGO.2017.7863730)
Steuwer, M., Remmelg, T. and Dubach, C. (2016) Matrix Multiplication Beyond Auto-Tuning: Rewrite-Based GPU Code Generation. In: CASES '16 Proceedings of the International Conference on Compilers, Architectures and Synthesis for Embedded Systems, Pittsburgh, PA, USA, 01-07 Oct 2016, p. 15. (doi:10.1145/2968455.2968521)
Fumero, J., Steuwer, M., Stadler, L. and Dubach, C. (2017) Just-In-Time GPU Compilation for Interpreted Languages with Partial Evaluation. In: VEE '17 Proceedings of the 13th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments, Xi'an, China, 08-09 Apr 2017, ISBN 9781450349482 (doi:10.1145/3050748.3050761)
Steuwer, M., Haidl, M., Breuer, S. and Gorlatch, S. (2014) High-level programming of stencil computations on multi-GPU systems using the SkelCL library. Parallel Processing Letters, 24(3), 1441005. (doi:10.1142/S0129626414410059)