A. Borusan

31.03.2017, 11 Uhr s.t. TU Berlin, EN building, seminar room EN 719 (7th floor), Einsteinufer 17, 10587 Berlin: "Tornado: Practical Heterogeneous Programming in Java" (James Clarkson, University of Manchester, UK)

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 an 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 diverse set of hardware resources such as GPGPUs, FPGAs, and Xeon Phi. Moreover, the design of Tornado allows those assignments to 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 achieve that, we added support for a wide range of language features than the prior art - exceptions, inheritance and objects to name a few. Finally, we will share our experiences porting and accelerating a complex Computer Vision application into pure Java.

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/