DeepAI AI Chat
Log In Sign Up

Sparse Matrix Code Dependence Analysis Simplification at Compile Time

07/27/2018
by   Mahdi Soltan Mohammadi, et al.
THE UNIVERSITY OF UTAH
UNIVERSITY OF TORONTO
The University of Arizona
Inria
Intel
0

Analyzing array-based computations to determine data dependences is useful for many applications including automatic parallelization, race detection, computation and communication overlap, verification, and shape analysis. For sparse matrix codes, array data dependence analysis is made more difficult by the use of index arrays that make it possible to store only the nonzero entries of the matrix (e.g., in A[B[i]], B is an index array). Here, dependence analysis is often stymied by such indirect array accesses due to the values of the index array not being available at compile time. Consequently, many dependences cannot be proven unsatisfiable or determined until runtime. Nonetheless, index arrays in sparse matrix codes often have properties such as monotonicity of index array elements that can be exploited to reduce the amount of runtime analysis needed. In this paper, we contribute a formulation of array data dependence analysis that includes encoding index array properties as universally quantified constraints. This makes it possible to leverage existing SMT solvers to determine whether such dependences are unsatisfiable and significantly reduces the number of dependences that require runtime analysis in a set of eight sparse matrix kernels. Another contribution is an algorithm for simplifying the remaining satisfiable data dependences by discovering equalities and/or subset relationships. These simplifications are essential to make a runtime-inspection-based approach feasible.

READ FULL TEXT

page 1

page 2

page 3

page 4

03/19/2023

Sparse Partial-Tracing

Matrices and more generally multidimensional arrays, form the backbone o...
11/13/2019

Compile-time Parallelization of Subscripted Subscript Patterns

An increasing number of scientific applications are making use of irregu...
06/27/2019

Array Codes with Local Properties

In general, array codes consist of m× n arrays and in many cases, the ar...
08/20/2022

Study of Novel Sparse Array Design Based on the Maximum Inter-Element Spacing Criterion

A novel sparse array (SA) structure is proposed based on the maximum int...
08/10/2022

A New Low-Redundancy Restricted Array with Reduced Mutual Coupling

In array signal processing, a fundamental problem is to design a sensor ...
10/05/2021

RASA: Efficient Register-Aware Systolic Array Matrix Engine for CPU

As AI-based applications become pervasive, CPU vendors are starting to i...
09/28/2021

Demystifying Algorithmic Complexities and Geometric Review of the 'h'-Index

The current discourse delves into the effectiveness of h-index as an aut...