XDSL – Domain Specific Languages 

From climate change to medical research, scientists are always demanding the ability to simulate larger, more complex phenomena in as little time as possible. This is where exascale supercomputing has a critical role to play, however developing scientific software is a highly challenging task even for today’s supercomputers, let alone those of tomorrow. The reason for this difficulty is that programmers must address the tricky, highly specialised, low-level details of parallelism in order to ensure that their code sufficiently exploits the machine that they are running on. However, the domain scientist wants to be focusing on their science, rather than these complex and uninteresting (for them!) challenges.

Therefore, such tedious, but critically important, aspects of high-performance code development significantly reduce the productivity of scientists. Domain Specific Languages (DSLs) have the potential to revolutionize the development of scientific high performance software by  providing scientists with abstractions that are tailored for their specific problem. This not only significantly improves programmer productivity, but has also been repeatedly demonstrated to increase performance. By leveraging the rich domain knowledge encoded by the programmer, the compilation tool-chain can make effective choices about parallelism, for instance where to schedule components and how these should communicate. Furthermore, if the DSL is designed correctly, then the programmer is expressing their workload in an architecture-independent fashion, thus making portability across architectures highly accessible, with the compilation tool-chain doing much of the heavy lifting. 

DSLs have the potential to deliver the three ‘Ps’, namely productivity, performance, and performance portability. However, a major blocker for DSL development and adoption is the underlying compilation software stack. Often DSLs are developed in isolation, requiring significant investment of effort on behalf of the DSL developer and resulting in DSLs which share little infrastructure. This can be highly damaging for users, because not only do they rely on the maturity of their chosen DSL eco-system, but furthermore are at the mercy of the DSL developers for future bug fixes and features. Moreover, the provision of additional  tools such as debuggers and profilers can often require significant integration work. 

A collaboration between Edinburgh (the School of Informatics and EPCC), and Imperial, the XDSL project looks to revolutionize the field of DSLs by providing a common ecosystem that these technologies can be built upon. Advances in the past couple of years, such as the development of  Multi-Level Intermediate Representation (MLIR) for LLVM, provide potential technological solutions to this problem of compiler stack consolidation, and enable us to provide a common representation for codes at multiple levels of abstraction in DSL compiler development. 

The overall outcome of XDSL will be, instead of building DSL compilers as isolated monolithic towers, a toolbox that enables developers to build DSLs using a rich ecosystem of shared intermediate representations (IRs) and optimizations. We will evaluate,  drive, and demonstrate the DSL design toolbox in building the next generation of DSLs for seismic and climate modelling as well as medical imaging. These DSLs will share common software components and make them available for other DSLs. An extensive evaluation will show the scalability of DSL software towards exascale. 

Finally, this project investigates how future disruptors, including artificial intelligence, data science, and on-demand HPC-as-a-service, will shape and influence the next generations of high-performance software. This project will work towards deeply integrating modern interactive data analytics and machine learning methods from the Python ecosystem with high-performance scientific code.

Nick Brown, University of Edinburgh

Latest news