L10 is a platform for experimenting with the design of distributed and parallel logic programming. The "logic" in traditional logic programming is a minimal first-order logic, but the logic underlying L10 is a richer logic in which every fact or deduction has an intrinsic notion of location. A logic with locations is significant because it gives a logical justification for the use of (locally) stratified negation. In L10, we are also interested in exploring the use of location to express parallelism in a logic programming language by flexibly mapping locations in L10 to places in X10, a parallel programming language being developed by IBM Research.
Project Goals: This research project will explore technologies required for translating Ruby, a scripting language well known for its high productivity, to X10, a parallel programming language. Especially, we will study the following two topics: (1) a method to translate a Ruby script to an X10 program, and (2) extending X10 with Ruby's high-level features. The goal of this research is to develop a highly consumable parallel language for the Multicore era.
Design and Implementation of a DSL based on Ruby for Parallel Programming. by Tetsu Soh.
Master Thesis, Graduate School of Information Science and Technology, The University of Tokyo, January 2011.
Finding a high productivity and high efficient(HPHP) parallel programming language is a key to achieve popular parallel programming and it has been an active field of research for over 3 decades.
To achieve HPHP parallel programming language, we proposed to design a DSL based on Ruby, which is a popular sequential langauge among mainstream developers for its high productivity, and then translate the DSL to X10 language, which is a high performance parallel language, to perform parallel execution. Our proposed DSL can express concurrent and distributed programming with syntax that is consistent with Ruby. The DSL code is converted to X10 program by our code translator and is executed in parallel with some runtime libraries developed by us. The code translator and runtime libraries that we developed implement most of Ruby’s features and bridge the large gap between the Ruby and X10 language. Therefore, the DSL can keep the productivity of Ruby and achieve high performance. We employ HPC and Ruby benchmarks to evaluate the productivity and scalability of the DSL. The results show that our DSL has better or equal productivity than the X10 language and similar scalability to the X10 language.