Skip to content
🌪️ TornadoVM: A practical and efficient heterogeneous programming framework for managed languages
Java C Python Shell
Branch: master
Clone or download
mikepapadim and jjfumero Remove unused method parameters, comments and empty lines (#402)
[style] Clean-up


* Remove unused method parameters
* Remove comments
* Remove empty spaces
* Remove unused imports
Latest commit 98cfa67 Dec 5, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assembly [fix] cleanFPGA header Dec 3, 2019
benchmarks Remove unused method parameters, comments and empty lines (#402) Dec 5, 2019
bin [rev]: Moved cleanFPGA script to assembly/src/bin to be seen from oth… Oct 30, 2019
drivers Remove unused method parameters, comments and empty lines (#402) Dec 5, 2019
etc [feat] Revert template Nov 6, 2019
examples Merge branch 'develop' into dev/misc/juan Dec 3, 2019
matrices <release> updating files for the 0.4 release Oct 14, 2019
runtime Remove unused method parameters, comments and empty lines (#402) Dec 5, 2019
scripts [tooling] added tornado-annotations in the eclipse formatter script Nov 26, 2019
tornado-annotation update tornado annotation module version to 0.4 Oct 18, 2019
tornado-api Remove unused method parameters, comments and empty lines (#402) Dec 5, 2019
unittests By mistake I reverted all my previous changes, so I implemented the r… Nov 29, 2019
.gitignore Added ASM library in its own module: tornado-annotation Oct 11, 2019
CHANGELOG.md Changelog updated Oct 14, 2019
CONTRIBUTIONS.md [docs] Documentation CONTRIBUTIONS updated Dec 4, 2019
INSTALL.md <fix> documentation Nov 15, 2019
Jenkinsfile [ci][feat] Raise timeouts for benchmarking step Nov 6, 2019
LICENSE_APACHE2 <Licences> Apache 2 and GPLv2 Classpath Exception Aug 27, 2018
LICENSE_GPLv2CE Clarification in the GPLv2 license Aug 27, 2018
Makefile [fix] Fix Reductions on Intel Integrated Graphics Nov 20, 2019
README.md
docs Docs link created Apr 11, 2019
pom.xml Merge pull request #355 from beehive-lab/feature/local-variable-annot… Oct 18, 2019

README.md

TornadoVM

🌪️ TornadoVM is a plug-in to OpenJDK that allows programmers to automatically run Java programs on heterogeneous hardware. TornadoVM currently targets OpenCL-compatible devices and it runs on multi-core CPUs, GPUs (NVIDIA and AMD), Intel integrated GPUs, and Intel FPGAs.

Releases

How to start?

A) From scratch:

The INSTALL page contains instructions on how to install TornadoVM while the EXAMPLES page includes examples regarding running Java programs on GPUs.

We also maintain a live TornadoVM whitepaper document which you can download here.

B) Using Docker

We have tested our docker images for CentOS >= 7.4 and Ubuntu >= 16.04. We currently have two docker images:

  • TornadoVM docker image for NVIDIA GPUs
  • TornadoVM docker image for Intel Integrated Graphics
TornadoVM Docker for NVIDIA GPUs:

It requires the nvidia-docker runtime.

$ docker pull beehivelab/tornado-gpu:latest
$ git clone https://github.com/beehive-lab/docker-tornado
$ cd docker-tornado
$ ./run_nvidia.sh javac.py example/MatrixMultiplication.java
$ ./run_nvidia.sh tornado example/MatrixMultiplication 
TornadoVM Docker for Intel Integrated GPUs:
$ docker pull beehivelab/tornado-intel-gpu:latest
$ git clone https://github.com/beehive-lab/docker-tornado
$ cd docker-tornado
$ ./run_intel.sh javac.py example/MatrixMultiplication.java
$ ./run_intel.sh tornado example/MatrixMultiplication 

See our docker-tornado repository for more details.

Example:
## Run with TornadoVM on an NVIDIA GPU 
$ ./run_nvidia.sh tornado example/MatrixMultiplication 2048   ## Running on NVIDIA GP100
Computing MxM of 2048x2048
	CPU Execution: 0.36 GFlops, Total time = 48254 ms
	GPU Execution: 277.09 GFlops, Total Time = 62 ms
	Speedup: 778x 

What can I do with TornadoVM?

We have a use-case, kfusion-tornadovm, for accelerating a computer-vision application implemented in Java using the Tornado-API to run on GPUs.

We also have a set of examples that includes NBody, DFT, KMeans computation and matrix computations.

Selected Publications

  • Juan Fumero, Michail Papadimitriou, Foivos Zakkak, Maria Xekalaki, James Clarkson, Christos Kotselidis. Dynamic Application Reconfiguration on Heterogeneous Hardware. In Proceedings of the 15th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments.

  • Juan Fumero, Christos Kotselidis. Using Compiler Snippets to Exploit Parallelism on Heterogeneous Hardware: A Java Reduction Case Study In Proceedings of the 10th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages (VMIL'18)

  • James Clarkson, Juan Fumero, Michalis Papadimitriou, Foivos S. Zakkak, Maria Xekalaki, Christos Kotselidis, Mikel Luján (The University of Manchester). Exploiting High-Performance Heterogeneous Hardware for Java Programs using Graal. Proceedings of the 15th International Conference on Managed Languages & Runtime. Preprint

  • Sajad Saeedi, Bruno Bodin, Harry Wagstaff, Andy Nisbet, Luigi Nardi, John Mawer, Nicolas Melot, Oscar Palomar, Emanuele Vespa, Tom Spink, Cosmin Gorgovan, Andrew Webb, James Clarkson, Erik Tomusk, Thomas Debrunner, Kuba Kaszyk, Pablo Gonzalez-de-Aledo, Andrey Rodchenko, Graham Riley, Christos Kotselidis, Björn Franke, Michael FP O'Boyle, Andrew J Davison, Paul HJ Kelly, Mikel Luján, Steve Furber. Navigating the Landscape for Real-Time Localization and Mapping for Robotics and Virtual and Augmented Reality. In Proceedings of the IEEE, 2018.

  • C. Kotselidis, J. Clarkson, A. Rodchenko, A. Nisbet, J. Mawer, and M. Luján. Heterogeneous Managed Runtime Systems: A Computer Vision Case Study. In Proceedings of the 13th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments, VEE ’17, link

Citation

If you are using TornadoVM >= 0.2 (which includes the Dynamic Reconfiguration, the initial FPGA support and CPU/GPU reductions), please use the following citation:

@inproceedings{Fumero:DARHH:VEE:2019,
 author = {Juan Fumero, Michail Papadimitriou, Foivos Zakkak, Maria Xekalaki, James Clarkson, Christos Kotselidis},
 title = {{Dynamic Application Reconfiguration on Heterogeneous Hardware.}},
 booktitle = {Proceedings of the 15th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments},
 series = {VEE '19},
 year = {2019},
 publisher = {ACM},
} 

If you are using Tornado 0.1 (Initial release), please use the following citation in your work.

@inproceedings{Clarkson:2018:EHH:3237009.3237016,
 author = {Clarkson, James and Fumero, Juan and Papadimitriou, Michail and Zakkak, Foivos S. and Xekalaki, Maria and Kotselidis, Christos and Luj\'{a}n, Mikel},
 title = {{Exploiting High-performance Heterogeneous Hardware for Java Programs Using Graal}},
 booktitle = {Proceedings of the 15th International Conference on Managed Languages \& Runtimes},
 series = {ManLang '18},
 year = {2018},
 isbn = {978-1-4503-6424-9},
 location = {Linz, Austria},
 pages = {4:1--4:13},
 articleno = {4},
 numpages = {13},
 url = {http://doi.acm.org/10.1145/3237009.3237016},
 doi = {10.1145/3237009.3237016},
 acmid = {3237016},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {Java, graal, heterogeneous hardware, openCL, virtual machine},
} 

Acknowledgments

This work was initially supported by the EPSRC grants PAMELA EP/K008730/1 and AnyScale Apps EP/L000725/1, and now it is funded by the EU Horizon 2020 E2Data 780245 and the EU Horizon 2020 ACTiCLOUD 732366 grants.

Collaborations

We welcome collaborations! Please see how to contribute in the CONTRIBUTIONS.

For academic collaborations please contact Christos Kotselidis.

Users Mailing list

A mailing list is also available to discuss Tornado related issues:

tornado-support@googlegroups.com

Contributors

This work was originated by James Clarkson under the joint supervision of Mikel Luján and Christos Kotselidis. Currently, this project is maintained and updated by the following contributors:

License

To use TornadoVM, you can link the Tornado API to your application which is under the CLASSPATH Exception of GPLv2.0.

Each TornadoVM module is licensed as follows:

Module License
Tornado-Runtime License: GPL v2 + CLASSPATH Exception
Tornado-Assembly License: GPL v2 + CLASSPATH Exception
Tornado-Drivers License: GPL v2 + CLASSPATH Exception
Tornado-API License: GPL v2 + CLASSPATH Exception
Tornado-Drivers-OpenCL-Headers License: MIT
Tornado-scripts License: GPL v2
Tornado-Annotation License
Tornado-Unittests License
Tornado-Benchmarks License
Tornado-Examples License
Tornado-Matrices License
You can’t perform that action at this time.