Compiler techniques for data synchronization in nested parallel loops

  • Authors:
  • Peiyi Tang;Pen-Chung Yew;Chuan-Qi Zhu

  • Affiliations:
  • Department of Computer Science, The Australian National University, Canberra, ACT 2601, Australia;Center for Supercomputing, Research and Development, University of Illinois at U-C, Urbana, IL;Computer Center, Fudan University, Shanghai, China

  • Venue:
  • ICS '90 Proceedings of the 4th international conference on Supercomputing
  • Year:
  • 1990

Quantified Score

Hi-index 0.00

Visualization

Abstract

The major source of parallelism in ordinary programs is do loops. When loop iterations of parallelized loops are executed on multiprocessors, the cross-iteration data dependencies need to be enforced by synchronization between processors. Existing data synchronization schemes are either too simple to handle general nested loop structures with non-trivia array subscript functions or inefficient due to the large run-time overhead.In this paper, we propose a new synchronization scheme based on two data-oriented synchronization instructions: synch_read(x,s) and synch_write(x,s). We present the algorithm to compute the ordering number, s, for each data access. Using our scheme, a parallelizing compiler can parallelize a general nested loop structure with complicated cross-iteration data dependencies. If the computations of ordering numbers cannot be done at compile time, the run-time overhead is smaller than the other existing run-time schemes.