Detection of parallel steps in programs with arrays
R. Nuriyev

TL;DR
This paper addresses the detection of independent steps in array-based programs to facilitate parallelization, introducing a loop form that simplifies independence analysis and proposing a modification to enable parallel execution.
Contribution
It introduces a new loop form for array programs, proves its invariance, and modifies index semantics to make independence detection feasible for parallelization.
Findings
Any loop can be represented in the proposed form.
Independence detection is algorithmically unsolvable for complex index expressions.
Modified index semantics enable parallel execution of loop iterations.
Abstract
The problem of detecting of information and logically independent (DILD) steps in programs is a key for equivalent program transformations. Here we are considering the problem of independence of loop iterations, the concentration of massive data processing and hence the most challenge construction for parallelizing. We introduced a separated form of loops when loop's body is a sequence of procedures each of them are used array's elements selected in a previous procedure. We prove that any loop may be algorithmically represented in this form and number of such procedures is invariant. We show that for this form of loop the steps connections are determined with some integer equations and hence the independence problem is algorithmically unsolvable if index expressions are more complex than cubical. We suggest a modification of index semantics that made connection equations trivial and…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Logic, programming, and type systems · Numerical Methods and Algorithms
