SoSe 24: Software Project: GPU Offloading and Compiler Optimization
Barry Linnert
Additional information / Pre-requisites
Target group
Bachelor and Master of Computer Science
Homepage
https://www.mi.fu-berlin.de/w/SE/SoftwareprojektCompilerOptimization2024
Lecturer & Contact Person
Barry Linnert
closeComments
Pony [1] is a programming language designed to be high performant.
It makes use of the actor paradigm [2]:
every sequential piece of code should be written as an actor
but the actors themselves run concurrently and independent from
each other.
Concurrency on the level of tasks [3] (in this case a task is an actor)
provides speed up by design.
However, there are other forms of parallelism on other levels
that could be exploited to make Pony even more performant.
Parallelism on data level [4] can for example be found in a loop nest
that executes many times on independent but equally structured data.
Graphic processing units (GPUs) specialize in computing data-level
parallel problems.[5]
In a system where a GPU complements a CPU data-level parallel portions
of code can be offloaded to the GPU.
The GPU takes care of calculating the data-level parallel problem
and uses its ressources to do this very fast.
This way a speed up of the overall program can be achieved.
In this software project we want to explore if GPU Offloading can be
integrated in the Pony Programming language.
In order to do that we take a look at the Pony compiler and experiment
with it and rewrite parts of it.
You can learn about the internal workings of a compiler
and how GPUs can be leveraged to achieve the speed up of a program.
Further, we will get to know more about
the compiler infrastructure LLVM [6] that the Pony compiler is a frontend of.
If you have never heard of LLVM before then maybe it is interesting for you to know
that the Rust and Clang compiler are other frontends to LLVM.
In its core this software project is a research project --
possibly with the option to later publish the results of our experiments
and contribute to the open source projects Pony and LLVM.
Links:
[1]: [Pony](https://www.ponylang.io/discover/#what-is-pony)
[2]: [Actor Model](https://en.wikipedia.org/wiki/Actor_model)
[3]: [Task-level parallelism](https://en.wikipedia.org/wiki/Task_parallelism)
[4]: David A. Patterson and John L. Hennessy. Computer Organization and Design: The Hardware Software Interface [RISC-V Edition]. 2nd. The Morgan Kaufmann Series in Computer Architecture and Design. Morgan Kaufmann, 2021. ISBN: 9780128203316. Page 528.
[5]: David A. Patterson and John L. Hennessy. Computer Organization and Design: The Hardware Software Interface [RISC-V Edition]. 2nd. The Morgan Kaufmann Series in Computer Architecture and Design. Morgan Kaufmann, 2021. ISBN: 9780128203316. Appendix B.
[6]: [LLVM](https://llvm.org/)
close
15 Class schedule
Additional appointments
Mon, 2024-09-30 12:00 - 14:00Regular appointments