Analysis of May-Happen-in-Parallel in Concurrent Objects

Esta tesis presenta un analisis may-happen-in-parallel (puede-ocurrir-en-paralelo) para lenguajes orientados a objetos y basados en objetos concurrentes. En este modelo de concurrencia, los objetos son la unidad de concurrencia tal que, cuando un metodo de un objeto o2 es llamado desde una tarea que se ejecuta en un objeto o1, las instrucciones de la tarea concurrente en o1 pueden ejecutarse en paralelo con las de la llamada (asincrona) en o2, y con los metodos llamados de forma transitiva. El objetivo del analisis MHP es identificar los pares de instrucciones que puede ejecutarse en paralelo en un programa para cualquier ejecucion del mismo. Nuestro analisis esta definido como un analisis a nivel de metodo (local) cuya informacion se puede componer de forma modular para obtener la informacion al nivel de la aplicacion (global). Se ha demostrado la correccion del analisis, es decir, que sobre-aproxima el paralelismo real de los programas de acuerdo con una semantica bien definida. Se ha implementado un prototipo, dando lugar al sistema MayPar, un analizador may-happen-in-parallel que se puede ser util para depuracion, correccion de errores y para incrementar la precision de otros analisis que infieran propiedades mas complejas (por ejemplo, terminacion o analisis de recursos). MayPar se ha probado con multiples ejemplos, entre ellos dos casos de estudio industriales, y se han alcanzado buenas cotas de precision y rendimiento. [Abstract] This thesis presents a may-happen-in-parallel (MHP) analysis for object-oriented languages based on concurrent objects. In this concurrency model, objects are the concurrency units such that, when a method is invoked on an object o2 from a task executing on object o1, the statements of the current task in o1 may run in parallel with those of the (asynchronous) call on o2, and with those of transitively invoked methods. The goal of the MHP analysis is to identify pairs of statements in the program that may run in parallel in any execution. Our MHP analysis is formalized as a method-level (local) analysis whose information can be modularly composed to obtain application-level (global) information. The analysis has been proven to be sound, that is, it over-approximates the real parallelism according to a well defined semantics. A prototype implementation has been carried out, resulting in the MayPar system, a may-happen-in-parallel analyzer that can be used for debugging and to increase precision of other analyses which infer more complex properties (e.g., termination and resource consumption). MayPar has been tested on several examples, including two industrial cases studies, achieving good precision and performance.

[1]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[2]  Lin Li,et al.  A Practical MHP Information Analysis for Concurrent Java Programs , 2004, LCPC.

[3]  Elvira Albert,et al.  Cost Analysis of Concurrent OO Programs , 2011, APLAS.

[4]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[5]  George S. Avrunin,et al.  An efficient algorithm for computing MHP information for concurrent Java programs , 1999, ESEC/FSE-7.

[6]  Alan Mycroft,et al.  Kilim: Isolation-Typed Actors for Java , 2008, ECOOP.

[7]  George S. Avrunin,et al.  A conservative data flow algorithm for detecting all pairs of statements that may happen in parallel , 1998, SIGSOFT '98/FSE-6.

[8]  Rajkishore Barik,et al.  Efficient Computation of May-Happen-in-Parallel Information for Concurrent Java Programs , 2005, LCPC.

[9]  Elvira Albert,et al.  MayPar: a may-happen-in-parallel analyzer for concurrent objects , 2012, SIGSOFT FSE.

[10]  Jens Palsberg,et al.  Featherweight X10: a core calculus for async-finish parallelism , 2010, PPoPP '10.

[11]  Vivek Sarkar,et al.  May-happen-in-parallel analysis of X10 programs , 2007, PPoPP.

[12]  Barbara G. Ryder,et al.  Parameterized object sensitivity for points-to and side-effect analyses for Java , 2002, ISSTA '02.

[13]  Frank S. de Boer,et al.  A Complete Guide to the Future , 2007, ESOP.

[14]  Martin Odersky,et al.  Scala Actors: Unifying thread-based and event-based programming , 2009, Theor. Comput. Sci..

[15]  Monica S. Lam,et al.  Cloning-based context-sensitive pointer alias analysis using binary decision diagrams , 2004, PLDI '04.

[16]  Reiner Hähnle,et al.  ABS: A Core Language for Abstract Behavioral Specification , 2010, FMCO.

[17]  Elvira Albert,et al.  COSTABS: a cost and termination analyzer for ABS , 2012, PEPM '12.