Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article
Public Access

Algorithm 947: Paraperm---Parallel Generation of Random Permutations with MPI

Published: 27 October 2014 Publication History

Abstract

An algorithm for parallel generation of a random permutation of a large set of distinct integers is presented. This algorithm is designed for massively parallel systems with distributed memory architectures and the MPI-based runtime environments. Scalability of the algorithm is analyzed according to the memory and communication requirements. An implementation of the algorithm in a form of a software library based on the C++ programming language and the MPI application programming interface is further provided. Finally, performed experiments are described and their results discussed. The biggest of these experiments resulted in a generation of a random permutation of 241 integers in slightly more than four minutes using 131072 CPU cores.

Supplementary Material

PDF File (a5-langr_appendix.pdf)
The proof is given in an electronic appendix, available online in the ACM Digital Library.
ZIP File (947.zip)
Software for Paraperm---Parallel Generation of Random Permutations with MPI

References

[1]
David Abrahams and Aleksey Gurtovoy. 2004. C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ in Depth Series). Addison-Wesley Professional, Boston, MA.
[2]
R. Anderson. 1990. Parallel algorithms for generating random permutations on a shared memory machine. In Proceedings of the 2nd Annual ACM Symposium on Parallel Algorithms and Architectures (SPAA’90). ACM, New York, NY, 95--102.
[3]
Guojing Cong and David A. Bader. 2005. An empirical analysis of parallel random permutation algorithms on SMPs. In Proceedings of the ISCA 18th International Conference on Parallel and Distributed Computing Systems (ISCA PDCS’05). Michael J. Oudshoorn and Sanguthevar Rajasekaran (Eds.), ISCA, Winona, MN, 27--34.
[4]
Artur Czumaj, Przemyslawa Kanarek, Miroslaw Kutylowski, and Krzysztof Lorys. 1998. Fast generation of random permutations via networks simulation. Algorithmica 21, 1, 2--20.
[5]
Frank Dehne, Andreas Fabri, and Andrew Rau-Chaplin. 1993. Scalable parallel geometric algorithms for coarse grained multicomputers. In Proceedings of the 9th Annual Symposium on Computational Geometry (SCG’93). ACM, New York, 298--307.
[6]
Richard Durstenfeld. 1964. Algorithm 235: Random permutation. Commun. ACM 7, 7, 420--421.
[7]
O. Goldreich. 2010. A Primer on Pseudorandom Generators. American Mathematical Society, Providence, RI.
[8]
Michael T. Goodrich. 1996. Communication-efficient parallel sorting (preliminary version). In Proceedings of the 28th Annual ACM Symposium on Theory of Computing (STOC’96). ACM, New York, 247--256.
[9]
Michael T. Goodrich. 1997. Randomized fully-scalable BSP techniques for multi-searching and convex hull construction. In Proceedings of the 8th Annual ACM-SIAM Symposium on Discrete Algorithms (SODA’97). SIAM, Philadelphia, PA, 767--776.
[10]
William Gropp, Steven Huss-Lederman, Andrew Lumsdaine, Ewing Lusk, Bill Nitzberg, William Saphir, and Marc Snir. 1998. MPI---The Complete Reference, Volume 2: The MPI-2 Extensions. MIT Press, Cambridge, MA.
[11]
Jens Gustedt. 2008. Engineering parallel in-place random generation of integer permutations. In Proceedings of the 7th International Workshop on Experimental Algorithms (WEA’08). Catherine McGeoch (Ed.), Lecture Notes In Computer Science, vol. 5038, Springer Berlin, 129--141.
[12]
Jens Gustedt, Stéphane Vialle, and Amelia De Vivo. 2007. The parXXL environment: Scalable fine grained development for large coarse grained platforms. In Proceedings of the 8th International Workshop on Applied Parallel Computing. State of the Art in Scientific Computing, (PARA’06). Bo Kågström, Erik Elmroth, Jack Dongarra, and Jerzy Wasniewski (Eds.), Lecture Notes in Computer Science, vol. 4699, Springer-Verlag, Berlin, 1094--1104.
[13]
Torben Hagerup. 1991. Fast parallel generation of random permutations. In Automata, Languages and Programming, Javier Leach Albert, Burkhard Monien, and Mario Rodriguez Artalejo (Eds.), Lecture Notes in Computer Science, vol. 510, Springer Berlin, 405--416.
[14]
ISO/IEC. 2011. ISO/IEC 14882:2011 Information technology---Programming languages---C++. ISO/IEC Copyright Office, Geneva, Switzerland.
[15]
Joseph F. JaJa. 2011. Parallel random access machines (PRAM). In Encyclopedia of Parallel Computing, David Padua (Ed.), Springer Berlin, 1608--1615.
[16]
Nicolai M. Josuttis. 2012. The C++ Standard Library---A Tutorial and Reference (2nd ed.). Addison-Wesley-Longman, Boston, MA.
[17]
Björn Karlsson. 2005. Beyond the C++ Standard Library: An Introduction to Boost. Addison-Wesley Professional, Boston, MA.
[18]
Helmut G. Katzgraber. 2010. Random numbers in scientific computing: An introduction. arXiv:1005.41717 {physics.comp-ph}, http://arxiv.org/abs/1005.4117 (accessed September, 2012).
[19]
Donald E. Knuth. 1997. The Art of Computer Programming, Volume 2: Seminumerical Algorithms 3rd Ed. Addison-Wesley Longman Publishing Co., Inc., Boston, MA.
[20]
Isabelle Guérin Lassous and Eric Thierry. 2000. Generating random permutation in the framework of coarse grained models. In Procedings of the 4th International Conference on Principles of Distributed Systems (OPODIS 2000) (Studia Informatica Universalis). Franck Butelle (Ed.), Suger, Saint-Denis, rue Catulienne, France, 1--16.
[21]
Makoto Matsumoto and Takuji Nishimura. 1998. Mersenne twister: A 623-dimensionally equidistributed uniform pseudo-random number generator. ACM Trans. Model. Comput. Simul. 8, 1, 3--30.
[22]
G. L. Miller and J. H. Reif. 1985. Parallel tree contraction and its application. In Proceedings of the 26th Symposium on Foundations of Computer Science. IEEE, 478--489.
[23]
Martin Reddy. 2011. API Design for C++. Morgan-Kaufmann, Burlington, MA.
[24]
J. H. Reif. 1985. An optimal parallel algorithm for integer sorting. In Proceedings of the 26th Symposium on Foundations of Computer Science. IEEE, 496--504.
[25]
P. Sanders. 1998. Random permutations on distributed, external and hierarchical memory. Inform. Process. Lett. 67, 6, 305--309.
[26]
Marc Snir, Steve Otto, Steven Huss-Lederman, David Walker, and Jack Dongarra. 1998. MPI---The Complete Reference, Volume 1: The MPI Core 2nd Ed. MIT Press, Cambridge, MA.
[27]
Herb Sutter. 2000. Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions. Addison-Wesley Longman Publishing Co., Inc, Boston, MA.
[28]
Herb Sutter and Andrei Alexandrescu. 2004. C++ Coding Standards: 101 Rules, Guidelines, and Best Practices (C++ in Depth Series). Addison-Wesley Professional, Boston, MA.
[29]
Alexander Tiskin. 2011. Bulk Synchronous Parallelism (BSP). In Encyclopedia of Parallel Computing, David Padua (Ed.), Springer, Berlin, 192--199.

Cited By

View all
  • (2024)A statistical verification method of random permutations for hiding countermeasure against side-channel attacksJournal of Information Security and Applications10.1016/j.jisa.2024.10379784(103797)Online publication date: Aug-2024
  • (2024)Batched ranged random integer generationSoftware: Practice and Experience10.1002/spe.3369Online publication date: 25-Aug-2024
  • (2019)Accelerating many-nucleon basis generation for high performance computing enabled ab initio nuclear structure studiesThe International Journal of High Performance Computing Applications10.1177/1094342019838314(109434201983831)Online publication date: 31-Mar-2019
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Transactions on Mathematical Software
ACM Transactions on Mathematical Software  Volume 41, Issue 1
October 2014
157 pages
ISSN:0098-3500
EISSN:1557-7295
DOI:10.1145/2684421
Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 27 October 2014
Accepted: 01 December 2013
Revised: 01 November 2013
Received: 01 February 2013
Published in TOMS Volume 41, Issue 1

Permissions

Request permissions for this article.

Check for updates

Badges

Author Tags

  1. C++
  2. MPI
  3. distributed memory
  4. implementation
  5. parallel computing
  6. random permutation

Qualifiers

  • Research-article
  • Research
  • Refereed

Funding Sources

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)83
  • Downloads (Last 6 weeks)7
Reflects downloads up to 09 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)A statistical verification method of random permutations for hiding countermeasure against side-channel attacksJournal of Information Security and Applications10.1016/j.jisa.2024.10379784(103797)Online publication date: Aug-2024
  • (2024)Batched ranged random integer generationSoftware: Practice and Experience10.1002/spe.3369Online publication date: 25-Aug-2024
  • (2019)Accelerating many-nucleon basis generation for high performance computing enabled ab initio nuclear structure studiesThe International Journal of High Performance Computing Applications10.1177/1094342019838314(109434201983831)Online publication date: 31-Mar-2019
  • (2019)Fast Random Integer Generation in an IntervalACM Transactions on Modeling and Computer Simulation10.1145/323063629:1(1-12)Online publication date: 24-Jan-2019
  • (2019)Data-Adapted Parallel Merge SortEuro-Par 2019: Parallel Processing Workshops10.1007/978-3-030-48340-1_30(388-399)Online publication date: 26-Aug-2019
  • (2017)Generating Random Permutations by Coin TossingACM Transactions on Algorithms10.1145/300990913:2(1-43)Online publication date: 7-Feb-2017

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media