High-Speed Hardware Partition Generation

We demonstrate circuits that generate set and integer partitions on a set S of n objects at a rate of one per clock. Partitions are ways to group elements of a set together and have been extensively studied by researchers in algorithm design and theory. We offer two versions of a hardware set partition generator. In the first, partitions are produced in lexicographical order in response to successive clock pulses. In the second, an index input determines the set partition produced. Such circuits are useful in the hardware implementation of the optimum distribution of tasks to processors. We show circuits for integer partitions as well. Our circuits are combinational. For large n, they can have a large delay. However, one can easily pipeline them to produce one partition per clock period. We show (1) analytical and (2) experimental time/complexity results that quantify the efficiency of our designs. For example, our results show that a hardware set partition generator running on a 100MHz FPGA produces partitions at a rate that is approximately 10 times the rate of a software implementation on a processor running at 2.26GHz.

[1]  Shin-Ichi Nakano,et al.  Constant Time Generation of Set Partitions , 2005, IEICE Trans. Fundam. Electron. Commun. Comput. Sci..

[2]  Ivan Stojmenovic,et al.  Fast algorithms for genegrating integer partitions , 1998, Int. J. Comput. Math..

[3]  Ivan Stojmenovic An optimal algorithm for generating equivalence relations on a linear array of processors , 1990, BIT Comput. Sci. Sect..

[4]  David P. Woodruff Better Approximations for the Minimum Common Integer Partition Problem , 2006, APPROX-RANDOM.

[5]  E. Reingold,et al.  Combinatorial Algorithms: Theory and Practice , 1977 .

[6]  J. T. Butler,et al.  High-Speed Constant Weight Codeword Generators , 2011 .

[7]  Kimmo Eriksson,et al.  Lecture Hall Partitions 2 , 1997 .

[8]  Tsutomu Sasao,et al.  Hardware Index to Permutation Converter , 2012, 2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum.

[9]  John McKay Algorithm 263: Partition generator , 1965, CACM.

[10]  Kimmo Eriksson,et al.  Lecture Hall Partitions II , 1997 .

[11]  B. John Oommen,et al.  On generating random permutations with arbitrary distributions , 1989, International Conference on Scientific Computing.

[12]  akXk IMPROVED BOUNDS ON BELL NUMBERS AND ON MOMENTS OF SUMS OF RANDOM VARIABLES , 2010 .

[13]  I. Semba An Efficient Algorithm for Generating All Partitions of the Set {1,2,…, n} , 1984 .

[14]  Robin K. S. Hankin,et al.  Set partitions in R , 2007 .

[15]  Sofia Cassel,et al.  Graph-Based Algorithms for Boolean Function Manipulation , 2012 .

[16]  Tsutomu Sasao,et al.  Combinatorial Computing-One Object Per Clock , 2013 .

[17]  Tao Jiang,et al.  On the minimum common integer partition problem , 2006, TALG.

[19]  Kimmo Eriksson,et al.  Lecture Hall Partitions , 1997 .

[20]  Shinobu Nagayama,et al.  Analysis of Multi-state Systems with Multi-state Components Using EVMDDs , 2012, 2012 IEEE 42nd International Symposium on Multiple-Valued Logic.

[21]  Tsutomu Sasao,et al.  Hardware Index to Set Partition Converter , 2013, ARC.

[22]  I. Stomenovic An optimal algorithm for generating equivalence relations on a linear array of processors , 1990 .

[23]  Jon T. Butler,et al.  Enumeration of Bent Boolean Functions by Reconfigurable Computer , 2010, 2010 18th IEEE Annual International Symposium on Field-Programmable Custom Computing Machines.

[24]  Dominique Lavenier,et al.  Computing Goldbach Partitions Using Pseudo-random Bit Generator Operators on a FPFA Systolic Array , 1998, FPL.

[25]  Antoine Zoghbiu,et al.  Fast Algorithms for Generating Integer Partitions , 1994 .

[26]  Herbert S. Wilf,et al.  Lectures on Integer Partitions , 2009 .