A Factor Graph (FG --http://en.wikipedia.org/wiki/Factor_graph) is a structure used to find solutions to problems that can be represented as a Probabilistic Graphical Model (PGM). They consist of interconnected variable nodes and factor nodes, which iteratively compute and pass messages to each other. FG's can be applied to solve decoding of forward error correcting codes, Markov chains and Markov Random Fields, Kalman Filtering, Fourier Transforms, and even some games such as Sudoku. In this paper, a framework is presented for rapid prototyping of hardware implementations of FG-based applications. The FG developer specifies aspects of the application, such as graphical structure, factor computation, and message passing algorithm, and the framework returns a design. A system of Python scripts and Verilog
IntroductionProbabilistic Graphical Models (PGM) can be used to describe a broad scope of problems. They may be applied to speech recognition, computer vision, information coding, machine learning, and protein modeling, to name a few. At their most basic, PGMs are sets of random variables with conditional interdependencies. They are graphical, in that they can be modeled as connected graphs, with the random variables as vertices and the conditional dependencies as edges. A Factor Graph (FG) is a variation of a PGM that executes an algorithm to find a solution to a set of constraints, given some initial a priori information. In terms of the PGM examples listed, a factor graph might be used to map recorded voice audio to a known words, or to discern objects from image data, or to fix errors in an encoded set of bits.Factor graphs work in the domain of probability. A FG solver may be thought of as a probability processor. Elements within a FG communicate with one another by passing messages about what they believe they are, what they believe their neighbors to be, and how strongly they believe it. They don't work deductively, in serial fashion. They process iteratively and in parallel, converging their beliefs on a solution. Some problems 1 that are difficult to solve deterministically, such as those described above, can be solved probabilistically, using factor graphs.
Motivation and ContributionThis work presents a system for generating factor graph solvers. It was inspired by the current state of the art of hardware FG applications, and attempts to further it with two of its components. The first is abstract; it is a generalized model for hardware FG solvers.Analysis of hardware FG applications led to the realization that their structures and hierarchies could be represented by a single model. This model is the foundation upon which the FG-Solver modules of this work are constructed. The second component is more concrete. It is the Generator Framework itself, a software system for automatically generating hardware FG solver designs. Its intended benefits are ease of creation and rapid prototyping. The system has been applied to real problems, and the generated designs have withstood thorough testing and verifica...