Abstract. Dependence information between program values is extensively used in many program optimization techniques. The ability to identify statements, calls and loop iterations that do not depend on each other enables many transformations which increase the instruction and thread-level parallelism in a program. When program variables contain complex data structures including arrays, records, and recursive data structures, the ability to precisely model data dependence based on heap structure remains a challenging problem. This paper presents a technique for precisely tracking heap based data dependence in non-trivial Java programs via static analysis. Using an abstract interpretation framework, the approach extends a shape analysis technique based on an existing graph model of heaps, by integrating read/write history information and intelligent memoization. The method has been implemented and its effectiveness and utility are demonstrated by computing detailed dependence information for two benchmarks (Em3d and BH from the JOlden suite) and using this information to parallelize the benchmarks.
Maron et al. REF use specialized predicates to model sharing patterns between objects stored in data structures, and use this information to statically parallelize benchmarks from the JOlden suite and SPECjvm98 benchmarks.
Identification of HeapCarried Data Dependence Via Explicit Store Heap Models
In 21st Int’l. WS on Languages and Compilers for Parallel Computing (LCPC’08), LNCS
Computer Science