Results 1 
7 of
7
Supporting Dynamic Data Structures on DistributedMemory Machines
, 1995
"... this article, we describe an execution model for supporting programs that use pointerbased dynamic data structures. This model uses a simple mechanism for migrating a thread of control based on the layout of heapallocated data and introduces parallelism using a technique based on futures and lazy ..."
Abstract

Cited by 154 (8 self)
 Add to MetaCart
this article, we describe an execution model for supporting programs that use pointerbased dynamic data structures. This model uses a simple mechanism for migrating a thread of control based on the layout of heapallocated data and introduces parallelism using a technique based on futures and lazy task creation. We intend to exploit this execution model using compiler analyses and automatic parallelization techniques. We have implemented a prototype system, which we call Olden, that runs on the Intel iPSC/860 and the Thinking Machines CM5. We discuss our implementation and report on experiments with five benchmarks.
Connection Analysis: A Practical Interprocedural Heap Analysis for C
 International Journal of Parallel Programming
, 1995
"... This paper presents a practical heap analysis technique, connection analysis, that can be used to disambiguate heap accesses in C programs. The technique is designed for analyzing programs that allocate many disjoint objects in the heap such as dynamicallyallocated arrays in scientific programs. Th ..."
Abstract

Cited by 74 (6 self)
 Add to MetaCart
(Show Context)
This paper presents a practical heap analysis technique, connection analysis, that can be used to disambiguate heap accesses in C programs. The technique is designed for analyzing programs that allocate many disjoint objects in the heap such as dynamicallyallocated arrays in scientific programs. The method statically estimates connection matrices which encode the connection relationships between all heapdirected pointers at each program point. The results of the analysis can be used by parallelizing compilers to determine when two heapallocated objects are guaranteed to be disjoint, and thus can be used to improve array dependence and interference analysis. The method has been implemented as a contextsensitive interprocedural analysis in the McCAT optimizing/parallelizing C compiler. Experimental results are given to compare the accuracy of connection analysis versus a conservative estimate based on pointsto analysis. This work supported by NSERC, FCAR, and the EPPP project (fin...
Is it a Tree, a DAG, or a Cyclic Graph?
, 1996
"... This paper reports on the design and implementation of a practical shape analysis for C. The purpose of the analysis is to aid in the disambiguation of heapallocated data structures by estimating the shape (Tree, DAG, or Cyclic Graph) of the data structure accessible from each heapdirected pointer ..."
Abstract

Cited by 39 (0 self)
 Add to MetaCart
This paper reports on the design and implementation of a practical shape analysis for C. The purpose of the analysis is to aid in the disambiguation of heapallocated data structures by estimating the shape (Tree, DAG, or Cyclic Graph) of the data structure accessible from each heapdirected pointer. This shape information can be used to improve dependence testing and in parallelization, and to guide the choice of more complex heap analyses. The method has been implemented as a contextsensitive interprocedural analysis in the McCAT compiler. Experimental results and observations are given for 16 benchmark programs. These results show that the analysis gives accurate and useful results for an important group of applications. 1 Introduction and Related Work Pointer analyses are of critical importance for optimizing /parallelizing compilers that support languages like C, C++ and FORTRAN90. The pointer analysis problem can be divided into two distinct subproblems: (i) analyzing pointers t...
Using the Reform Inference System for Parallel Prolog
"... . We show how a new method for parallel logic programming, based on compilation of Tarnlund's inference system Reform, can be applied to the logic programming language Prolog. We retain the sequential lefttoright depthfirst backtracking scheme with one exception: the recursion levels of a re ..."
Abstract
 Add to MetaCart
. We show how a new method for parallel logic programming, based on compilation of Tarnlund's inference system Reform, can be applied to the logic programming language Prolog. We retain the sequential lefttoright depthfirst backtracking scheme with one exception: the recursion levels of a recursive program, including the head unifications at each level, are computed in parallel. We discuss criteria for when a program is amenable to this kind of parallel processing and describe parallel Reform Prolog solutions of some programming problems. 1. INTRODUCTION Previous attempts at developing parallel Prolog systems have focused on exploiting ANDparallelism, or ORparallelism, or both. In this work we parallelize Prolog by exploiting parallelism in its fundamental control structure: recursion. Our basic idea is that parallelization takes place across recursion levels: the recursion levels of a program, including the head unifications at each level, are computed in parallel. The sequenti...
Optimization of PointerIntensive Programs
"... Description of Data Structures). The programmer superimposes "dimensions" on the data structure, and then describes distinctness properties for the fields in terms of traversal of the dimensions. Hendren and Nicolau [1990] describe a method for analyzing recursive data structures called p ..."
Abstract
 Add to MetaCart
Description of Data Structures). The programmer superimposes "dimensions" on the data structure, and then describes distinctness properties for the fields in terms of traversal of the dimensions. Hendren and Nicolau [1990] describe a method for analyzing recursive data structures called path matrix analysis, which keeps track of the access path from one variable to another (e.g., a=b?left?right). Paths are expressed using a subset of regular expression notation, and all pairs of variables are considered by using a matrix. Their method is limited by its inability to represent properties of unnamed objects, and therefore to represent inductive properties. It is difficult to determine exactly how powerful their technique is because they simply give a large program as an example and claim that it is fully analyzed, without providing any details. The basic simplifying assumption seems to be that programmers are not allowed to create irregular data structures. Hendren and Gao [1993] desc...