Techniques for Efficient Placement of Synchronization Primitives
Alexandru Nicolau, Guangqiang Li, Arun Kejariwal
Gokulan R
CS15B033
30 April 2020
Summary of the paper
- No-DOALL Loop: Loops which have loop-carried dependencies
- Goal: Efficient placement of synchronization primitives to boost TLP
- Novelty: The synchronization problem could not be solved using other techniques like privatisation of variables, OpenMP-reduction, etc.
- As long as synchronization primitives are present correctly in the source program, the optimizer transforms the code to improve performance.
Transformations
- Move-Op-{Up/Down}: Move an assignment statement
- Move-Test: Move conditional statement
- Unify-{Up/Down}: Eliminate redundant copies of nodes, created during Move-Op-* and Move-Test transforms
- Delete: Delete empty node
Future Work
- Analysis of pipeline buffers on performance: Paper claims that bubbles in pipeline affects performance. Analysis on how much stalls happen because of bubbles, how much performance degradation baseline suffers can be studied
- Movement of statements with atomic guarantees
- The current transformations are applicable for 2-thread case. The same can be extended for many threads.
- OpenMP can be extended to implement this transformation.
2
efficient_sync_primitives
By Gokulan Ravi
efficient_sync_primitives
- 123