Run-time performance optimization of an FPGA-based deduction engine for SAT solvers

FPGAs are a promising technology for accelerating SAT solvers. Besides their high density, fine granularity, and massive parallelism, FPGAs provide the opportunity for run-time customization of the hardware based on the given SAT instance. In this article, a parallel deduction engine is proposed for backtrack search algorithms. The performance of the deduction engine is critical to the overall performance of the algorithm because, for any moderate SAT instance, millions of implications are derived. We propose a novel approach in which p, the amount of parallelization of the engine, is fine-tuned during problem solving in order to optimize performance. Not only the hardware is initially customized based on the input instance, but it is also dynamically modified in terms of p based on the knowledge gained during solving the SAT instance. Compared with conventional deduction engines that correspond to p = 1, we demonstrate speedups in the range of 2.87 to 5.44 for several SAT instances.

[1]  Arun K. Somani,et al.  A reconfigurable multifunction computing cache architecture , 2001, IEEE Trans. Very Large Scale Integr. Syst..

[2]  Alok N. Choudhary,et al.  Parallel algorithms for FPGA placement , 2000, ACM Great Lakes Symposium on VLSI.

[3]  Patrick W. Dowd,et al.  An FPGA-based coprocessor for ATM firewalls , 1997, Proceedings. The 5th Annual IEEE Symposium on Field-Programmable Custom Computing Machines Cat. No.97TB100186).

[4]  Inês Lynce,et al.  An Overview of Backtrack Search Satisfiability Algorithms , 2003, Annals of Mathematics and Artificial Intelligence.

[5]  Sharad Malik,et al.  Solving Boolean Satisfiability with Dynamic Hardware Configurations , 1998, FPL.

[6]  Hilary Putnam,et al.  A Computing Procedure for Quantification Theory , 1960, JACM.

[7]  Daniel G. Saab,et al.  A massively-parallel easily-scalable satisfiability solver using reconfigurable hardware , 1999, DAC '99.

[8]  Peter M. Athanas,et al.  A run-time reconfigurable engine for image interpolation , 1998, Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines (Cat. No.98TB100251).

[9]  Makoto Yokoo,et al.  Solving Satisfiability Problems on FPGAs , 1996, FPL.

[10]  Peter M. Athanas,et al.  A stream-based configurable computing radio testbed , 1998, Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines (Cat. No.98TB100251).

[11]  Joao Marques-Silva,et al.  GRASP-A new search algorithm for satisfiability , 1996, Proceedings of International Conference on Computer Aided Design.

[12]  David S. Johnson,et al.  Computers and Intractability: A Guide to the Theory of NP-Completeness , 1978 .

[13]  Fadi J. Kurdahi,et al.  The MorphoSys dynamically reconfigurable system-on-chip , 1999, Proceedings of the First NASA/DoD Workshop on Evolvable Hardware.

[14]  R. K. Shyamasundar,et al.  Introduction to algorithms , 1996 .

[15]  Viktor K. Prasanna,et al.  Domain Specific Mapping for Solving Graph Problems on Reconfigurable Devices , 1999, IPPS/SPDP Workshops.

[16]  Maya Gokhale,et al.  High level compilation for fine grained FPGAs , 1997, Proceedings. The 5th Annual IEEE Symposium on Field-Programmable Custom Computing Machines Cat. No.97TB100186).

[17]  Hantao Zhang,et al.  An Efficient Algorithm for Unit Propagation , 1996 .

[18]  Marco Platzner,et al.  Acceleration of Satisfiability Algorithms by Reconfigurable Hardware , 1998, FPL.

[19]  Sharad Malik,et al.  Accelerating Boolean satisfiability with configurable hardware , 1998, Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines (Cat. No.98TB100251).

[20]  Brad L. Hutchings,et al.  Design methodologies for partially reconfigured systems , 1995, Proceedings IEEE Symposium on FPGAs for Custom Computing Machines.

[21]  Andreas Dandalis,et al.  A Parallel Pipelined SAT Solver for FPGAs , 2000, FPL.

[22]  Daniel G. Saab,et al.  Satisfiability on reconfigurable hardware , 1997, FPL.

[23]  Arun K. Somani,et al.  A reconfigurable multi-function computing cache architecture , 2000, FPGA '00.