PPMC Parallel Programming Models and Compilers

Recent contributions

Our group has recently contributed in the following areas:

Previous experience of the research team

For 10 years running, our research group has been working on heterogeneous schedulers based on Intel’s TBB library, now called oneTBB, an open source and public domain tool that represents the current state-of-the-art in pattern-based generic parallel programming in C++. Specifically, in these years we have explored several research lines that we summarize below:

Although it may seems that the research lines of our group have branched out in recent times, the TBB parallel library has been the backbone of our most recent contributions. This library is now integrated into the Intel oneAPI framework and offers a set of high-level methods and templates that focus on exploiting parallelism at the task level. TBB, or oneTBB since it was integrated into oneAPI, presents a fundamental feature that makes it suitable for implementing irregular and heterogeneous applications: the basic scheduler implements a dynamic load balancing strategy (tasks, in this case) based on the work stealing algorithm. Another advantage of oneTBB is that the source code is available and therefore we can modify and adapt it to our needs. Moreover, being a C++ library, it requires only a C++ compiler. This feature has been crucial when porting our oneTBB-based schedulers to different heterogeneous platforms, from Intel (Ivy Bridge, Broadwell, Kaby Lake, HARP), AMD (Kavery), Samsung (Exynos 5 Octa), Altera (Cyclone V) and Xilinx (Zynq 7002, Ultrascale+ MPSoC) processors.

Finally, oneTBB, and by extension oneAPI, is a multi-resolution programming model, in the sense that you can use high-level templates (parallel_for, parallel_sort, pipeline, Flow Graph, etc.) if they meet your needs, but you can also port an algorithm directly using low-level tasks. Or even build a new high-level template. All this, and especially the Flow Graph template, makes oneTBB a flexible, adaptable and appropriate library to solve the time series problems we are currently tackling in heterogeneous architectures with CPUs, GPUs, FPGAs and NCEs.

Previous collaborations