I am a senior research manager at Oracle Labs, working on the GraalVM platform. My research is focused on composable, scalable and modular programming language abstractions for large-scale distributed computing, compiler optimizations and optimizing compilers, as well as implementation of frameworks, languages and runtimes for distributed programming.
Previously, I worked at Google on cloud computing infrastructure and big data analytics for Google Maps. Before that, I was working as a research assistant in the School of Computer and Communication Sciences at the EPFL in Switzerland, in the LAMP laboratory on Scala development under the supervision of dr. Martin Odersky, where I received a doctoral degree in 2014.
Publications
PhD Thesis
- Data Structures and Algorithms for Data-Parallel Computing in a Managed Runtime
Aleksandar Prokopec
LAMP, Faculté Informatique et Communications, École Polytechnique Fédérale de Lausanne
Lausanne, Switzerland, July 2014
[PDF] [Link] [General Public Presentation]
Book
- Learning Concurrent Programming in Scala
Aleksandar Prokopec
Packt Publishing
London, UK, November 2014
[Book Website] [Link]
Articles
-
Optimization-Aware Compiler-Level Event Profiling
Matteo Basso, Aleksandar Prokopec, Andrea Rosa, Walter Binder
ACM Transactions on Programming Languages and Systems (TOPLAS), Volume 45, Issue 2
June, 2023
[PDF] [Link] -
GraalVM Compiler Benchmark Results Dataset (Data Artifact)
Lubomír Bulej, Vojtech Horký, Michele Tucci, Petr Tuma, François Farquet, David Leopoldseder, Aleksandar Prokopec
ACM/SPEC International Conference on Performance Engineering (ICPE 2023)
Coimbra, Portugal, April 2023
[PDF] [Link] -
Inlining-Benefit Prediction with Interprocedural Partial Escape Analysis
Matthew Edwin Weingarten, Theodoros Theodoridis, Aleksandar Prokopec
Virtual Machines and Language Implementations 2022 (VMIL 2022)
Auckland, New Zealand, December 2022
[PDF] [Link] -
Implicit state machines
Fengyun Liu, Aleksandar Prokopec
Languages, Compilers, Tools and Theory of Embedded Systems 2022 (LCTES 2022)
San Diego, California, June 2022
[PDF] [Link] -
🥇 Non-Blocking Interpolation Search Trees with Doubly-Logarithmic Running Time
Trevor Brown, Aleksandar Prokopec, Dan Alistarh
Principles and Practice of Parallel Programming 2020 (PPoPP 2020)
San Diego, California, February 2020
🏆 Best Paper Award 🏆
[PDF] [Link] -
Duet Benchmarking: Improving Measurement Accuracy in the Cloud
Lubomír Bulej, Vojtech Horký, Petr Tuma, François Farquet, Aleksandar Prokopec
Proceedings of the ACM/SPEC International Conference on Performance Engineering (ICPE 2020)
Edmonton, Canada, 2020
[PDF] [Link] -
Renaissance: Benchmarking Suite for Parallel Applications on the JVM (Experience Report)
Aleksandar Prokopec, Andrea Rosà, David Leopoldseder, Gilles Duboscq, Petr Tůma, Martin Studener, Lubomir Bulej, Yudi Zheng, Alex Villazón, Doug Simon, Thomas Wuerthinger, Walter Binder
Software Engineering 2020 (SE 2020)
Innsbruck, Austria, 2020
[PDF] [Link] -
Analysis and Evaluation of Non-Blocking Interpolation Search Trees
Aleksandar Prokopec, Trevor Brown, Dan Alistarh
arXiv
Tech Report, 2020
[PDF] [Link] -
Duet Benchmarking: Improving Measurement Accuracy in the Cloud (Extended Version)
Lubomír Bulej, Vojtech Horký, Petr Tuma, François Farquet, Aleksandar Prokopec
arXiv
Tech Report, 2020
[PDF] [Link] -
Renaissance: Benchmarking Suite for Parallel Applications on the JVM
Aleksandar Prokopec, Andrea Rosà, David Leopoldseder, Gilles Duboscq, Petr Tůma, Martin Studener, Lubomir Bulej, Yudi Zheng, Alex Villazón, Doug Simon, Thomas Wuerthinger, Walter Binder
Programming Language Design and Implementation (PLDI 2019)
Phoenix, Arizona, USA, June 2019
[PDF] [Link] -
On Evaluating the Renaissance Benchmarking Suite: Variety, Performance, and Complexity
Aleksandar Prokopec, Andrea Rosà, David Leopoldseder, Gilles Duboscq, Petr Tůma, Martin Studener, Lubomir Bulej, Yudi Zheng, Alex Villazón, Doug Simon, Thomas Wuerthinger, Walter Binder
arXiv
Tech Report, 2019
[PDF] [Link] -
Enhancing Program Execution Using Optimization-Driven Inlining
Aleksandar Prokopec, Thomas Wuerthinger
United States Patent 10261765
April 2019
[PDF] [Link] -
An Optimization-Driven Incremental Inline Substitution Algorithm for Just-In-Time Compilers
Aleksandar Prokopec, Gilles Duboscq, David Leopoldseder, Thomas Wuerthinger
International Symposium on Code Generation and Optimization (CGO 2019)
Washington DC, USA, February 2019
[PDF] [Link] -
Efficient Lock-Free Removing and Compaction for the Cache-Trie Data Structure
Aleksandar Prokopec
24th International European Conference on Parallel and Distributed Computing (Euro-Par 2018)
Turin, Italy, August 2018
[PDF] [Link] -
Theory and Practice of Coroutines with Snapshots
Aleksandar Prokopec, Fengyun Liu
The European Conference on Object-Oriented Programming (ECOOP 2018)
Amsterdam, Netherlands, July 2018
[PDF] [Link] -
On the Soundness of Coroutines with Snapshots
Aleksandar Prokopec, Fengyun Liu
arXiv
Tech Report, 2018
[PDF] [Link] -
🥈 Cache-Tries: Concurrent Lock-Free Hash Tries with Constant-Time Operations
Aleksandar Prokopec
23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPOPP 2018)
Vienna, Austria, February 2018
🏆 Best Paper Finalist 🏆
[PDF] [Link] -
Pluggable Scheduling for the Reactor Programming Model – Extended Version
Aleksandar Prokopec
Programming with Actors: State-of-the-Art and Research Perspectives
August 2018
[PDF] [Link] -
Analysis of Concurrent Lock-Free Hash Tries with Constant-Time Operations
Aleksandar Prokopec
arXiv
Tech Report, 2017
[PDF] [Link] -
Encoding the Building Blocks of Communication
Aleksandar Prokopec
Onward! 2017
Vancouver, Canada, October 2017
[PDF] [Link] -
Making Collection Operations Optimal with Aggressive JIT Compilation
Aleksandar Prokopec, David Leopoldseder, Gilles Duboscq, Thomas Wuerthinger
Scala Symposium 2017, co-located with SPLASH
Vancouver, Canada, October 2017
[PDF] [Link] -
Accelerating by Idling: How Speculative Delays Improve Performance of Message-Oriented Systems
Aleksandar Prokopec
Euro-Par 2017
Santiago de Compostela, Spain, September 2017
[PDF] [Link] -
Pluggable Scheduling for the Reactor Programming Model
Aleksandar Prokopec
AGERE 2016
Amsterdam, Netherlands, October 2016
[PDF] [Link] -
Reactors, Channels, and Event Streams for Composable Distributed Programming
Aleksandar Prokopec, Martin Odersky
Onward! 2015
Pittsburgh, Pennsylvania, October 2015
[PDF] [Link] -
Conc-Trees for Functional and Parallel Programming
Aleksandar Prokopec, Martin Odersky
The 28th International Workshop on Languages and Compilers for Parallel Computing
Raleigh, North Carolina, September 2015
[PDF] [Link] -
SnapQueue: Lock-Free Queue with Constant Time Snapshots
Aleksandar Prokopec
Scala Symposium 2015, co-located with PLDI
Portland, Oregon, June 2015
[PDF] [Link] -
Efficient Lock-Free Work-stealing Iterators for Data-Parallel Collections
Aleksandar Prokopec, Dmitry Petrashko, Martin Odersky
Parallel, Distributed, and Network-Based Processing 2015 (PDP 2015)
Turku, Finland, March 2015
[PDF] [Link] -
Containers and Aggregates, Mutators and Isolates for Reactive Programming
Aleksandar Prokopec, Philipp Haller, Martin Odersky
The 5th Annual Scala Workshop, co-located with ECOOP
Uppsala, Sweden, July 2014
[PDF] [Link] -
Near Optimal Work-Stealing Tree Scheduler for Highly Irregular Data-Parallel Workloads
Aleksandar Prokopec, Martin Odersky
The 26th International Workshop on Languages and Compilers for Parallel Computing (LCPC 2013)
Santa Clara, California, September 2013
[PDF] [Link] -
Composition and Reuse with Compiled Domain-Specific Languages
Arvind K. Sujeeth, Tiark Rompf, Kevin J. Brown, HyoukJoong Lee, Hassan Chafi, Victoria Popic, Michael Wu, Aleksandar Prokopec, Vojin Jovanovic, Martin Odersky, Kunle Olukotun
The European Conference on Object-Oriented Programming (ECOOP 2013)
Montpellier, France, July 2013
[PDF] [Link] -
FlowPools: A Lock-Free Deterministic Concurrent Dataflow Abstraction
Aleksandar Prokopec, Heather Miller, Tobias Schlatter, Philipp Haller, and Martin Odersky
The 25th International Workshop on Languages and Compilers for Parallel Computing (LCPC 2012)
Tokyo, Japan, September 2012
[PDF] [Link] -
Concurrent Tries with Efficient Non-blocking Snapshots
Aleksandar Prokopec, Nathan Bronson, Phil Bagwell, Martin Odersky
17th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPOPP 2012)
New Orleans, Louisiana, February 2012
[PDF] [Link] -
🥇 Lock-Free Resizeable Concurrent Tries
Aleksandar Prokopec, Phil Bagwell, Martin Odersky
The 24th International Workshop on Languages and Compilers for Parallel Computing (LCPC 2011)
Fort Collins, Colorado, September 2011
🏆 Best Paper Presentation Award 🏆
[PDF] [Link] -
A Generic Parallel Collection Framework
Aleksandar Prokopec, Phil Bagwell, Tiark Rompf, Martin Odersky
Euro-Par 2011
Bordeaux, France, September 2011
[PDF] [Link] -
Adaptive Mutation Operator Cycling
Aleksandar Prokopec, Marin Golub
The Second International Conference on the Applications of Digital Information and Web Technologies (ICADIWT 2009)
London, UK, August 2009
[PDF]
Master Thesis
- An Adaptive Genetic Algorithm
Aleksandar Prokopec
Faculty of Electrical Engineering and Computing
Zagreb, Croatia, May 2009
[PDF] (in Croatian)
Service
Program Chairs
Program Committees
- CC 2023
- VMIL 2022
- HLPP 2023
- HLPP 2022
- EuroSys 2020
- MPLR 2020
- HLPP 2020
- AAMAS 2020
- EuroSys 2019 (shadow)
- AAMAS 2019
- PASS 2019
- HLPP 2019
- Scala 2018
- HLPP 2018
- AGERE! 2017
- HLPP 2017
- PLACES 2017
- AGERE! 2016
- ICPADS 2016
- HLPP 2016
- Scala 2014
- Scala 2013
Reviewing
- TOPC 2021
- ISMM 2021
- Journal of Parallel and Distributed Computing 2021
- TOCS 2020
- POPL 2019
- Journal of Computer Languages, COLA 2019
- EuroPar 2018
- Journal of Logical and Algebraic Methods in Programming 2018
- Journal of Logical and Algebraic Methods in Programming 2017
- SPAA 2017
- POPL 2017
- PPL (2016)
- OPODIS 2015
- Transactions on Computers (2015)
- HLPP 2014
- ECOOP 2013
- ScalaDays 2010
- ICADIWT 2009
Projects
This section shortly describes some of the projects I’ve been working on.
Reactors
An event-based framework for distributed programming based on event streams, channels and reactors.
Coroutines
Scala Coroutines is a library-level extension for the Scala programming language that introduces first-class coroutines.
Coroutines are a language abstraction that generalizes subroutines (i.e. procedures, methods or functions). Unlike a subroutine, which is invoked once and executes until it completed, a coroutine can pause execution and yield control back to the caller, or another coroutine. The caller can then resume the coroutine when appropriate.
Mecha
SBT plugin for workflow automation.
ScalaBlitz
A data-parallel programming framework that optimizes collection operations and offers superior performance to that provided by the Scala standard library collections.
ScalaMeter
ScalaMeter is a microbenchmarking and performance regression testing framework for the JVM platform that allows expressing performance tests in a way which is both simple and concise.
It features quick and easy setup for simple microbenchmarks, multiple configurable JVM microbenchmarking methodologies, concise DSL for performance tests and input data generation, automated regression detection and configurable performance test reporting.
Concurrent tries
The concurrent trie, or Ctrie, is a trie-based concurrent non-blocking data structure which supports efficient, scalable insertions, lookups and removals. It is designed to be cache aware and space efficient. The worst-case complexity of all operations is logarithmic with a very low constant factor. It is designed for efficient hash-based element storing and retrieval. Unlike most concurrent hash tables, there is no global resize phase as the data structure grows or shrinks.
The concurrent tries support an efficient linearizable snapshot operation, which allows consistent, linearizable concurrent implementations of methods like size, iterator or removing all the elements.
- Technical report – pseudocode, performance tests and the correctness proof of the operations
- PPoPP paper describes the snapshot operation in more depth
- Source code is also available in this repository and is available for pre-2.10.0 releases of Scala
- Scala 2.10.x standard library introduced a concurrent tries implementation
Scala Parallel Collections
The Scala Parallel Collection framework parallelizes collection operations in a generic way. This framework is easy to use and straightforward to extend to new collections. It implements parallel collections such as parallel arrays, parallel hash maps, parallel hash tries and parallel vectors. It is integrated with the regular Scala Collection framework and allows the user to switch between the parallel and sequential implementation of a collection easily.
- Technical report
- Scala 2.9.x standard library introduced parallel collections
Evolutionary Computing IDE
Algorithms in the domain of evolutionary computing often require a large amount of experiments. Experiments involve tuning a number of parameters to find the optimal set of parameters for a given problem or a given instance of the problem. To ease algorithm development, the Evolutionary Computing IDE provides a graphical user interface which allows tweaking the parameters, testing and visualizing the algorithm, running batch jobs and producing performance graphs.
- Source code
- Binaries – for Windows, Linux, Mac OS X
- Paper – an adaptive genetic algorithm variant developed using this framework
VHDLLab
VHDLLab is an online system used for modelling and simulation of digital circuits, whose main components are the VHDL code editor, automaton-to-circuit synthesizer, a circuit schema editor and a circuit simulator. This system is designed for online use during practical exercises in digital electronics and digital logic courses. It is used on the Bologna studies on the Faculty of Electrotechnics and Computer Science in Zagreb. It is devised to soften the learning curve of students who are being introduced to topics such as digital circuits, modelling and simulation.
- Source code
- Rector Award Writeup (in Croatian) – VHDLLab report that won the University of Zagreb Rector Award
Talks
JIT Optimizations
GraalVM
Coroutines
- Scala World 2016, Penrith, UK, September 2016 [Slides] [Video]
Reactors
- Onward! 2017 [Slides]
- Euro-Par 2017 [Slides]
- Bee-Scala 2016 [Slides]
- ScalaDays Berlin 2016, Berlin, Germany, June 2016 [Slides] [Video]
- VoxxedDays Zurich 2016, Zurich, Switzerland, March 2016 [Slides] [Video]
- Onward! 2015, Pittsburgh, Pennsylvania, USA, October 2015 [Slides]
Thesis Defense
- Thesis Defense, EPFL, Lausanne, Switzerland, September 2014 [Video]
Conc-Trees
SnapQueue
- Scala Symposium 2015, Portland, Oregon, June 2015 [Slides]
Reactive Collections and Game Engine Design
- Scala Workshop 2014, Uppsala, Sweden, July 2014 [SlideShare]
- ScalaDays 2014, Berlin, Germany, June 2014 [SlideShare] [Video]
ScalaBlitz
- Scala eXchange 2013, London, UK, December 2014 [PDF] [Video]
- LCPC 2013, San Jose, California, September 2013 [PPT]
ScalaMeter
- Oracle VM Meetup 2014, Zurich, Switzerland, November 2014 [Speaker Deck]
- Scala eXchange 2012, London, UK, November 2012 [PPT] [Video]
Concurrent Tries
- ScalaDays 2012, London, UK, April 2012 [Video] [Source]
- Croatian IEEE Computer Chapter, Zagreb, Croatia, April 2012
- PPOPP 2012, New Orleans, Louisiana, February 2012 [PPT]
- LCPC 2011, Fort Collins, Colorado, September 2011 [PPT]
Scala Parallel Collections
- Euro-Par 2011, Bordeaux, France, September 2011
- Scala eXchange 2011, London, UK, June 2011 [PPT] [Video] [Source]
- ScalaDays 2011, Palo Alto, California, US, June 2011 [PPT] [Video] [Source]
- ScalaDays 2010, Lausanne, Switzerland, April 2010
Scala
- “Scala – The Learning Curve”, Jazoon 2015, Zurich, Switzerland, October 2015 [HTTP] [PDF]
- “Scala as a Research Tool”, ECOOP 2013, Montpellier, France, July 2013 [HTTP]
- “Introduction to Scala”, Java User Group Grenoble, Grenoble, France, March 2011 [PPT]
Articles and writeups
-
SIP-20: Improved Lazy Val Initialization
Aleksandar Prokopec, Miguel Garcia, Jason Zaugg, Hubert Plociniczak, Viktor Klang, Martin Odersky
Lausanne, Switzerland, May 2013 -
ScalaMeter Introduction
Aleksandar Prokopec
Lausanne, Switzerland, November 2012 -
Parallel Collections Overview
Aleksandar Prokopec, Heather Miller
Lausanne, Switzerland, April 2012 -
SIP-14: Futures and Promises
Philipp Haller, Aleksandar Prokopec, Heather Miller, Viktor Klang, Roland Kuhn, and Vojin Jovanovic
Lausanne, Switzerland, January 2012
Teaching
I worked on the following courses:
- Parallel Programming 2016, lecturer and course organizer at EPFL and Coursera
- Principles of Reactive Programming 2013 - first iteration of the course at Coursera!
- Programming Principles 2013 - also at Coursera
- Programming Principles 2013 (spring) - at Coursera
- Programming Principles 2012 - also at Coursera
- Advanced Programming 2011
- Advanced Programming 2010
Miscellanous
You can find my reading journal here.
I used to use Emacs for a long time, but switched to Vim completely. | |
Neovim is great. | |
Used to use the Sublime text editor. | |
I like to program in Scala. Try it out. | |
I have a gold Scala badge at StackOverflow. | |
I hack code for my Android phone in free time. | |
I like to model in 3ds MAX from time to time as a hobby. | |
My Open Source Report Card on GitHub. |