{'fraction_non_alphanumeric': 0.01603849238171612, 'fraction_numerical': 0.01603849238171612, 'mean_word_length': 5.028985507246377, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Parallel SAT Solving-Using More Cores

A parallelization approach for SAT solving is presented. Common parallel portfolio approaches seem to stagnate at four parallel solvers and cannot compete with the growing number of cores in the next generation of CPUs. The presented algorithm provides an opportunity to use additional cores by parallelizing the unit propagation. In average, unit propagation consumes 80% of the solvers runtime and thus provides a high potential to be parallelized. This load can be distributed among cores by splitting the clause database into partitions. The presented algorithm uses only a single lock for synchronizing conflicts. The parallelization is implemented into riss. A speedup of 1.57 can be reached by using two threads on the SAT Race 2010 benchmark in the best case, however, the performance of the parallelization is higher, because the sequential algorithm can solve only 48 instances within the timeout, whereas two threads can solve at least 61 out of 100 instances. Experiments on the SAT Competition 2009 Application benchmark showed that using four threads does not increase the solvers power. Still, by applying the presented technique to an existing solver, the number of used cores can be doubled.