My research focuses on Programming Languages, Parallel Programs and GPGPU, with Machine Learning and Evolutionary approaches as tools to improve them. My PhD thesis is titled “Automatic Optimization of Granularity Control Mechanisms for Parallel Programs”.
I am an integrated member of LASIGE, and my work fits in the Reliable Software Systems research line.
Publication List
Research Topics
- Programming Languages
- Dependent Types
- Automatic Parallelization
- Parallel Program Optimization
- Parallel Program Energy Consumption
- Work-stealing Runtimes
- GPGPU
Student Projects
I am always looking for skilled students to collaborate in my research, either part-time or for their MSc dissertation. I have a list of project ideas, but you can submit your own.
Research Software
The following software resulted from this research:
- GeneticEngine, a Python framework for Grammar-Guided Genetic Programming that uses Datatypes to represent Grammars. It can be used for synthesis, test generation, and program optimisation. (Paper)
- Æon Programming Language, a functional programming language with (liquid and non-liquid) refined types, that is used for search-based synthesis. (Paper)
- Aeminium Runtime – A task-based work-stealing runtime. It follows Cilk THE algorithm for work-stealing, but is configurable with several work-stealing algorithms, and different granularity control algorithms. (Paper)
- Aeminium Benchmarks – A set of 24 recursive parallel programs, each implemented sequentially, using Java ForkJoin or using Aeminium Runtime. Most of the programs were reimplemented based on other benchmark suites, but some of the programs are new. The parameters chosen can evidence differences in granularity control choices, and execute within minutes. The benchmark measurement utility follows the Statistical Rigorous Java Performance Evaluation methodology. (Paper)
- JPar Compiler – A compiler built on top of spoon, which extracts data permissions from sequential java source code, and generates parallel java source code, using calls to the Aeminium Runtime. (Paper parallelization) (Paper granularity)
- AeminiumGPU Compiler and Runtime – A compiler that translates map-reduce programs in Java to OpenCL, and a runtime library that executes the OpenCL kernels automatically. (Paper)