Title:
|
Compile-time analysis of array sections for parallelization and parallel program verification
|
Developing efficient and correct applications that make effective use of parallel computers is a complex and difficult task. Sophisticated compilation techniques have been developed to support application development. A number of analyses and transformation techniques incorporated into such compilers utilise convex polyhedral shape descriptors to represent array accesses. Elementary convex polyhedra are inadequate to represent array access sets precisely and consequently can impede the effectiveness of many analyses. To overcome the deficiencies of existing techniques, a model of analysis in which array accesses are represented by sets of polyhedra instead of a single polyhedron is proposed. The complementary sections representations is proposed for array section analysis in this extended model. A unique property of this representation is that the feasibility test, under certain conditions, terminates quickly. The precision offered by complementary sections is evaluated in the context of parallelization as well as parallel program verification. The design of a parallel usage checking module, based on convex polyhedral descriptors, for verifying variable sharing in the occam programming language is presented. This design improves the effectiveness of existing usage checking implementations. We demonstrate that further enhancements to this design can be achieved using complementary section representation. From a programming point of view, these enhancements provide a greater degree of flexibility to exploit language features. A number of advanced optimization techniques exist in the context of automatic parallelization which are based on convex polyhedral representations. The complementary section representation is shown to enhance the effectiveness of these optimization techniques.
|