Non-strict independence-based program parallelization using sharing and freeness information

The current ubiquity of multi-core processors has brought renewed interest in program parallelization. Logic programs allow studying the parallelization of programs with complex, dynamic data structures with (declarative) pointers in a comparatively simple semantic setting. In this context, automatic parallelizers which exploit and-parallelism rely on notions of independence in order to ensure certain efficiency properties. ''Non-strict'' independence is a more relaxed notion than the traditional notion of ''strict'' independence which still ensures the relevant efficiency properties and can allow considerable more parallelism. Non-strict independence cannot be determined solely at run-time (''a priori'') and thus global analysis is a requirement. However, extracting non-strict independence information from available analyses and domains is non-trivial. This paper provides on one hand an extended presentation of our classic techniques for compile-time detection of non-strict independence based on extracting information from (abstract interpretation-based) analyses using the now well understood and popular Sharing+Freeness domain. This includes algorithms for combined compile-time/run-time detection which involve special run-time checks for this type of parallelism. In addition, we propose herein novel annotation (parallelization) algorithms, URLP and CRLP, which are specially suited to non-strict independence. We also propose new ways of using the Sharing+Freeness information to optimize how the run-time environments of goals are kept apart during parallel execution. Finally, we also describe the implementation of these techniques in our parallelizing compiler and recall some early performance results. We provide as well an extended description of our pictorial representation of sharing and freeness information.

[1]  Dean Jacobs,et al.  Static Analysis of Logic Programs for Independent And-Parallelism , 1992, J. Log. Program..

[2]  Manuel V. Hermenegildo Some Methodological Issues in the Design of CIAO, a Generic, Parallel Concurrent Constraint Logic Programming System , 1994, PPCP.

[3]  Francisco Bueno,et al.  More Precise Yet Efficient Type Inference for Logic Programs , 2002, SAS.

[4]  Maurice Bruynooghe,et al.  Abstract Unification for a Composite Domain Deriving Sharing and Freeness Properties of Program Variables , 1994, ICLP Workshop: Verification and Analysis of Logic Languages.

[5]  Laxmikant V. Kalé,et al.  Compiled Execution of the Reduce-OR Process Model on Multiprocessors , 1989, NACLP.

[6]  Roberto Bagnara,et al.  Widening Sharing , 1999, APPIA-GULP-PRODE.

[7]  Francesca Rossi,et al.  Non-Strict Independent And-Parallelism , 1990, ICLP.

[8]  Enrico Pontelli,et al.  &ACE: a high-performance parallel Prolog system , 1995, IPPS.

[9]  Seif Haridi,et al.  Programming Paradigms of the Andorra Kernel Language , 1991, ISLP.

[10]  Harald Søndergaard,et al.  An Application of Abstract Interpretation of Logic Programs: Occur Check Reduction , 1986, ESOP.

[11]  Ehud Shapiro,et al.  Third International Conference on Logic Programming , 1986 .

[12]  M. V. Hermenegildo,et al.  Designing a high performance parallel logic programming system , 1987, CARN.

[13]  Roberto Bagnara,et al.  Soundness, idempotence and commutativity of set-sharing , 2001, Theory and Practice of Logic Programming.

[14]  Mats Carlsson,et al.  SICStus Prolog User''s Manual , 1993 .

[15]  Manuel V. Hermenegildo,et al.  Some methodological issues in the design of CIAO, a generic, parallel concurrent constraint system , 1994 .

[16]  Manuel V. Hermenegildo,et al.  A High-Level Implementation of Non-deterministic, Unrestricted, Independent And-Parallelism , 2008, ICLP.

[17]  Manuel V. Hermenegildo,et al.  Integrated program debugging, verification, and optimization using abstract interpretation (and the Ciao system preprocessor) , 2005, Sci. Comput. Program..

[18]  John S. Conery,et al.  An Abstract Interpretation Scheme for Groundedness, Freeness, and Sharing Analysis of Logic Programs , 1992, FSTTCS.

[19]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[20]  Kish Shen Studies of and/or parallelism in Prolog , 1992 .

[21]  Manuel V. Hermenegildo,et al.  The DCG, UDG, and MEL Methods for Automatic Compile-time Parallelization of Logic Programs for Independent And-parallelism , 1990, ICLP.

[22]  Manuel V. Hermenegildo,et al.  Towards execution time estimation in abstract machine-based languages , 2008, PPDP.

[23]  Manuel V. Hermenegildo,et al.  Compile-Time Derivation of Variable Dependency Using Abstract Interpretation , 1992, J. Log. Program..

[24]  Manuel V. Hermenegildo,et al.  Towards a High-Level Implementation of Execution Primitives for Unrestricted, Independent And-Parallelism , 2008, PADL.

[25]  Manuel V. Hermenegildo,et al.  Effectiveness of Global Analysis in Strict Independence-Based Automatic Parallelization , 1994, ILPS.

[26]  Peter J. Stuckey,et al.  Incremental analysis of constraint logic programs , 2000, TOPL.

[27]  Kish Shen,et al.  Exploiting Dependent And-Parallelism in Prolog: The Dynamic Dependent And-Parallel Scheme (DDAS) , 1992, JICSLP.

[28]  Peter J. Stuckey,et al.  Incremental Analysis of Logic Programs , 1995, ICLP.

[29]  Hisao Tamaki,et al.  Enumeration of Success Patterns in Logic Programs , 1983, Theor. Comput. Sci..

[30]  Allan Gottlieb,et al.  Highly parallel computing , 1989, Benjamin/Cummings Series in computer science and engineering.

[31]  Manuel V. Hermenegildo,et al.  Determination of variable dependence information at compile-time through abstract interpretation , 1989 .

[32]  Agostino Cortesi,et al.  Abstract interpretation of logic programs: an abstract domain for groundness, sharing, freeness and compoundness analysis , 1991, PEPM '91.

[33]  John S. Conery,et al.  The and/or process model for parallel interpretation of logic programs , 1983 .

[34]  Manuel V. Hermenegildo,et al.  Annotation Algorithms for Unrestricted Independent And-Parallelism in Logic Programs , 2008, LOPSTR.

[35]  Manuel V. Hermenegildo,et al.  Effectivness of abstract interpretation in automatic parallelization: a case study in logic programming , 1999, TOPL.

[36]  Manuel V. Hermenegildo,et al.  Extracting Non-Strict Independent And-Parallelism Using Sharing and Freeness Information , 1994, SAS.

[37]  Gilberto Filé,et al.  On the Design of a Correct Freeness Analysis for Logic Programs , 1995, J. Log. Program..

[38]  Mats Carlsson,et al.  Parallel execution of prolog programs: a survey , 2001, TOPL.

[39]  Manuel V. Hermenegildo,et al.  Combined Determination of Sharing and Freeness of Program Variables through Abstract Interpretation , 1991, ICLP.

[40]  Enrico Pontelli,et al.  Improving the Efficiency of Nondeterministic Independent and-Parallel Systems , 1996, Comput. Lang..

[41]  Saumya K. Debray,et al.  Task granularity analysis in logic programs , 1990, PLDI '90.

[42]  Francesca Rossi,et al.  On the Correctness and Efficiency of Independent And-Parallelism in Logic Programs , 1989, NACLP.

[43]  Saumya K. Debray,et al.  Estimating the Computational Cost of Logic Programs , 1994, SAS.

[44]  Roberto Bagnara,et al.  A correct, precise and efficient integration of set-sharing, freeness and linearity for the analysis of finite and rational tree languages , 2004, Theory and Practice of Logic Programming.

[45]  Gopal Gupta,et al.  And-Or Parallelism on Shared-Memory Multiprocessors , 1993, J. Log. Program..

[46]  Saumya K. Debray,et al.  A Methodology for Granularity-Based Control of Parallelism in Logic Programs , 1996, J. Symb. Comput..

[47]  Giorgio Levi,et al.  Non pair-sharing and freeness analysis through linear refinement , 1999 .

[48]  Seif Haridi,et al.  Kernel Andorra Prolog and its Computation Model , 1990, ICLP.

[49]  Manuel V. Hermenegildo,et al.  The &-Prolog system: Exploiting independent and-parallelism , 1991, New Generation Computing.

[50]  Francesca Rossi,et al.  Strict and Nonstrict Independent And-Parallelism in Logic Programs: Correctness, Efficiency, and Compile-Time Conditions , 1995, J. Log. Program..

[51]  Jorge A. Navas,et al.  Efficient Top-Down Set-Sharing Analysis Using Cliques , 2006, PADL.

[52]  Kim Marriott,et al.  Independence in CLP languages , 2000, TOPL.

[53]  Gerda Janssens,et al.  An Instance of Abstract Interpretation Integrating Type and Mode Inferencing , 1988, ICLP/SLP.

[54]  Alan H. Karp,et al.  A comparison of 12 parallel FORTRAN dialects , 1988, IEEE Software.

[55]  John P. Gallagher,et al.  Abstract Domains Based on Regular Types , 2004, ICLP.

[56]  Xuan Li,et al.  Lazy Set-Sharing Analysis , 2006, FLOPS.

[57]  Manuel V. Hermenegildo Parallelizing irregular and pointer-based computations automatically: Perspectives from logic and constraint programming , 2000, Parallel Comput..

[58]  Manuel V. Hermenegildo,et al.  Automatic Compile-Time Parallelization of Logic Programs for Restricted, Goal Level, Independent and Parallelism , 1999, J. Log. Program..

[59]  Manuel V. Hermenegildo,et al.  An Abstract Machine for Restricted AND-Parallel Execution of Logic Programs , 1986, ICLP.

[60]  Pascal Van Hentenryck,et al.  Combinations of abstract domains for logic programming , 1994, POPL '94.

[61]  Andy King,et al.  Depth-k Sharing and Freeness , 1994, ICLP.

[62]  Doug DeGroot,et al.  Restricted AND-Parallelism , 1984, FGCS.

[63]  Dean Jacobs,et al.  Accurate and Efficient Approximation of Variable Aliasing in Logic Programs , 1989, NACLP.