FLOPS 2012: Functional and Logic Programming pp 197-212 | Cite as
Parallel Computation Skeletons with Premature Termination Property
Conference paper
Abstract
A parallel computation with early termination property is a special form of a parallel for loop. This paper devises a generic highlevel approach for such computation which is expressed as a scheme for algorithmic skeletons. We call this scheme map+reduce, in similarity with the map-reduce paradigm. The implementation is concise and relies heavily on laziness. Two case studies from computational number theory support our presentation.
Keywords
Premature Termination Task Balance Absolute Speedup Miller Test Multicore Machine
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.
References
- 1.Cole, M.I.: Algorithmic Skeletons: Structured Management of Parallel Computation. In: Research Monographs in Parallel and Distributed Computing. Pitman (1989)Google Scholar
- 2.Loogen, R., Ortega-Mallén, Y., Peña-Marí, R.: Parallel Functional Programming in Eden. Journal of Functional Programming 15(3), 431–475 (2005)MATHCrossRefGoogle Scholar
- 3.Lobachev, O.: Implementation and Evaluation of Algorithmic Skeletons: Parallelisation of Computer Algebra Algorithms. PhD thesis, Philipps-Universität Marburg (2011)Google Scholar
- 4.Brown, C., Hammond, K.: Ever-decreasing circles: a skeleton for parallel orbit calculations in Eden. In: Draft Proceedings, TFP 2010 (2010)Google Scholar
- 5.Peyton Jones, S. (ed.): Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press (2003)Google Scholar
- 6.Trinder, P.W., Barry Jr., E., et al.: GPH: an architecture-independent functional language. IEEE Trans. Software Engineering (1999)Google Scholar
- 7.Marlow, S., Peyton Jones, S., Singh, S.: Runtime support for multicore Haskell. ACM SIGPLAN Notices 44(9), 65–78 (2009)CrossRefGoogle Scholar
- 8.Marlow, S., Maier, P., Loidl, H.W., Aswad, M.K., Trinder, P.: Seq no more: better strategies for parallel Haskell. In: Haskell 2010, pp. 91–102. ACM (2010)Google Scholar
- 9.Eden Group: Eden skeleton library. Software package (2012) (retrieved February 13, 2012)Google Scholar
- 10.Galán, L.A., Pareja, C., Peña, R.: Functional Skeletons Generate Process Topologies in Eden. In: Kuchen, H., Swierstra, S.D. (eds.) PLILP 1996. LNCS, vol. 1140, pp. 289–303. Springer, Heidelberg (1996)CrossRefGoogle Scholar
- 11.Peña, R., Rubio, F.: Parallel Functional Programming at Two Levels of Abstraction. In: PPDP 2001, pp. 187–198. ACM (2001)Google Scholar
- 12.Loogen, R., Ortega-Mallén, Y., Peña, R., Priebe, S., Rubio, F.: Parallelism abstractions in Eden. In: Rabhi, F.A., Gorlatch, S. (eds.) Patterns and Skeletons for Parallel and Distributed Computing, pp. 71–88. Springer (2003)Google Scholar
- 13.Darlington, J., Field, A.J., Harrison, P.G., Kelly, P.H.J., Sharp, D.W.N., Wu, Q., et al.: Parallel Programming Using Skeleton Functions. In: Reeve, M., Bode, A., Wolf, G. (eds.) PARLE 1993. LNCS, vol. 694, pp. 146–160. Springer, Heidelberg (1993)CrossRefGoogle Scholar
- 14.Botorog, G.H., Kuchen, H.: Efficient high-level parallel programming. Theoretical Computer Science 196(1-2), 71–107 (1998)MATHCrossRefGoogle Scholar
- 15.Michaelson, G., Scaife, N., Bristow, P., King, P.: Nested Algorithmic Skeletons from Higher Order Functions. Parallel Algorithms and Appl. 16, 181–206 (2001)MATHCrossRefGoogle Scholar
- 16.Bischof, H., Gorlatch, S., Leshchinskiy, R.: Generic Parallel Programming Using C++ Templates and Skeletons. In: Lengauer, C., Batory, D., Blum, A., Vetta, A. (eds.) Domain-Specific Program Generation. LNCS, vol. 3016, pp. 107–126. Springer, Heidelberg (2004)CrossRefGoogle Scholar
- 17.Bacci, B., Danelutto, M., Orlando, S., Pelagatti, S., Vanneschi, M.: P3L: A structured high-level parallel language, and its structured support. Concurrency: Practice and Experience 7(3), 225–255 (1995)CrossRefGoogle Scholar
- 18.Leyton, M., Piquer, J.M.: Skandium: Multi-core programming with algorithmic skeletons. In: 18th Euromicro Conference on Parallel, Distributed and Network-based Processing, pp. 289–296. IEEE (2010)Google Scholar
- 19.Hey, A.J.G.: Experiments in MIMD parallelism. Future Generation Computer Systems 6(3), 185–196 (1990)CrossRefGoogle Scholar
- 20.Foster, I.: Designing and building parallel programs: concepts and tools for parallel software engineering. Addison–Wesley (1995)Google Scholar
- 21.Grama, A.Y., Kumar, V., Gupta, A., Karypis, G.: Introduction to parallel computing. Addison–Wesley (2003)Google Scholar
- 22.Priebe, S.: Dynamic Task Generation and Transformation Within a Nestable Workpool Skeleton. In: Nagel, W.E., Walter, W.V., Lehner, W. (eds.) Euro-Par 2006. LNCS, vol. 4128, pp. 615–624. Springer, Heidelberg (2006)CrossRefGoogle Scholar
- 23.Dieterle, M., Berthold, J., Loogen, R.: A Skeleton for Distributed Work Pools in Eden. In: Blume, M., Kobayashi, N., Vidal, G. (eds.) FLOPS 2010. LNCS, vol. 6009, pp. 337–353. Springer, Heidelberg (2010)CrossRefGoogle Scholar
- 24.Dieterle, M.: Parallele funktionale Implementierung von Master-Worker-Skeletten. Diplomarbeit, Philipps-Universität Marburg (2007) (in German)Google Scholar
- 25.Reinders, J.: Intel threading building blocks: outfitting C++ for multi-core processor parallelism. O’Reilly Media, Inc. (2007)Google Scholar
- 26.Lämmel, R.: Google’s mapreduce programming model — revisited. Science of Computer Programming 70(1), 1–30 (2008)MathSciNetMATHCrossRefGoogle Scholar
- 27.Dean, J., Ghemawat, S.: MapReduce: a flexible data processing tool. Communications of the ACM 53, 72–77 (2010)CrossRefGoogle Scholar
- 28.Friedman, D.P., Wise, D.S.: CONS should not evaluate its arguments. In: Automata, Languages, and Programming, pp. 257–281 (1976)Google Scholar
- 29.Wray, S.C., Fairbairn, J.: Non-strict languages — programming and implementation. Computer Journal 32(2), 142–151 (1989)CrossRefGoogle Scholar
- 30.Stephens, R.: A survey of stream processing. Acta Inform. 34(7), 491–541 (1997)MathSciNetMATHCrossRefGoogle Scholar
- 31.Conery, J.S., Kibler, D.F.: Parallel interpretation of logic programs. In: FPCA 1981, pp. 163–170. ACM (1981)Google Scholar
- 32.Cohen, H.: A Course in Computational Algebraic Number Theory. Springer (2000)Google Scholar
- 33.Miller, G.L.: Riemann’s hypothesis and tests for primality. Journal of Computer and System Sciences 13(3), 300–317 (1976)MathSciNetMATHCrossRefGoogle Scholar
- 34.Rabin, M.O.: Probabilistic algorithm for testing primality. Journal of Number Theory 12(1), 128–138 (1980)MathSciNetMATHCrossRefGoogle Scholar
- 35.Adleman, L.M., Pomerance, C., Rumely, R.S.: On distinguishing prime numbers from composite numbers. Annals of Mathematics 117(1), 173–206 (1983)MathSciNetMATHCrossRefGoogle Scholar
- 36.Cohen, H., Lenstra Jr., H.W.: Primality testing and Jacobi sums. Mathematics of Computation 42(165), 297–330 (1984)MathSciNetMATHCrossRefGoogle Scholar
- 37.Berthold, J., Loogen, R.: Visualizing Parallel Functional Program Executions: Case Studies with the Eden Trace Viewer. In: Parallel Computing: Architectures, Algorithms and Applications, ParCo 2007. IOS Press (2007)Google Scholar
- 38.Welch, P.H.: Graceful termination–graceful resetting. In: Bakker, A.W.P. (ed.) Applying Transputer-Based Parallel Machines, pp. 310–317. IOS Press (1989)Google Scholar
- 39.Brown, N.C.C.: Communicating Haskell processes: Composable explicit concurrency using monads. In: Communicating Process Architectures, pp. 67–84 (2008)Google Scholar
- 40.Hahnel, T.: The Rabin–Miller Prime Number Test on Systola 1024 on the Background of Cryptography. Master’s thesis, University of Karlsruhe (1998)Google Scholar
- 41.Cheung, R.C.C., Brown, A., Luk, W., Cheung, P.Y.K.: A scalable hardware architecture for prime number validation. In: FPT 2004, pp. 177–184 (2004)Google Scholar
- 42.Schmidt, B., Schimmler, M., Schroeder, H.: High-Speed Cryptography. In: Embedded Cryptographic Hardware: Methodologies & Architectures. Nova Science Publishers (2004)Google Scholar
Copyright information
© Springer-Verlag Berlin Heidelberg 2012