Parallelizing MCP-Haskell for Evaluating Haskell# Parallel Programming Environment
Resumo
In this paper, we present the parallelization of a sequential functional implementation of a Monte Carlo Transport Problem, called MCP-Haskell[Hammes et al., 1995], using Haskell#. This experiment gave us important feedback for evaluating Haskel# features, helping us to answer some questions, like how expressive is Haskel# for representing known parallel computational patterns, how easy it is to build large scale parallel programs in an elegant and concise way, and how efficient are Haskell# programs. Based on our conclusions, we suggest new features to be incorporated in Haskel# to improve its expressiveness and performance. We also present the performance figures for the MCP-Haskell# benchmark.
Referências
Burge, W. H. (1975). Recursive Programming Techniques. Addison-Wesley Publishers Ltd.
Burton, F.W. (1987). Functional Programming for Concurrent and Distributed Computing. Computer Journal, 30(5), 437-450.
Carvalho Jr., F. H. 2000 (Jan.). Haskell#: Uma Extensão Paralela para Haskell#. M.Phil. thesis, Centro de Informática, Universidade Federal de Pernambuco.
DeRemer, F., & Kron, H. H. (1976). Programming-in-the-Large versus Programming-in-the-small. Ieee transactions on software engineering, June, 80-86.
Dongarra, J., Quo, S. W., Snir, M., & Walker, D. Technical Report CS-95-274, University of Tennessee, Jan.
Gelernter, D., & Carriero, N. (1992). Coordination Languages and Their Significance. Communications of the ACM, 35(2), 97-107.
GHC Team. (1998). The Glasgow Haskell Compiler User's Guide, Version 4.01. [link].
Hammes, J., Lubeck, O., & Bohm, W. (1995). Comparing Id and Haskell in a Monte Carlo Photon Transport Code. Journal of functional programming, July, 283-316.
Hammond, K., & Michaelson, G. (1999). Research Directions in Parallel Functional Programming. Springer-Verlag.
Hicks, J ., Chiou, O., Ang, B. S., & Arvind. (1993). Performance Studies of ld on the Monsoon Dataflow System. Joumal of parallel and distributing computing, 18, 273-300.
Hoare, C. A. R. (1985). Communicating Sequential Processes. Prentice-Hall, C.A.R. Hoare Series Editor.
Hudak, P. (1985). Serial Combinators: "Optimal" Grains of Parallelism. FPCA '85, Sept., 382-399.
Hudak, P. (1991). Para-Functional Programming in Haskell. Parallel Functional Languages and Compilers, B. K. Szymanski, Ed. ACM Press, New York, 159-196.
Hudak, P., Jones, S. P. L., & Wadler, P. L. (1992). Report on Programming Language Haskell: a Non-Strict, Purely Functional Languages. Special Issue of SIGPLAN Notices, 16(5).
lnmos. (1988). Occam 2 Reference Manual. Prentice-Hall, C.A.R. Hoare Series Editor.
Kaser, O., Ramakrishnan, C.R., Ramakrishnan, I. V., & Sekar, R. C. (1997). Equals - A Fast Parallel Implementation of a Lazy Language. Journal of Functional Programming, 7(2), 183-217.
Kelly, P. (1989). Functional Programming for Loosely-coupled Multiprocessors. Research Monographs in Parallel and Distributed Computing, MIT Press.
Krammer, J. (1994). Distributed Software Engineering. IEEE Computer Society Press (ed), Proc. 16th IEEE International Conference on Software.
Lima, R. M. F. 2000 (July). Haskel# - uma linguagem funcional paralela - ambiente de programação, implementação e otimização. Ph.D. thesis, Centro de Informática, UFPE.
Lima, R. M. F., Carvalho Jr., F. H., & Lins, R. D. (1999). Haskell#: A Message Passing Extension to Haskell. CLAPF'99 - 3rd Latin American Conference on Functional Programming, Mar., 93-108.
Lins, R. D. (1996). Functional Programming and Parallel Processing. 2nd International Conference on Vector and Parallel Processing - VECPAR'96 - LNCS 1215 Springer-Verlag, Sept., 429-457.
Manber, U. (1999). Introduction to Algorithms: A Creative Approach. Reading, Massachusetts: Addison-Wesley. chapter 12, pages 375-409. 205
Peyton Jones, S. L., & Hughes, J. (1999). Report on the Programming Language Haskell 98, A Non-strict, Purely Functional Language. Feb.
Peyton Jones, S. L., Clack, C., & Salkild, J. (1987). GRIP. A High-Performance Architecture for Parallel Graph Reduction. FPCA '87: Conference on Functional Programming Languages and Computer Architecture - Springer-Verlag LNCS 274, 98-112.
Plasmeijer, M. J., & van Eekelen, M. (1993). Functional Programming and Parallel Graph Rewriting. Addison-Wesley Publishers Ltd.
Roch, S., & Starke, P. (1999). Manual: Integrated Net Analyzer Version 2.2. Humboldt-Universität zu Berlin, Institut für lnformatik, Lehrstuhl für Automaten- rmd Systemtheorie.
Shapiro, E. (1989). The family of concurrent logic programming languages. Acm computing surveys, 21,413-510.
Spector, H. M. (2000). Building Linux cluster. O'Reilly.
Taylor, F. (1997). Parallel Functional Programming by Partitioning. PhD Thesis, Department of Computing, Imperial College of Science, Technology and Medicine, University of Landon, Jan.
Trinder, P., Hammond, K., Mattson Jr., J. S., Partridge, A. S., & Jones, S. P. L. (1996). GUM: A Portable Parallel lmplementation of Haskell. PLDI'96 - Programming Languages Design and lmplementation, 79-88.
Turner, D. A. (1982). Recursion Equations as a Programming Language. Functional programming and its applications, 1-28.
Whalen, D. J., Hollowell, D. E., & Hendriks, J. S. (1991). MCNP: Photon Benchmark Problems. Tech. rept. LA-12196. Los Alamos National Laboratory.