Gamma(ID:2666/gam005)

Massively parallel language derived from chemical reactions 


for the Gamma formalism

also Gammalog

A high-level parallel language using multiset transformations, deriving from the nature of chemical reactions, as opposed to cellular automata, systolic arrays or neural network, although still derived from CSP

"A distinguishing property of Gamma is the possibility of expressing algorithms in a very abstract way, without any artificial sequentiality"


Related languages
CSP => Gamma   Implementation

References:
  • Banatre, J.P. - Le Metayer, Daniel "A new computational model and its discipline of programming" INRIA research report No 566, Sept. 86. view details
  • Coutant, A "Synthese de programmes dam le formalisme Gamma", D.E.A. Rennes, June 1986. view details
  • Banatre, J.P. - Le Metayer, Daniel "A new approach to systematic program derivation", in Proceedings of the 1987 Workshop on Software Specification and Design (Monterey April 3-4), IEEE pp208-215 view details
  • Banatre, J.P.; Coutant, A.; Le Metayer, Daniel "Parallel machines for multiset transformation and their programming style" Rapport de recherche de l'INRIA- Rennes RR-0759 Novembre 1987 view details Abstract: One of the most challenging problems in the field of computing science today concerns the development of software for more and more powerful parallel machines. In order to tackle this issue we present a new paradigm for parallel processing; this model, called Gamma, is based on the chemical reaction metaphor: the only data structure is the multiset and the computation can be seen as a succession of chemical reactions consuming elements of the multiset and producing new elements according to specific rules. We detail some programming examples showing the power of the model. Furthermore, due to its lack of imperative features, this language can be very naturally implemented in a distributed way. We describe two parallel machines supporting the execution of Gamma-programs. These machines differ essentially in their communication schemes: the first one is synchronous and the second one asynchronous. So we advocate the separation of the design of programs for massively parallel machines into two steps which can be verified in a formal way: the construction of a program with implicit parallelism (P-program) and its translation into a network of processes.
  • Jean-Pierre Banâtre, Daniel Le Métayer "Chemical Reaction as a Computational Model" Proceedings of the 1989 Glasgow Workshop on Functional Programming August 1989 view details
  • Banatre, J.P. - Le Metayer, Daniel "Programming by multiset transformation" Rapport de recherche de l'INRIA - Rennes RR-1205 Avril 1990 view details Abstract: We present a new formalism called Gamma in which programs are described in terms of multiset transformations. A distinguishing property of Gamma is the possibility of expressing algorithms in a very abstract way, without any artificial sequentiality. The expressive power of the formalism is illustrated through a series of examples chosen from a wide range of domains (string processing problems, graph problems, geometric problems...).
  • Banâtre, Jean-Pierre and Le Métayer, Daniel "Introduction to Gamma" pp197-202 view details
          in Banâtre, J.P. and D. Le Métayer, (eds) Research Directions in High-Level Parallel Programming Languages, June 17-19 1991 LNCS 574, Springer Verlag, Berlin 1992 view details
  • Creveuil, Christian "Implementation of Gamma on the Connection Machine" pp219-230 view details
          in Banâtre, J.P. and D. Le Métayer, (eds) Research Directions in High-Level Parallel Programming Languages, June 17-19 1991 LNCS 574, Springer Verlag, Berlin 1992 view details
  • Le Métayer, Daniel "The Chemical Reaction Model" p196 view details
          in Banâtre, J.P. and D. Le Métayer, (eds) Research Directions in High-Level Parallel Programming Languages, June 17-19 1991 LNCS 574, Springer Verlag, Berlin 1992 view details
  • Chris Hankin, Daniel Le Métayer, David Sands "A Calculus of Gamma Programs" Proceedings of the 5th International Workshop on Languages and Compilers for Parallel Computing August 1992 view details
          in Banâtre, J.P. and D. Le Métayer, (eds) Research Directions in High-Level Parallel Programming Languages, June 17-19 1991 LNCS 574, Springer Verlag, Berlin 1992 view details
  • Hankin, C. - Le Metayer, Daniel - Sands, D. "A calculus of Gamma programs" RR-1758 Octobre 1992 view details Abstract: Gamma is a minimal language based on conditional multiset rewriting. The virtues of this paradigm in terms of systematic program construction and design of programs for highly parallel machines have been demonstrated in previous papers. We introduce here sequential and parallel operators for combining Gamma programs and we study their properties. The main focus of the paper is to give conditions under which sequential composition can be transformed into parallel composition and vice versa. Such transformati- ons are especially valuable for adapting Gamma programs for execution on a particular target architecture.
          in Banâtre, J.P. and D. Le Métayer, (eds) Research Directions in High-Level Parallel Programming Languages, June 17-19 1991 LNCS 574, Springer Verlag, Berlin 1992 view details
  • Paolo Ciancarini, Daniela Fogli, Mauro Gaspari. A Logic Coordination Language based on the Chemical Metaphor. Technical Report UBLCS-96-12, Department of Computer Science, Bologna 1996 view details
          in Banâtre, J.P. and D. Le Métayer, (eds) Research Directions in High-Level Parallel Programming Languages, June 17-19 1991 LNCS 574, Springer Verlag, Berlin 1992 view details
  • Skillicorn, David B. and Talia, Domenico "Models and languages for parallel computation" pp123-169 view details
          in [ACM] ACM Computing Surveys (CSUR) 30(2) June 1998 view details
  • Barbosa, Fernanda and Cunha, José C. "A coordination language for collective agent based systems: GroupLog" pp189-195 view details Extract: Extensions to GHC
    GroupLog defines extensions to the Extended Horn Clause
    language (EHC) [29], that are supported at two levels: L1,
    defines agents as program units and L2 defines groups of agents.
    A GroupLog system contains concurrently executing
    agents able to: (1) communicate through interface predicates,
    and (2) join groups to coordinate their activities. In
    the following, we first summarize EHC (see [29]), and then
    describe the two mentioned levels. Extract: GroupLog and other work
    Related Work
    Recently, models have been proposed based on coordination concepts aiming at integrating a number of components together such that the collective set forms a single application that can take advantage of distributed systems.

    Many proposals extend a base logic language for concurrency, communication and non-determinism. The base language may be Horn Clause Logic, Temporal Logic, Linear Logic or Situation Calculus. In the first case, we have Rose, DeltaProlog, MultiProlog. In the second, MetaTem. In the third, COOL and IAM and in the last case ConGolog. Specification of concurrency has also been introduced jointly with an objectoriented model such as in DLP, CSO-Prolog, ShaDE, IAM and COOL.
    The motivation to use EHC as the base language for GroupLog is due to its elegant interpretation of a process interaction and its rigorously defined semantics. The dynamic entities of a program can be modeled by: Processes, as April and MultiProlog; Objects, as ShaDe, Law Governed Linda, IAM, ColaS, Electra and Emerald; Agents, as ConGolog, COOL, MetaTem, Agentspeak, 3APL and Placa; Actors, as Concurrent Aggregates and Synchronizers.

    The interation between dynamic entities can be modeled by: Sending messages, as ShaDe, ConGolog, Concurrent Aggregates, IAM, AgentSpeak, COOL, MetaTem, April, Placa and Electra; Shared tuples, as GammaLog, PollS, Law-Governed Linda, MultiProlog and ESP.

    L1 vs others models
    In L1, we structured the concurrency and communication with the agent notion, but this language does not aim to provide a theory to model the mental state of an agent, as in MetaTem, ConGolog, AgentSpeak, 3APL and Placa. The agent behavior is only dependent on the interface predicates and its configuration, i.e. the entities are reactive and act in accordance with the interaction and its configuration, like in the actor model. This behavior is modeled by EHC clauses, with a very similar interpretation to the rule based one in AgentSpeak and 3APL. In L,, one simple form of communication is allowed: the explicit invocation of interface predicates. The notion of agent in L, integrates the logic aspect with the object-oriented model, as in [11]. In this model it is possible to model blackboardbased systems, which is only allowed in GroupLog in L2.

    L2 vs others models
    The definition of groups in GroupLog was the result of an incremental development process which started with our early experimentation with the ISIS system. Groups allow the modeling of a cooperative entity and the dynamic evolution of a system. A group can be created or destroyed, as its members can join or leave the group at any time. The group members are hidden from the outside environment. Because a group is a meta-agent, it is possible to have a group as a member of another group, so this allows the composition of the group notion, as the context notion defined in [7]. In a group we allow two forms of communication: by invocation of interface predicates or through the shared group state. So, L2 is also an experiment towards unifying distributed-memory (remote predicate call) and shared-memory models (shared data). In some of programming languages, like MetaTem, COOL and Concurrent Aggregates, the group notion is used to restrict the communication to a certain group of agents, which may alleviate some of the inefficiencies that occur in full broadcasting.
    In other languages, like Electra, Emerald, Synchronizers and Colas, the group is seen as a logical unit that manipulates and restricts the invocation of the members group interface. In Syneronisers, the notion of coordination is modeled by a special object (synchroniser) that restricts the invocation of the group of objects using constraints. In most of these programming languages, as in GroupLog, the group is a dynamic entity. But in Synchronizers and Colas it is possible to dynamically change the coordination behavior, which is not possible in GroupLog.

    In GroupLog, as in Electra and Emerald, the members of the group perceive a consistent view of: (1) the other agents who are also part of the group and (2) the shared state.

    The main difference between GroupLog and these languages is the group interface predicates, that may be distinct from the group members individual interface. In languages where the communication is modeled by shared-memory, like ESP and PoliS, the communication structuring is done by allowing multi-tuple spaces. In ease of PoliS there are hierarchical tuple spaces. The L2 level of GroupLog supports the structuring of the tuples space into multiple parts, as each is naturally encapsulated within a specific group such that only its members are allowed to access the group state.
    This is a good approach to address both modularity, information-hiding, and scalability concerns in large-scale real applications.

          in Proceedings of the 2000 ACM Symposium on Applied computing SAC'2000 Villa Olmo, Como, Italy view details
  • Jean-Pierre Banâtre, Pascal Fradet, Daniel Le Métayer "Gamma and the Chemical Reaction Model: Fifteen Years After" August 2000 Proceedings of the Workshop on Multiset Processing: Multiset Processing, Mathematical, Computer Science, and Molecular Computing Points of View view details
          in Proceedings of the 2000 ACM Symposium on Applied computing SAC'2000 Villa Olmo, Como, Italy view details