This thesis has developed several new compiler and run-time techniques for
stream programming. In conclusion, the main contributions are as follows:
- The Abstract Streaming Machine (ASM), a flexible machine
description and coarse-grain simulator for a statically scheduled stream
compiler. The ASM machine model uses a bipartite graph representation to
describe the target system to the compiler. The coarse-grain simulator models
the program’s dynamic behaviour.
-
Paul Carpenter, David Rodenas, Xavier Martorell, Alejandro
Ramirez, and Eduard Ayguadé. A streaming machine description and
programming model. Proc. of the International Symposium on Systems,
Architectures, Modeling and Simulation, Samos, Greece, July 16–19,
2007.1
-
ACOTES. IST ACOTES Project Deliverable D2.2 Report
on Streaming Programming Model and Abstract Streaming Machine Description Final
Version. 2008.
-
Paul M. Carpenter, Alex Ramirez, and
Eduard Ayguade. The Abstract Streaming Machine: Compile-Time Performance
Modelling of Stream Programs on Heterogeneous Multiprocessors. In SAMOS
Workshop 2009, pages 12–13. Best paper award.
-
Paul M. Carpenter, Alex Ramirez, and
Eduard Ayguade. The Abstract Streaming Machine: Compile-Time Performance
Modelling of Stream Programs on Heterogeneous Multiprocessors.
Transactions on HiPEAC, 5(3).
-
Harm Munk et al. ACOTES Project: Advanced Compiler Technologies for
Embedded Streaming. International Journal of Parallel Programming,
39:397–450, 20111.
- A new partitioning heuristic for stream programs, which balances
the load across the target, taking account of the processors and communication
links. A good partitioning algorithm is crucial if the compiler is to produce
efficient code. This algorithm also considers its effect on downstream passes,
specifically software pipelining and buffer allocation, using a convexity
constraint to control pipeline length. It uses a new formulation of
connectivity to model the compiler’s ability to fuse kernels.
-
Paul M. Carpenter, Alex Ramirez, and
Eduard Ayguade. Mapping Stream Programs onto Heterogeneous Multiprocessor
Systems. In CASES ’09: Proceedings of the 2009 International Conference
on Compilers, Architectures, and Synthesis for Embedded Systems, pages 57–66,
2009.
- Two static queue sizing algorithms for stream programs, which
determine the sizes of the buffers used to implement streams. The queue sizing
problem is important when memory is distributed, especially when local stores
are small. The algorithm adjusts the sizes of the buffers, subject to memory
capacities, in order to cover latency and variability in computation costs.
-
Paul M. Carpenter, Alex Ramirez, and
Eduard Ayguade. Buffer Sizing for Self-timed Stream Programs on Heterogeneous
Distributed Memory Multiprocessors. In High Performance Embedded Architectures
and Compilers, 5th International Conference, HiPEAC 2010, pages 96–110.
- Two new low-complexity adaptive dynamic scheduling algorithms
for stream-like programs. The apriority scheduler is specific to
one-dimensional stream programs, and it requires information from the compiler.
The gpriority scheduler does not need such information, and it is more
general.
- StarssCheck, a debugging tool for StarSs. StarssCheck runs the
program under Valgrind, using a special analysis tool, and generates a warning
whenever the program’s behaviour contradicts the StarSs pragma annotations.
Many of the errors found by StarssCheck would otherwise be difficult to
diagnose, since they would cause race conditions or exceptions deep inside the
runtime system.
-
Paul M. Carpenter, Alex Ramirez,
and Eduard Ayguade. Starsscheck: A Tool to Find Errors in Task-Based Parallel
Programs. Euro-Par 2010–Parallel Processing, pages 2–13, 2010.