Abstract

Since 2013, the leading SAT solvers in the SAT competition all use inprocessing, which unlike preprocessing, interleaves search with simplifications. However, applying inprocessing frequently can still be a bottle neck, i.e., for hard or large formulas. In this work, we introduce the first attempt to parallelize inprocessing on GPU architectures. As memory is a scarce resource in GPUs, we present new space-efficient data structures and devise a data-parallel garbage collector. It runs in parallel on the GPU to reduce memory consumption and improves memory access locality. Our new parallel variable elimination algorithm is twice as fast as previous work. In experiments our new solver ParaFROST solves many benchmarks faster on the GPU than its sequential counterparts.

Highlights

  • During the past decade, SAT solving has been used extensively in many applications, such as combinational equivalence checking [27], automatic test pattern generation [33, 40], automatic theorem proving [14], and symbolic model checking [7,13]

  • Simplifying SAT problems prior to solving them has proven its effectiveness in modern conflictdriven clause learning (CDCL) SAT solvers [5, 6, 17], when applied on real-world applications relevant to software and hardware verification [16, 20, 22, 24]

  • Eager Redundancy Elimination (ERE) is a new elimination technique that we propose, which repeats the following until a fixpoint has been reached: for a given formula S and clauses C1 ∈ S, C2 ∈ S with x ∈ C1 and x ∈ C2 for some variable x, if there exists a clause C ∈ S for which C ≡ C1 ⊗x C2, let S := S \ {C}

Read more

Summary

Introduction

SAT solving has been used extensively in many applications, such as combinational equivalence checking [27], automatic test pattern generation [33, 40], automatic theorem proving [14], and symbolic model checking [7,13]. After eliminating variable x in S, the resulting formula S is defined as S = Rx(S) ∪ (S \ (Sx ∪ Sx)), i.e., the new resolvents are combined with the original and learnt clauses that do not reference x. The loop at lines 18-21 performs the actual parallel reduction to accumulate the number of non-deleted clauses and literals in shared memory within thread blocks. Every thread scans the clause set of its designated literals x and x (line 17) References to these clauses are stored at Tx and Tx. register variables t, β, γ are created to hold the current type, number of added clauses, and number of added literals of x, respectively. If a clause C is found that is equal to Cm and is either LEARNT or has a state equal to the one of Cm, it is set to DELETED (lines 16)

Experiments
Related Work
Conclusion
Findings
31. NVIDIA
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call