GpuShareSat: a SAT solver using the GPU for clause sharing
This work addresses the problem of improving SAT solver performance for researchers and practitioners by enabling more efficient clause sharing.
This paper introduces GpuShareSat, a SAT solver that integrates GPU-accelerated clause sharing with a CPU-based multithreaded CDCL solver. The GPU efficiently identifies and shares relevant clauses with CPU threads, leading to a significant performance improvement, solving 22 more instances than glucose-syrup in the SAT 2020 competition.
We describe a SAT solver using both the GPU (CUDA) and the CPU with a new clause exchange strategy. The CPU runs a classic multithreaded CDCL SAT solver. EachCPU thread exports all the clauses it learns to the GPU. The GPU makes a heavy usage of bitwise operations. It notices when a clause would have been used by a CPU thread and notifies that thread, in which case it imports that clause. This relies on the GPU repeatedly testing millions of clauses against hundreds of assignments. All the clauses are tested independantly from each other (which allows the GPU massively parallel approach), but against all the assignments at once, using bitwise operations. This allows CPU threads to only import clauses which would have been useful for them. Our solver is based upon glucose-syrup. Experiments show that this leads to a strong performance improvement, with 22 more instances solved on the SAT 2020 competition than glucose-syrup.