In recent times, developers have more and more been using high-level programming languages because of the increase in programmer efficiency. Where that efficiency often comes at the cost of run-time performance, languages like Julia and Rust have been trying to bridge the gap, offering high-level language features at the speed of low-level C. However, these languages fail to target the increasingly popular segment of accelerators: Hardware like GPUs and FPGAs, which offer tremendous performance albeit on very specific workloads. High-level language compilers are often optimized for traditional microprocessors, and certain language features are incompatible with accelerator hardware.
In this project, we want to explore adding generic interfaces to the high-level language compiler, to configure or override behavior and make the language compatible with accelerator hardware. We propose to work with the Julia programming language, a high-level but high-performance language built on top of the LLVM compiler framework, and target GPUs, a powerful and commonly available type of accelerator. Making Julia’s high-level language features available for GPU programming will greatly improve the accelerator’s programmability. Our approach of extending the compiler with generic interfaces, instead of ad-hoc modifications for a
single target, will improve integration with the rest of the language’s ecosystem while making it easier to add support for new hardware.