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
Made with Slides.com