Posts by Collection

portfolio

projects

publications

Exploiting High-Performance Heterogeneous Hardware for Java Programs using Graal

Published in ManLang 2018, Linz, Austria, 2018

Recommended citation: James Clarkson, Juan Fumero, Michalis Papadimitriou, Foivos S. Zakkak, Maria Xekalaki, Christos Kotselidis, Mikel Lujan (The University of Manchester) Exploiting High-Performance Heterogeneous Hardware for Java Programs using Graal. ManLang 2018. https://www.researchgate.net/publication/327097904_Exploiting_High-Performance_Heterogeneous_Hardware_for_Java_Programs_using_Graal

Dynamic Application Reconfiguration on Heterogeneous Hardware

Published in VEE 2019, Providence, Rhode Island, United States, 2019

Recommended citation: Juan Fumero, Michail Papadimitriou, Foivos S. Zakkak, Maria Xekalaki, James Clarkson, and Christos Kotselidis. 2019. Dynamic application reconfiguration on heterogeneous hardware. In Proceedings of the 15th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE 2019). ACM, New York, NY, USA, 165-178. DOI: https://doi.org/10.1145/3313808.3313819 https://github.com/jjfumero/jjfumero.github.io/blob/master/files/VEE2019_Fumero_Preprint.pdf

talks

Invited Talk - FastR-Flink: A compiler based approach for distributed computing in R

Published:

During the past few years R has become an important language for data analysis, data representation and visualization. R is a very expressive language which combines functional and dynamic aspects, with laziness and object oriented programming. However, the default Rimplementation is neither fast nor distributed, both features crucial for “big data” processing.

Invited Talk at Edinburgh University - FastR-Flink

Published:

During the past few years R has become an important language for data analysis, data representation and visualization. R is a very expressive language which combines functional and dynamic aspects, with laziness and object oriented programming. However, the default Rimplementation is neither fast nor distributed, both features crucial for “big data” processing.

Towards Practical Heterogeneous Virtual Machines

Published:

Heterogeneous computing emerged as a means to achieve higher performance and energy efficiency. However, this trend has been accompanied by changes in software development norms that do not necessarily favour programmers. A prime example is the two most popular heterogeneous programming languages, CUDA and OpenCL, which expose several low-level features to the API making them difficult to use by non-expert users.

Invited talk at MSR - Tornado VM: A Virtual Machine for Exploiting High-Performance Heterogeneous Hardware of Java Programs

Published:

The proliferation of heterogeneous hardware in recent years means that every system we program is likely to include a mix of computing elements; each of these with different characteristics. This trend has been accompanied by changes in software development norms that do not necessarily favor programmers. A prime example is the two most popular heterogeneous programming languages, CUDA and OpenCL, which expose several low-level features to the API making them difficult to use by non-expert users.

Invited talk at ARM - Exploiting Heterogeneous Hardware from Managed Runtime Languages

Published:

The proliferation of heterogeneous hardware in recent years means that every system we program is likely to include a mix of computing elements; each of these with different characteristics. This trend has been accompanied by changes in software development norms that do not necessarily favor programmers. A prime example is the two most popular heterogeneous programming languages, CUDA and OpenCL, which expose several low-level features to the API making them difficult to use by non-expert users.

teaching

Object Oriented Programming (Java course)

Tutoring, The University of Edinburgh, 2015

I was tutoring the Introduction to Object Obriented Programming through Java to groups of 8-10 of undergraduate students during Spring 2015 and 2016. We covered an introduction to topics such as Object Oriented Programming, inheritance, Java collections, Threads, concurrency and parallelism. We also covered some material about how the Java Virtual Machine works.