Speaker: James Clarkson from the University of Manchester Title: Tornado: Heterogeneous Programming in Java Abstract: As the popularity of “big data” frameworks grow, a lot of effort is currently being exerted trying to improve the performance of JVM (Java Virtual Machine) based languages, such as Java and Scala. One way of doing this is to develop mechanisms that allow these languages to make use of hardware accelerators, such as GPGPUs. As a result there has been a number of projects, such as Project Sumatra (OpenJDK) [4], Rootbeer [5] and APARAPI (AMD) [6], that have attempted to support programming GPGPUs from Java. However, a lot of this prior art only focuses on accelerating simple workloads or providing a interface into another programming language - making it difficult for them to be used to create real-world applications. In this talk I will discuss how we have developed a framework that moves beyond the prior art and allows developers to accelerate complex Java applications. Our Java based framework, Tornado, provides developers with a simple a task-based programming model which allows the assignment of task to device. Typically, tasks are assigned to execute on a GPGPU, but could equally be assigned to a multi-core processor or even an FPGA. Moreover, the design of Tornado means that this assignment can be changed dynamically - meaning that applications are not artificially restricted to using a specific class of device. Additionally, the Tornado API has been designed to avoid the need to re-engineer applications to utilise the framework: to do this we have had to support a wider range of language features than the prior art - exceptions, inheritance and objects to name a few. Finally, we will share our experiences porting a complex CUDA C++ application into pure Java. Bio: James Clarkson is a 3rd year PhD student from the University of Manchester in the UK. He is a member of the Advanced Processor Technologies (APT) group, working under the supervision of Mikel Lujan. His research interests are programming languages and programming exotic hardware architectures (in Java!). He is actively contributing to the EPSRC funded AnyScale [1] and PAMELA [2] projects, and has previously contributed to the EU funded Mont Blanc project [3]. [1] AnyScale project - http://anyscale.org [2] PAMELA project - http://apt.cs.manchester.ac.uk/projects/PAMELA/ [3] Mont Blanc project - https://www.montblanc-project.eu [4] Project Sumatra - http://openjdk.java.net/projects/sumatra/ [5] Rootbeer - https://github.com/pcpratts/rootbeer1 [6] APARAPI - https://code.google.com/archive/p/aparapi/