Graph partitioning engine based on programmable gate arrays
First Claim
1. In a method for operating a field programmable gate array (FPGA) to compute a function whose optimum represents the partitioning of a graph into a plurality of partitions, said graph comprising a plurality of vertices connected by edges, said partitioning assigning each of said verticies to one of said partitions, the improvement comprising configuring said FPGA to provide:
- a partition state register(PSR), comprising a plurality of cells, each cell corresponding to one of said vertices, each cell storing a number indicative of the partition to which said vertex is currently assigned, said PSR representing a partitioning of said graph;
a circuit for computing the sum of the edges that connect vertices in different partitions; and
a circuit for computing a value representing the degree to which the partitions are of different sizes.
3 Assignments
0 Petitions
Accused Products
Abstract
A method for operating a FPGA to compute a function whose optimum represents the preferred partitioning of a graph having a plurality of vertices connected by edges. The FPGA is configured to provide a partition state register having a plurality of cells. Each cell corresponds to one of the vertices in the graph and is used to store a number indicative of the partition to which the corresponding vertex is currently assigned. The algorithm for determining the optimum partition computes a cost function having two components. The assignment of the vertices to the various partitions is made such that this cost function is minimized. For any given assignment of the vertices, the FPGA computes the cost function using two circuits that are configured from the FPGA. The first circuit computes the number of edges that connect vertices belonging to different partitions. The second circuit computes a number that represents the extent to which the various partitions differ from one another in size. The ideal partitioning is that which minimizes a weighted sum of these computed numbers. Special circuits for generating random numbers and binary vectors having a controllable number of randomly placed ones therein are also described.
-
Citations
9 Claims
-
1. In a method for operating a field programmable gate array (FPGA) to compute a function whose optimum represents the partitioning of a graph into a plurality of partitions, said graph comprising a plurality of vertices connected by edges, said partitioning assigning each of said verticies to one of said partitions, the improvement comprising configuring said FPGA to provide:
-
a partition state register(PSR), comprising a plurality of cells, each cell corresponding to one of said vertices, each cell storing a number indicative of the partition to which said vertex is currently assigned, said PSR representing a partitioning of said graph; a circuit for computing the sum of the edges that connect vertices in different partitions; and a circuit for computing a value representing the degree to which the partitions are of different sizes. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A circuit for generating a sequence of random numbers, said circuit comprising a plurality of cells connected in series, said series comprising a first cell, a last cell, and one or more intermediate cells, each said cell comprising a circuit for storing a binary state and outputting a state value, and an output terminal, said cell'"'"'s next state being a function of the cell'"'"'s current state and first and second inputs, wherein said intermediate cells are connected such that said first and second inputs of each said intermediate cells are connected, respectively, to said state outputs of said cells on each side of said intermediate cell in said series, and wherein one of said inputs of said first cell is connected to a circuit whose output is the sum of all of said cell states modulo 2.
-
8. A circuit for generating a binary vector having a density of ones determined by a control value, the placement of ones in said binary vector being random, said circuit comprising:
-
a first shift register having an input for receiving a binary value to be shifted through said first shift register, said shift register comprising a plurality of cells through which said received binary value is shifted, each said cell having an output indicative of the value stored in said cell in said shift register, a first random number generating circuit having an output comprising a first sequence of random numbers, and a first comparator for comparing each number in said first sequence of random numbers with a first value, said first comparator having an output connected to the input of said first shift register; a second shift register having an input for receiving a binary value to be shifted through said second shift register, said shift register comprising a plurality of cells through which said received binary value is shifted, each said cell having an output indicative of the value stored in said cell in said shift register, a second random number generating circuit having an output comprising a second sequence of random numbers, and a second comparator for comparing each number in said second sequence of random numbers with a second value, said second comparator having an output connected to the input of said second shift register; and a circuit, connected to said outputs of corresponding said cells in said first and second shift registers, for generating the bits of said binary vector. - View Dependent Claims (9)
-
Specification