Functional High Performance Financial IT

The Hiperfit Research Center in Copenhagen
  • Jost Berthold
  • Andrzej Filinski
  • Fritz Henglein
  • Ken Friis Larsen
  • Mogens Steffensen
  • Brian Vinter
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7193)


The world of finance faces the computational performance challenge of massively expanding data volumes, extreme response time requirements, and compute-intensive complex (risk) analyses. Simultaneously, new international regulatory rules require considerably more transparency and external auditability of financial institutions, including their software systems. To top it off, increased product variety and customisation necessitates shorter software development cycles and higher development productivity. In this paper, we report about Hiperfit, a recently etablished strategic research center at the University of Copenhagen that attacks this triple challenge of increased performance, transparency and productivity in the financial sector by a novel integration of financial mathematics, domain-specific language technology, parallel functional programming, and emerging massively parallel hardware.

Hiperfit seeks to contribute to effective high-performance modelling by domain specialists, and to functional programming on highly parallel computer architectures in particular, by pursuing a research trajectory informed by the application domain of finance, but without limiting its research scope, generality, or applicablity, to finance. Research in Hiperfit draws on and aims at producing new research in its different scientific fields, and it fosters synergies between them to deliver showcases of modern language technology and advanced functional methods with the potential for disruptive impact on an area of increasing societal importance.


Functional Programming Functional Language Data Parallelism Parallel Hardware Reduction Semantic 
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.
    Aditya, S., Arvind, A.L., Maessen, J.W., Nikhil, R.S.: Semantics of pH: A parallel dialect of Haskell. In: Hudak, P. (ed.) Proceedings of the Haskell Workshop, La Jolla, USA, pp. 35–49 (1995)Google Scholar
  2. 2.
    Andersen, J., Elsborg, E., Henglein, F., Simonsen, J.G., Stefansen, C.: Compositional specification of commercial contracts. International Journal on Software Tools for Technology Transfer (STTT) 8(6), 485–516 (2006)Google Scholar
  3. 3.
    Armstrong, J., Virding, R., Wikström, C., Williams, M.: Concurrent Programming in Erlang., 2nd edn. Prentice Hall, Hertfordshire (1996)Google Scholar
  4. 4.
    Astapov, D.: Parallel Haskell project underway. Blog post (October 2010),
  5. 5.
    Aswad, M., Trinder, P., Al Zain, A.D., Michaelson, G., Berthold, J.: Low Pain vs. No Pain Multicore Haskells. In: Horváth, Z., Zsók, V., Achten, P., Koopman, P. (eds.) Trends in Functional Programming (TFP 2009), pp. 49–64. Intellect, Exeter (2010)Google Scholar
  6. 6.
    Augustsson, L., Mansell, H., Sittampalam, G.: Paradise: A two-stage DSL embedded in Haskell. In: ICFP 2008, Proceedings of the 13th ACM SIGPLAN International Conference on Functional Programming, pp. 225–228. ACM, New York (2008)CrossRefGoogle Scholar
  7. 7.
    Backus, J.: Can programming be liberated from the von neumann style. Communications of the ACM 21(8), 613–641 (1978)MathSciNetzbMATHCrossRefGoogle Scholar
  8. 8.
    Berthold, J., Dieterle, M., Loogen, R.: Implementing Parallel Google Map-Reduce in Eden. In: Sips, H., Epema, D., Lin, H.-X. (eds.) Euro-Par 2009. LNCS, vol. 5704, pp. 990–1002. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  9. 9.
    Berthold, J., Dieterle, M., Loogen, R., Priebe, S.: Hierarchical Master-Worker Skeletons. In: Hudak, P., Warren, D.S. (eds.) PADL 2008. LNCS, vol. 4902, pp. 248–264. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  10. 10.
    Berthold, J., Loogen, R.: Parallel Coordination Made Explicit in a Functional Setting. In: Horváth, Z., Zsók, V., Butterfield, A. (eds.) IFL 2006. LNCS, vol. 4449, pp. 73–90. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  11. 11.
    Berthold, J., Marlow, S., Hammond, K., Al Zain, A.: Comparing and Optimising Parallel Haskell Implementations for Multicore Machines. In: Enokido, T., et al. (eds.) 3rd Int. Workshop on Advanced Distributed and Parallel Network Applications (ADPNA 2009). IEEE (2009); (previously presented at IFL 2008)Google Scholar
  12. 12.
    Blelloch, G.: Programming parallel algorithms. CACM 39(3), 85–97 (1996)Google Scholar
  13. 13.
    Chakravarty, M.M., Keller, G., Lee, S., McDonell, T.L., Grover, V.: Accelerating Haskell array codes with multicore GPUs. In: DAMP 2011: Proceedings of the Sixth Workshop on Declarative Aspects of Multicore Programming, pp. 3–14. ACM, New York (2011)CrossRefGoogle Scholar
  14. 14.
    Chakravarty, M., Leshchinskiy, R., Jones, S.P., Keller, G., Marlow, S.: Data parallel Haskell: A status report. In: DAMP 2007: Workshop on Declarative Aspects of Multicore Programming, pp. 10–18. ACM, New York (2007)CrossRefGoogle Scholar
  15. 15.
    Cole, M.I.: Algorithmic Skeletons: Structured Management of Parallel Computation. Research Monographs in Parallel and Distributed Computing. MIT Press, Cambridge (1989)Google Scholar
  16. 16.
    Coutts, D.: Spark visualisation in threadscope. In: Contribution to the Haskell Implementors’ Workshop 2011, Tokyo (September 2011)Google Scholar
  17. 17.
    Dévai, G., Tejfel, M., Gera, Z., Páli, G., Nagy, G., Horváth, Z., Axelssony, E., Sheeran, M., Vajda, A., Lyckegård, B., Persson, A.: Efficient code generation from the high-level domain-specific language Feldspar for DSPs. In: ODES-8, 8th Workshop on Optimizations for DSP and Embedded Systems, Toronto (April 2010)Google Scholar
  18. 18.
    Erwig, M., Kollmansberger, S.: Probabilistic functional programming in Haskell. J. of Functional Programming 16(1), 21–34 (2006)zbMATHCrossRefGoogle Scholar
  19. 19.
    FCIC: The financial crisis inquiry report. Tech. rep., Financial Crisis Inquiry Report Commission (January 2011),
  20. 20.
    Fluet, M., Rainey, M., Reppy, J., Shaw, A., Xiao, Y.: Manticore: A Heterogeneous Parallel Language. In: Glew, N., Blelloch, G.E. (eds.) DAMP 2007: Workshop on Declarative Aspects of Multicore Programming, Nice, France, pp. 37–44 (2007)Google Scholar
  21. 21.
    Glasserman, P.: Monte Carlo methods in financial engineering. Applications of Mathematics, vol. 53. Springer, New York (2004)Google Scholar
  22. 22.
    Gorlatch, S.: Send-receive considered harmful: Myths and realities of message passing. ACM TOPLAS 26(1), 47–56 (2004)CrossRefGoogle Scholar
  23. 23.
    Hammond, K., Michaelson, G. (eds.): Research Directions in Parallel Functional Programming. Springer, London (2000)Google Scholar
  24. 24.
    Hughes, J.: Why functional programming matters. The Computer Journal 32(2), 98–107 (1989)CrossRefGoogle Scholar
  25. 25.
    Keller, G., Chakravarty, M.M., Leshchinskiy, R., Peyton Jones, S., Lippmeier, B.: Regular, shape-polymorphic, parallel arrays in Haskell. In: ICFP 2010: Proceedings of the 15th ACM SIGPLAN International Conference on Functional Programming, pp. 261–272. ACM, New York (2010)CrossRefGoogle Scholar
  26. 26.
    Lewis, J.: Cryptol: specification, implementation and verification of high-grade cryptographic applications. In: FMSE 2007: Proceedings of the ACM Workshop on Formal Methods in Security Engineering, p. 41. ACM, New York (2007)CrossRefGoogle Scholar
  27. 27.
    LexiFi: Contract description language (MLFi). Web page and white paper,
  28. 28.
    Loogen, R., Ortega-Mallén, Y., Peña-Marí, R.: Parallel Functional Programming in Eden. Journal of Functional Programming 15(3), 431–475 (2005)zbMATHCrossRefGoogle Scholar
  29. 29.
    Mainland, G., Morrisett, G.: Nikola: embedding compiled GPU functions in Haskell. In: Haskell 2010: Proceedings of the Third ACM SIGPLAN Symposium on Haskell, pp. 67–78. ACM, New York (2010)Google Scholar
  30. 30.
    Marlow, S., Jones, S.P., Singh, S.: Runtime Support for Multicore Haskell. In: ICFP 2009: Proceedings of the 14th ACM SIGPLAN International Conference on Functional Programming, New York, pp. 65–78 (2009)Google Scholar
  31. 31.
    Marlow, S., Maier, P., Loidl, H.W., Aswad, M.K., Trinder, P.: Seq no more: Better strategies for parallel Haskell. In: Haskell 2010: Proceedings of the Third ACM SIGPLAN Symposium on Haskell, pp. 91–102. ACM, New York (2010)Google Scholar
  32. 32.
    Mernik, M., Heering, J., Sloane, A.M.: When and how to develop domain-specific languages. ACM Computing Surveys 37(4), 316–344 (2005)CrossRefGoogle Scholar
  33. 33.
    Mirani, R., Hudak, P.: First-class monadic schedules. ACM TOPLAS 26(4), 609–651 (2004)CrossRefGoogle Scholar
  34. 34.
    Munshi, A.: The OpenCL Specification. Khronos OpenCL Working Group (2010),
  35. 35.
    Peyton Jones, S., Eber, J.M., Seward, J.: Composing contracts: an adventure in financial engineering (functional pearl). In: ICFP 2000: Proceedings of the Fifth ACM SIGPLAN International Conference on Functional Programming, pp. 280–292. ACM, New York (2000); (Later extended to a book chapter)CrossRefGoogle Scholar
  36. 36.
    Peyton Jones, S., Gordon, A., Finne, S.: Concurrent Haskell. In: Proceedings of POPL 1996, pp. 295–308. ACM, New York (1996)CrossRefGoogle Scholar
  37. 37.
    Plasmeijer, M., van Eekelen, M.: Functional Programming and Parallel Graph Rewriting. Addison-Wesley, Reading (1993)zbMATHGoogle Scholar
  38. 38.
    Rabhi, F.A., Gorlatch, S. (eds.): Patterns and Skeletons for Parallel and Distributed Computing. Springer, London (2003)zbMATHGoogle Scholar
  39. 39.
    Reppy, J.H.: Concurrent Programming in ML. Cambridge Univ. Press (1999)Google Scholar
  40. 40.
    Securities and Exchange Commission: Proposed rule: Asset backed securities (2010),
  41. 41.
    Skillicorn, D.B., Talia, D.: Models and languages for parallel computation. ACM Computing Surveys 30(2), 123–169 (1998)CrossRefGoogle Scholar
  42. 42.
    Sobral, J.L., Monteiro, M.P.: A domain-specific language for parallel and Grid computing. In: DSAL 2008: Proceedings of the 2008 AOSD Workshop on Domain-Specific Aspect Languages, pp. 2:1–2:4. ACM, New York (2008)Google Scholar
  43. 43.
    Trinder, P., Hammond, K., Loidl, H.W., Peyton Jones, S.: Algorithm + Strategy = Parallelism. J. of Functional Programming 8(1), 23–60 (1998)MathSciNetzbMATHCrossRefGoogle Scholar
  44. 44.
    Trinder, P., Hammond, K., Mattson Jr., J., Partridge, A., Peyton Jones, S.: GUM: a Portable Parallel Implementation of Haskell. In: PLDI 1996, pp. 78–88. ACM, New York (1996)Google Scholar
  45. 45.
    Diderot project. Website (2010),

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Jost Berthold
    • 1
  • Andrzej Filinski
    • 1
  • Fritz Henglein
    • 1
  • Ken Friis Larsen
    • 1
  • Mogens Steffensen
    • 2
  • Brian Vinter
    • 3
  1. 1.Department of Computer Science (DIKU)University of CopenhagenDenmark
  2. 2.Department of Mathematical Sciences (IMF)University of CopenhagenDenmark
  3. 3.eScience Center, Niels Bohr Institute (NBI)University of CopenhagenDenmark

Personalised recommendations