Palovca: Describing and Executing Graph Algorithms in Haskell

  • Michael Lesniak
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7149)


Graph algorithms have fundamental applications in the real world but can be both cumbersome to implement in traditional languages and difficult to execute efficiently on modern multicore hardware. The Bulk Synchronous Parallel model of computation has recently been used to define vertex-centric computations on graphs. We describe an em- bedded domain specific language (using Haskell as the underlying host language) for specifying such algorithms, and show an implementation of an execution platform that allows to execute them on multicore systems in parallel. For several benchmarks varying in algorithm, graph size and edge distribution, we achieved speedups ranging from 9 up to 11 for 16 threads.


Graph Algorithm Hardware Description Language Garbage Collector Pagerank Algorithm Bulk Synchronous Parallel 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Grama, A., Karypis, G., Kumar, V., Gupta, A.: Introduction to Parallel Computing, 2nd edn. Addison Wesley (January 2003)Google Scholar
  2. 2.
    Valiant, L.G.: A bridging model for parallel computation. Commun. ACM 33(8), 103–111 (1990)CrossRefGoogle Scholar
  3. 3.
    Valiant, L.G.: A bridging model for multi-core computing. Journal of Computer and System Sciences 77(1), 154–166 (2008)MathSciNetCrossRefzbMATHGoogle Scholar
  4. 4.
    Malewicz, G., Austern, M.H., Bik, A.J.C., Dehnert, J.C., Horn, I., Leiser, N., Czajkowski, G.: Pregel: a system for large-scale graph processing. In: Proceedings of the 2010 International Conference on Management of Data, SIGMOD 2010, pp. 135–146. ACM, New York (2010)Google Scholar
  5. 5.
    Thomas, D.E., Moorby, P.R.: The Verilog hardware description language, 4th edn. Kluwer Academic Publishers, Norwell (1998)CrossRefzbMATHGoogle Scholar
  6. 6.
    Codd, E.F.: The relational model for database management: version 2. Addison-Wesley Longman Publishing Co., Inc., Boston (1990)zbMATHGoogle Scholar
  7. 7.
    Hudak, P.: Modular domain specific languages and tools. In: Proceedings of Fifth International Conference on Software Reuse, pp. 134–142. IEEE Computer Society Press (1998)Google Scholar
  8. 8.
    Alves, N.M.M., de Mello Schneider, S.: Implementation of an embedded hardware description language using haskell. Journal of Universal Computer Science 9(8), 795–812 (2003)Google Scholar
  9. 9.
    Elliott, C.: Programming graphics processors functionally. In: Proceedings of the 2004 Haskell Workshop. ACM Press (2004)Google Scholar
  10. 10.
    Elliott, C.: Tangible functional programming. In: International Conference on Functional Programming (2007)Google Scholar
  11. 11.
    Jones, S.P., Eber, J.M., Seward, J.: Composing contracts: an adventure in financial engineering (functional pearl). In: Proceedings of the Fifth ACM SIGPLAN International Conference on Functional Programming, ICFP 2000, pp. 280–292. ACM, New York (2000)CrossRefGoogle Scholar
  12. 12.
    GitHub: Repository with source code,
  13. 13.
    Brin, S., Page, L.: The anatomy of a large-scale hypertextual web search engine. In: Seventh International World-Wide Web Conference, WWW 1998 (1998)Google Scholar
  14. 14.
    Bonorden, O., Juurlink, B.H., von Otte, I., Rieping, I.: The paderborn university bsp (pub) library. Parallel Computing 29(2), 187–207 (2003)CrossRefGoogle Scholar
  15. 15.
    Goudreau, M.W., Lang, K., Rao, S.B., Suel, T., Tsantilas, T.: Portable and efficient parallel computing using the bsp model. IEEE Trans. Comput. 48 (July 1999)Google Scholar
  16. 16.
    Pointon, R.F., Trinder, P.W., Loidl, H.-W.: The Design and Implementation of Glasgow Distributed Haskell. In: Mohnen, M., Koopman, P. (eds.) IFL 2000. LNCS, vol. 2011, pp. 53–70. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  17. 17.
    Brown, N.C.C.: Communicating haskell processes: Composable explicit concurrency using monads. In: Welch, P.H., Stepney, S., Polack, F., Barnes, F.R.M., McEwan, A.A., Stiles, G.S., Broenink, J.F., Sampson, A.T. (eds.) CPA. Concurrent Systems Engineering Series, vol. 66, pp. 67–83. IOS Press (2008)Google Scholar
  18. 18.
    Jones, S.L.P., Leshchinskiy, R., Keller, G., Chakravarty, M.M.T.: Harnessing the multicores: Nested data parallelism in haskell. In: Hariharan, R., Mukund, M., Vinay, V. (eds.) FSTTCS. LIPIcs, vol. 2, pp. 383–414. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik (2008)Google Scholar
  19. 19.
    Stewart, A., Clint, M., Gabarró, J.: Barrier synchronisation: Axiomatisation and relaxation. Formal Aspects of Computing 16, 36–50 (2004)CrossRefzbMATHGoogle Scholar
  20. 20.
    Hoare, C.A.R.: Communicating sequential processes (1985)Google Scholar
  21. 21.
    King, D.J., Launchbury, J.: Lazy depth-first search and linear graph algorithms in haskell. GLA, 145–155 (1994)Google Scholar
  22. 22.
    Anand, C.K., Kahl, W.: A domain-specific language for the generation of optimized SIMD-parallel assembly code. SQRL Report 43, Software Quality Research Laboratory, McMaster University (May 2007)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Michael Lesniak
    • 1
  1. 1.Research Group Programming Languages / MethodologiesUniversity of KasselKasselGermany

Personalised recommendations