PQL: A Purely-Declarative Java Extension for Parallel Programming

  • Christoph Reichenbach
  • Yannis Smaragdakis
  • Neil Immerman
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7313)

Abstract

The popularization of parallelism is arguably the most fundamental computing challenge for years to come. We present an approach where parallel programming takes place in a restricted (sub-Turing-complete), logic-based declarative language, embedded in Java. Our logic-based language, PQL, can express the parallel elements of a computing task, while regular Java code captures sequential elements. This approach offers a key property: the purely declarative nature of our language allows for aggressive optimization, in much the same way that relational queries are optimized by a database engine. At the same time, declarative queries can operate on plain Java data, extending patterns such as map-reduce to arbitrary levels of nesting and composition complexity.

We have implemented PQL as extension to a Java compiler and showcase its expressiveness as well as its scalability compared to competitive techniques for similar tasks (Java + relational queries, in-memory Hadoop, etc.).

Keywords

Parallel Programming Query Language Runtime System Java Code Relational Query 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Allen, E., Chase, D., Hallett, J., Luchangco, V., Maessen, J.-W., Ryu, S., Steele, G., Tobin-Hochstadt, S.: The Fortress Language Specification. Technical report, Sun Microsystems (2008)Google Scholar
  2. 2.
    Armstrong, J.: A history of Erlang. In: HOPL III: Proceedings of the third ACM SIGPLAN Conference on History of Programming Languages (2007)Google Scholar
  3. 3.
    Catanzaro, B., Fox, A., Keutzer, K., Patterson, D., Su, B.-Y., Snir, M., Olukotun, K., Hanrahan, P., Chafi, H.: Ubiquitous parallel computing from Berkeley, Illinois, and Stanford. IEEE Micro 30(2), 41–55 (2010)CrossRefGoogle Scholar
  4. 4.
    Chambers, C., Raniwala, A., Perry, F., Adams, S., Henry, R.R., Bradshaw, R., Weizenbaum, N.: FlumeJava: easy, efficient data-parallel pipelines. In: Programming Language Design and Implementation, PLDI (2010)Google Scholar
  5. 5.
    Charles, P., Grothoff, C., Saraswat, V., Donawa, C., Kielstra, A., Ebcioglu, K., von Praun, C., Sarkar, V.: X10: an object-oriented approach to non-uniform cluster computing. In: Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA (2005)Google Scholar
  6. 6.
    Dean, J., Ghemawat, S.: MapReduce: simplified data processing on large clusters. In: Operating Systems Design & Implementation (OSDI) (2004)Google Scholar
  7. 7.
    Dean, J., Ghemawat, S.: MapReduce: simplified data processing on large clusters. Commun. ACM 51(1), 107–113 (2008)CrossRefGoogle Scholar
  8. 8.
    Duffy, J.: A query language for data parallel programming: invited talk. In: Declarative Aspects of Multicore Programming Workshop, DAMP (2007)Google Scholar
  9. 9.
    Duffy, J., Essey, E.: Parallel LINQ: Running queries on multi-core processors. MSDN Magazine (2007)Google Scholar
  10. 10.
    Gordon, M.I., Thies, W., Amarasinghe, S.: Exploiting coarse-grained task, data, and pipeline parallelism in stream programs. In: ASPLOS-XII: Architectural Support for Programming Languages and Operating Systems (2006)Google Scholar
  11. 11.
    Immerman, N.: Descriptive Complexity. Springer (1998)Google Scholar
  12. 12.
    Leijen, D., Schulte, W., Burckhardt, S.: The design of a task parallel library. In: Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA (2009)Google Scholar
  13. 13.
    Reichenbach, C., Immerman, N., Smaragdakis, Y., Aftandilian, E.E., Guyer, S.Z.: What can the GC compute efficiently? A language for heap assertions at GC time. In: Object Oriented Programming Systems, Languages, and Applications, OOPSLA (2010)Google Scholar
  14. 14.
    Selinger, P.G., Astrahan, M.M., Chamberlin, D.D., Lorie, R.A., Price, T.G.: Access path selection in a relational database management system. In: ACM SIGMOD Int. Conf. on Management of Data, pp. 23–34 (1979)Google Scholar
  15. 15.
    Snyder, L.: The design and development of ZPL. In: HOPL III: Proceedings of the third ACM SIGPLAN Conference on History of Programming Languages (2007)Google Scholar
  16. 16.
    Willis, D., Pearce, D.J., Noble, J.: Efficient Object Querying for Java. In: Hu, Q. (ed.) ECOOP 2006. LNCS, vol. 4067, pp. 28–49. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  17. 17.
    Yang, H.-C., Dasdan, A., Hsiao, R.-L., Parker, D.S.: Map-reduce-merge: simplified relational data processing on large clusters. In: ACM SIGMOD Int. Conf. on Management of Data (2007)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Christoph Reichenbach
    • 1
  • Yannis Smaragdakis
    • 1
    • 2
  • Neil Immerman
    • 1
  1. 1.University of MassachusettsAmherstUSA
  2. 2.University of AthensGreece

Personalised recommendations