Msr3e: Distributed Logic Programming For Decentralized Ensembles

In recent years, we have seen many advances in distributed systems, in the form of cloud computing and distributed embedded mobile devices, drawing more research interest into better ways to harness and coordinate the combined power of distributed computation. While this has made distributed computing resources more readily accessible to main-stream audiences, the fact remains that implementing distributed software and applications that can exploit such resources via traditional distributed programming methodologies is an extremely difficult task. As such, finding effective means of programming distributed systems is more than ever an active and fruitful research and development endeavor. Our work here centres on the development of a programming language known as MSR3e, designed for implementing highly orchestrated communication behaviors of an ensemble of computing nodes. Computing nodes are either traditional main-stream computer architectures or mobile computing devices. This programming language is based on logic programming, and is declarative and concurrent. It is declarative in that it allows the programmer to express the logic of synchronization between computing nodes without describing any form of control flow. It is concurrent in that its operational semantics is based on a concurrent programming model known as multiset rewriting. The result is a highly expressive distributed programming language that provides a programmer with a high-level abstraction to implement highly complex communication behavior between computing nodes. This allows the programmer to focus on specifying what processes need to synchronize between the computing nodes, rather than how to implement the synchronization routines. MSR3e is based on a traditional multiset rewriting model with two important extensions: (1) Explicit localization of predicates, allowing the programmer to explicitly reference the locations of predicates as a first-class construct of the language (2) Comprehension patterns, providing the programmer a concise mean of writing synchronization patterns that matches dynamically sized sets of data. This method of programming often result to more concise codes (relative to main-stream programming methodologies) that are more human readable and easier to debug. Its close foundation to logic programming also suggests the possibilities of effective automated verification of MSR3e programs. We have currently implemented a prototype of MSR3e. This prototype is a trans-compiler that compiles a MSR3e program into two possible outputs: (1) a C++ program that utilizes the MPI libraries, intended for execution on traditional main-stream computer architectures (e.g., ×86, etc..) or (2) a Java program that utilizes WiFi direct libraries of the android SDK, intended for execution on android mobile devices. We have conducted preliminary experimentations on a small set of examples, to show that MSR3e works in practice. In future, we intend to refine our implementation of MSR3e, scaling up the experiment suites, as well as developing more non-trivial applications in MSR3e, as further proof of concept.