Zum Inhalt
Erschienen in:

Open Access 2025 | OriginalPaper | Buchkapitel

D-Painless: A Framework for Distributed Portfolio SAT Solving

verfasst von : Mazigh Saoudi, Souheib Baarir, Julien Sopena, Thibault Lejemble

Erschienen in: Tools and Algorithms for the Construction and Analysis of Systems

Verlag: Springer Nature Switzerland

Aktivieren Sie unsere intelligente Suche, um passende Fachinhalte oder Patente zu finden.

search-config
loading …

Abstract

Das Kapitel geht der entscheidenden Rolle von SAT-Formeln bei der Verschlüsselung komplexer Probleme in verschiedenen Bereichen wie Schaltkreisverifikation, Kryptographie, automatisierte Planung und Softwareverifikation nach. Es betont die Herausforderungen durch harte SAT-Instanzen und die Notwendigkeit paralleler und verteilter Rechnerumgebungen, um die Lösungszeiten zu reduzieren. Die Erweiterung des Rahmenwerks zur Aufnahme von SAT-Lösern für verteilte Klauseln ist ein wesentlicher Schwerpunkt, der die Einbeziehung diverser Klauselteilungsstrategien und Knotentopologien ermöglicht. Diese Erweiterung führt zu einem vielseitigen Framework, das die Entwicklung verteilter SAT-Solver vereinfacht und es zu einem unschätzbaren Werkzeug für Forscher macht. Das Kapitel bietet einen detaillierten Überblick über verwandte Arbeiten, einschließlich bahnbrechender Bemühungen zur Lösung verteilter SAT-Probleme und der Entwicklung von Strategien zum Austausch von Klauseln. Es präsentiert außerdem eine umfassende Bewertung der neuen Architektur, bewertet ihre Leistung anhand implementierter Sharing-Strategien und vergleicht sie mit modernen Lösungsansätzen. Das Kapitel schließt mit einer Diskussion über mögliche zukünftige Arbeiten, einschließlich der Entwicklung fehlertoleranter Algorithmen und der Optimierung bestehender Komponenten zur Steigerung der Gesamteffizienz. Die Erforschung der dezentralen Bereitstellung, der gemeinsamen Nutzung von Klauseln und der Architektur des Rahmenwerks bietet einen tiefen Einblick in die technischen Komplexitäten und innovativen Lösungen im Bereich der dezentralen SAT-Lösungen.

1 Introduction

Currently, SAT formulas are essential for encoding complex problems across various fields such as circuit verification [25], cryptography [30], automated planning [35], and software verification [26]. The complexity of these encoded problems ranges from simple to extremely challenging. One effective method for solving hard instances is the use of parallelism.
According to the annual SAT competition [17], the Portfolio clause sharing parallelization strategy has been the gold standard for parallel SAT solving for several years. However, many SAT formulae remain too difficult to solver. As a result, exploiting distributed computing environments to reduce solving times has become a crucial research focus, inspiring the development of several software solutions and frameworks [5, 15, 23, 36]. To the best of our knowledge, existing competitive solutions lack the flexibility in distributed sharing and solving strategies that the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fige_HTML.gif framework provides for (local) multi-core environments [28].
In this work, we extend the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figf_HTML.gif framework to accommodate distributed clause sharing SAT solvers. This extension, namely https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figg_HTML.gif , allows the incorporation of various clause-sharing strategies and node topologies, resulting in a versatile framework that eases distributed SAT solvers development.
  https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figh_HTML.gif is designed as a simple, generic, and extensible platform for parallel and distributed SAT solvers. Its primary goal is to empower researchers to easily test and develop new sharing and parallelization strategies without needing to master the complexities of distributed programming for SAT solving. While it is not intended to outperform existing solvers, https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figi_HTML.gif serves as a research tool capable of replicating their performance, while providing a versatile environment for rapid prototyping and experimentation with innovative strategies.
This paper is organized as follows: Section 2 introduces preliminary concepts, followed by a review of related work in Section 3. Section 4 details the architecture of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figj_HTML.gif and its new extension, https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figk_HTML.gif . In Section 5, we assess the new architecture with some implemented sharing strategies. Finally, we conclude with a discussion of potential future works in Section 6.

2 Sequential, Parallel and Distributed SAT solving

The Conflict-Driven Clause Learning (CDCL) [38] algorithm has emerged as the predominant method in SAT solving, consistently delivering superior performance across a wide spectrum of SAT challenges. This algorithm has benefited from various enhancements, encompassing sophisticated heuristics [33], advanced pre-processing and in-processing strategies [11], and efficient data structures [31].
Parallelizing CDCL poses significant challenges. State-of-the-art methods primarily involve running multiple instances of the algorithm concurrently. This is typically achieved by altering initial variable assignments [19, 24] or by diversifying the heuristics and configurations within a portfolio of sequential solvers [22]. The portfolio approach when combined with clause-sharing mechanisms [22], has proven to be the most effective for parallelizing CDCL solvers. Here, clauses learned by one solver are shared with others, reducing redundant mistakes and utilizing collective knowledge to speed up the solving process. According to the recent work [37], clause sharing is the primary factor in the success of distributed SAT solving, particularly when scaling to hundreds of solvers. While solver diversification remains beneficial, its impact becomes secondary compared to the collaborative learning achieved through clause sharing.
In distributed computing, we handle multiple computational units (or nodes) connected through a network. Implementing a distributed SAT solver based on the portfolio approach requires strategic diversification of CDCL solvers across nodes, ensuring effective clause sharing, both within nodes (intra-node) and between nodes (inter-node). It is crucial to mitigate communication latency and address the challenges posed by the asynchronous nature of efficient distributed systems, such as distinguishing between a node’s failure and its delayed response.
Challenges of Distributed SAT Solving: Scaling up a parallel SAT solver to distributed systems presents two main challenges:
  • Technical limitations that increase the difficulty of certain aspects of development, such as deployment, termination detection and fault management.
  • Adapting parallelization and clause sharing to efficiently utilize all available computing power.
Thus, developing distributed SAT solvers presents significant challenges that could be addressed through specialized tools abstracting away technical complexities. The key is creating a flexible, modular architecture that enables both simplicity and extensibility. This modularity allows users to easily locate and modify specific behaviors while containing feature logic within well-defined interfaces.
SAT solving can be parallelized using the divide-and-conquer strategy [19]. One of the pioneering efforts in distributed SAT solving, PSATO [42] based on the sequential solver SATO [43], adopts this strategy with a master-slave model for communication and load-balancing. GridSAT [16] follows the same idea. In this solver, a node (referred to as a “client” in the original paper) alerts the master node to divide its search tree and assigns a portion to a new node when it encounters a problem that is too challenging or anticipates a memory overflow. This new node, initiated by the master, receives a subset of the problem directly from the initiating node, facilitating problem-solving in a distributed manner. https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figl_HTML.gif  [23] advances this concept further by employing a Cube&Conquer [24] strategy for distributed SAT solving, along with an adaptable load-balancing mechanism. In Cube&Conquer, the problem is divided into thousands (or millions) of simpler sub-problems using look ahead [7, Chapter 5] techniques. Each sub-problem represents a portion of the original problem where some decisions have been pre-made, allowing CDCL solvers to focus on exploring specific parts of the search space efficiently.
At the same time, other solvers have explored the portfolio approach [22], a strategy also explored in other fields, such as in Software Verification [6]. For instance, the annual SAT competitions [17] highlight https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figm_HTML.gif  [37] as a forefront solution in modern distributed SAT solving. https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fign_HTML.gif distinguishes itself through an adaptable scheduling mechanism. It can schedule different types of jobs, such as distributed portfolio instances of parallel SAT solvers. Thus, it is proficient in handling multiple SAT problems concurrently, adaptively redistributing resources based on the real-time difficulty assessment of each task. https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figo_HTML.gif employs a distributed clause sharing solver architecture, wherein each SAT problem (job) is tackled by a coordinated group of nodes specifically allocated for it. The clause sharing strategy is to gather the globally best clauses across all the solvers of a given job.
Introduced at the 2023 SAT Competition [4], the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figp_HTML.gif framework [15] aims to simplify the construction of local parallel and distributed SAT solvers. It has demonstrated performance on par with the leading https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figq_HTML.gif system. The framework organizes computational nodes into distinct groups, each configured with a specific solver setup. For clause sharing, the version presented at the competition utilizes a circular ring architecture per group. Additionally, the framework can broadcast clauses from any given node to all others within its group using a tree-based structure.
The Parallel Instantiable SAT Solver, known as https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figr_HTML.gif  [28], is a framework designed for the instantiation of parallel SAT solvers in multi-core environments. Over the years, https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figs_HTML.gif has successfully integrated a variety of sequential solvers, including https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figt_HTML.gif  [10], https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figu_HTML.gif  [9], https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figv_HTML.gif  [8], https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figw_HTML.gif  [29], https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figx_HTML.gif  [2], and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figy_HTML.gif  [18]. It incorporates the two principal multi-threaded parallel strategies: Portfolio [22] and Divide and Conquer [19]. The adaptability and utility of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figz_HTML.gif are attributed to its straightforward architecture (see Figure 1). This has enabled the implementation and execution of diverse parallel solving strategies, making https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figaa_HTML.gif a significant tool in parallel SAT solving.
As depicted in Figure 1, the original architecture of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figab_HTML.gif meticulously outlines the interactions among the various components within a parallel SAT solver, prioritizing simplicity, modularity, and flexibility. The behaviours related to parallelization are encapsulated by a tree of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figac_HTML.gif implementations, with the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figad_HTML.gif implementations at the leaves. These https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figae_HTML.gif instances interface with sequential solvers through the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figaf_HTML.gif . This interface provides all necessary interactions for the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figag_HTML.gif to control the solving process, while the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figah_HTML.gif facilitates clause sharing among its producers and consumers. The https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figai_HTML.gif represents the thread that executes the chosen https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figaj_HTML.gif . For an in-depth explanation, please refer to [28].
Fig. 1.
The architecture of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figak_HTML.gif
The architecture of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figal_HTML.gif showed its effectiveness in instantiating parallel SAT solvers via its results in the annual SAT Competitions [17]. The simplicity and extensibility it offers permitted the construction of multiple solvers such as those in works [3941]. However, the current architecture lacks sufficient abstractions and flexibility to permit efficient and straightforward instantiation of distributed solvers with diverse clause-sharing strategies.
In the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figam_HTML.gif , https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figan_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figao_HTML.gif solvers, the logic for clause sharing is split between several entities in these solvers. For instance, filtering clauses based on size or LBD [1] value was done within the sequential solvers interaction interfaces’ export functions. To elevate this issue, we propose the new framework https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figap_HTML.gif that fixes the actual shortcomings of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figaq_HTML.gif and extend its functionalities to support distributed SAT solvers.

4 The Architecture of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figar_HTML.gif

  https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figas_HTML.gif is a new framework that enables the creation of distributed portfolios by instantiating and controlling sequential solvers across different nodes. This framework facilitates communication for clause exchange both via shared memory and message passing. In the following section, we will first discuss how the new software architecture mitigates the technical complexities of distributed systems. Then, we will explain how it simplifies the development of new sharing strategies.

4.1 Distributed Deployment In https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figat_HTML.gif

In order to manage the multiple nodes and establish communication between them, we use the Message Passing Interface ( https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figav_HTML.gif ). It proved its effectiveness in state-of-the-art distributed SAT solvers such as https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figaw_HTML.gif  [37] and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figax_HTML.gif  [32]. A big part of the deployment of the distributed environment is managed by https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figay_HTML.gif , it mainly requires a hostfile identifying the different machines to be used. After the deployment, each node gets a unique identifier, the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figaz_HTML.gif .
In https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figba_HTML.gif , we updated the main function of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbb_HTML.gif to manage the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbc_HTML.gif initialization and finalization. This function is the one responsible for launching the corresponding https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbd_HTML.gif , waiting for its completion, and stopping it if the timeout is reached. In order to ensure flexibility, we also reduced the number of global variables, allowing the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbe_HTML.gif implementations to manage the different instantiated components. Multiple working strategies can exist in parallel, each owning and managing its https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbf_HTML.gif working with its https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbg_HTML.gif . This design simplifies resource management and enhances efficiency.
Because nodes may not have local access to the SAT problem file, we implemented a formula-sharing mechanism within the mpiutils namespace. To handle large problem instances that can reach several gigabytes, we compress the numerical data using Zlib [21]. This mechanism is optional; the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbh_HTML.gif implementation can choose to use or bypass these functions as needed.
Once the distributed solver finds a solution or a timeout is reached, all its nodes must be notified. And, in a distributed setting, termination is not that evident. Thus, to levitate this hurdle we have the new main function shown in Algorithm 1 and the termination detection algorithm described in Algorithm 2.
Algorithm 1 begins by parsing the arguments to define the desired solver to instantiate (line 2), followed by initializing essential variables for termination management (lines 3-6). The thread executing this main function sleeps with a timeout on the conditional variable condGlobalEnd (line 10) after launching a https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbi_HTML.gif . When a running thread finds the answer (SAT or UNSAT), it sets globalEnding and notifies the main via condGlobalEnd and updates the variables finalResult and finalModel. In case timeout is reached, the main wakes up and sets finalResult accordingly. The https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbj_HTML.gif finalization (line 15) occurs after the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbk_HTML.gif concludes (line 14), ensuring no messages are left unprocessed. When main wakes up, it prints the model when required (lines 16-17) and exits by returning the finalResult’s value (SAT, UNSAT or TIMEOUT).
Algorithm 2 is a simple synchronization algorithm, that should be run periodically. The node with https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbm_HTML.gif \(=0\) acts as the master node and is notified by other nodes when they find a solution (line 7). This master node checks if it has found a solution (lines 10-11) and if a worker node sent a termination notification (line 13). Once the master knows whether a solution was found or not, it sends a message to all other nodes (line 15) indicating whether they should continue or stop. If the function returns true, the component executing this algorithm must wake up the node’s main function via (condGlobalEnd).
  https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbn_HTML.gif offers a rich and high-level API for the development of distributed applications. However, developing a portfolio distributed SAT solver remains complex, as it involves dealing with communication synchronization, data bufferization, and multiple threads. Our framework’s architecture hides this complexity by clearly separating the different needed behaviors in well-defined interfaces, guiding the developer in using network communication only where needed. The different aspects of the distributed solver can be changed independently. We present the interfaces of our framework in Section 4.2 with some implementation examples of sharing strategies in Section 5.1.

4.2 Clause Sharing in https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbo_HTML.gif

Fig. 2.
The new architecture of Painless
Clause sharing in distributed SAT solvers can be managed in two main ways: using a single sharing strategy for both inter-node (global) and intra-node (local) sharing, or employing separate strategies for each scope. We want our framework to support both approaches, but the current architecture of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbp_HTML.gif (Figure 1) does not accommodate the latter, limiting its flexibility. For example, to enable collaboration between global and local strategies, the global strategy must act as both a producer and a consumer within the local strategy, requiring it to implement the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbq_HTML.gif interface from Figure 1. This highlights a deficiency in the current architecture’s ability to support more generic sharing strategies.
To address these limitations and support more flexible sharing mechanisms, we propose the new architecture depicted in Figure 2. This revised structure establishes a coherent hierarchy and interaction schema for both locally parallel and distributed SAT solvers, enabling more robust clause sharing mechanisms. A key advantage of this new architecture is its ability to mix inter-node and intra-node strategies without the need to implement entirely new strategies that handle both aspects. This modular approach allows for greater flexibility and efficiency, as developers can combine existing strategies in various ways without having to implement all possible combinations.
The proposed architecture introduces three new interfaces for sharing: https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbr_HTML.gif , https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbs_HTML.gif , and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbt_HTML.gif . Additionally, we have updated the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbu_HTML.gif worker and the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbv_HTML.gif interface. Furthermore, the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbw_HTML.gif has been made more abstract by adding specialized interfaces: https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbx_HTML.gif , and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figby_HTML.gif .
Table 1.
Combined Abstract Interfaces for https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figbz_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figca_HTML.gif . (+) Public method, (#) Protected method or member, (italics) Virtual method, (override) redefinition of virtual methods.
https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Tab1_HTML.png
In the new architecture, clause importing and exporting functionalities have been transferred from https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcc_HTML.gif to the new https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcd_HTML.gif interface, which is inherited by both https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figce_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcf_HTML.gif . The primary methods of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcg_HTML.gif , detailed in Table 1, offer flexibility for derived classes, easing the implementation of customized clause filtering and storage strategies.
The https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figch_HTML.gif maintains a dynamic list of clients (subscribers) to which it exports clauses. This list can be safely updated at any time using the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figci_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcj_HTML.gif methods, ensuring thread-safe operations in concurrent environments. The export process is facilitated by two key methods: https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figck_HTML.gif for individual clauses and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcl_HTML.gif for bulk exports. Both methods safely access the current client list, preventing race conditions during clause export.
These methods transmit clauses to each client using the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcm_HTML.gif function, which primarily calls the client’s public https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcn_HTML.gif method. This adheres to a key design principle: the producer does not judge the usefulness of a clause; instead, this responsibility is left to the consumer. By invoking the client’s https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figco_HTML.gif method, we ensure that each client can implement its own sharing logic and clause filtering.
As illustrated in Figure 2, both https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcp_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcq_HTML.gif maintain dedicated https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcr_HTML.gif instances to store imported clauses. Each https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcs_HTML.gif implementation applies specific storage policies that may discard clauses based on memory constraints or other criteria, effectively adding a second filtering layer after https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figct_HTML.gif ’s initial filter. The https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcu_HTML.gif additionally maintains a list of producers from which it obtains clauses. Two key methods manage producer interactions:
  • https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcv_HTML.gif : Initializes the necessary data structures for a new producer.
  • https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcw_HTML.gif : Adds the strategy as a client in the producer’s client list.
This two-step process ensures proper initialization order, mitigating potential concurrency issues.
In this revised architecture, the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcx_HTML.gif invokes two essential methods defined by the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcy_HTML.gif : https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figcz_HTML.gif , which handles the periodic selection and export of clauses to the strategy’s clients, and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figda_HTML.gif , which determines the wait time for the executor between two consecutive sharing operations. Additionally, the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdb_HTML.gif can now manage multiple https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdc_HTML.gif instances, invoking their https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdd_HTML.gif methods in a round-robin fashion.
For inter-node sharing strategies, we introduced the specialized https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figde_HTML.gif interface, which adds distributed initialization and finalization through two additional methods: https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdf_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdg_HTML.gif . Its https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdh_HTML.gif method incorporates a termination-detection algorithm for the distributed solver, as detailed in Algorithm 2. While implementations can use this algorithm, they are free to develop custom approaches. Developers can also bypass the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdi_HTML.gif interface entirely and directly implement the new https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdj_HTML.gif interface, enabling highly customized sharing strategies.
It is important to note that a sharing strategy may not always be necessary; in some cases, simply connecting different solvers via the client list is enough, eliminating the need for an additional thread to manage the sharing process.
These enhancements streamline the handling of challenging aspects in distributed environments, such as deployment and termination detection. The framework’s simplicity and extensibility facilitate rapid development of new distributed portfolio solvers, while its modular design enables researchers to conduct fair comparisons of different heuristics by maintaining consistency across other solver components.

5 Assessing The New Distributed https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdk_HTML.gif Framework

To demonstrate the scientific relevance of our framework, we present a study of various parallelization and sharing strategies inspired by state-of-the-art distributed SAT solvers, namely https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdl_HTML.gif  [37] and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdm_HTML.gif  [32]. Additionally, we compare novel combinations of global and local sharing strategies that have not been previously explored.

5.1 Implementations of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdn_HTML.gif

We have developed three distributed sharing strategies for evaluating https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdo_HTML.gif : https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdp_HTML.gif , https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdq_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdr_HTML.gif . They all serialize the clauses to be shared along with their Literal Block Distance (LBD) values [1]1, enabling the receiving node’s consumer to assess the usefulness of the received clauses. However, the LBD value makes sense only locally to the solver that produced the clause, sharing it may help, but it has not that much importance [37, Section 5.1]. The size of the serializing buffer is configurable, which is crucial for controlling latency in inter-node communication.
  https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figds_HTML.gif  implements a flexible approach to clause sharing among distributed SAT solver instances. It utilizes user-defined subscription and subscriber lists to establish communication patterns between nodes, allowing for customizable topologies including ring structures. The strategy employs non-blocking sends (MPI_Isend) to distribute clauses to subscribers and waits for incoming clauses by probing (MPI_Probe), using dynamic receive buffers to efficiently collect clauses from subscriptions. To optimize sharing, the implementation incorporates two Bloom filters [12]: one to prevent resending previously shared clauses, and another to avoid deserializing duplicate received clauses. We judged receiving duplicates of locally produced clauses from a subscription not harmful to the local solvers.
  https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdt_HTML.gif  implements a straightforward strategy in which, during each round, every node broadcasts its clauses to all other nodes (as in [5]. The MPI_Allgather function serves as a synchronization point for all n participating nodes in the distributed system. To expedite the sharing process, we use a uniform static buffer size s across all nodes, padding with zeros if necessary, instead of pre-sending buffer sizes using MPI_Allgatherv. After collecting all buffers, we merge them into a single unified buffer, ensuring that each node ends the sharing round with an identical buffer of size \(n \times s\). A Bloom filter is employed to prevent redundant serialization and deserialization of clauses that have already been transmitted [5]. Upon deserialization, the clauses are immediately exported to the strategy’s clients.
Fig. 3.
The two phases of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdu_HTML.gif strategy
  https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdv_HTML.gif  strategy uses a binary tree topology for message passing, inspired by the sharing phase in https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdw_HTML.gif  [37]. Each sharing round consists of two phases: clause merge and clause filtering. Communication is handled using MPI_Send, MPI_Probe, and MPI_Recv. The https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdx_HTML.gif method filters clauses based on their size and LBD values against predefined maxSize and maxLBD before storing them in the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdy_HTML.gif .
In the first phase (see  Figure 3a), nodes merge clause buffers received from their children with their own. Clauses are ordered by size, using LBD for tie-breaking, allowing an ordered merge to select the best clauses. The buffer size l(u) at each node is limited, except for clauses smaller than freeSize, which are not counted when serialized to the buffer [37]:
$$l(u) = \beta _{\infty } - (\beta _{\infty } - \beta _{0}) \cdot e^{\frac{\beta _{0}}{\beta _{0}-\beta _{\infty }}\cdot (u-1)}$$
where \(\beta _{\infty }\) is the maximum buffer size, \(\beta _{0}\) is the minimum buffer size, and u is the number of merged buffers so far. Each node passes its value of u to its parent via the clause buffer.
The root node’s merged buffer contains the best clauses of the sharing round. This buffer is then broadcast to all nodes via the binary tree, with each node sending the buffer to its children.
In the second phase (see Figure 3b), each node generates a bit vector indicating which clauses were self-produced and shared in the previous z rounds. A custom distributed exact filter [37] detects duplicates, allowing clauses to be reshared after sufficient time. The bit vectors are combined via an OR operation up to the root and then broadcast to all nodes. Using the merged bit vector, nodes determine which clauses to export to their local clients.
Although the filter phase can lead to some wasted buffer space, a compensation mechanism dynamically adjusts the buffer size in future sharing rounds to mitigate this issue [37].
The first strategy developed was https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figdz_HTML.gif , consisting of 192 lines of code (LoC) in its .cpp file. The https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figea_HTML.gif file contains 196 LoC, while https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figeb_HTML.gif is larger at 728 LoC. Since initialization, serialization, and deserialization processes are consistent across all strategies, both https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figec_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figed_HTML.gif inherit approximately 80 LoC from https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figee_HTML.gif . The exact filter methods, adding another 83 LoC, are now integrated into the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figef_HTML.gif class, as there is currently no separate filter interface.

5.2 Portfolio implementations of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figeg_HTML.gif

To evaluate distributed portfolio solvers, we require implementations of: https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figeh_HTML.gif to solve formulas, https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figei_HTML.gif to enforce the portfolio strategy, and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figej_HTML.gif for clause management.
  https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figek_HTML.gif offers multiple https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figel_HTML.gif implementations, including https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figem_HTML.gif  [9], https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figen_HTML.gif  [10], https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figeo_HTML.gif  [34], https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figep_HTML.gif  [13], https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figeq_HTML.gif Class [8], https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figer_HTML.gif  [29], https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figes_HTML.gif  [18], and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/652619_1_En_3_Figet_HTML.gif  [3]. For https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figeu_HTML.gif , notable implementations include https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figev_HTML.gif , which respects a certain literal capacity and manages space for better clauses [37]; https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figew_HTML.gif , designed to manage buffers for individual entities without requiring a lock mechanism; and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figex_HTML.gif , which organizes clauses based on their size.
There is also an existing implementation of the intra-node sharing strategy https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figey_HTML.gif  [5]. It filters produced clauses based on their LBD: it dynamically adjusts the solver’s LBD threshold to maintain optimal sharing if a solver shares too few or too many clauses.
We implement two portfolio strategies using the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figez_HTML.gif interface: https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfa_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfb_HTML.gif . Both leverage the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfc_HTML.gif variable to diversify solvers via unique globalIds. The https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfd_HTML.gif manages a general ID and type ID, enabling complete diversification.
  https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfe_HTML.gif offers a flexible, general-purpose implementation supporting both CDCL and local search solvers. It features local and global sharing mechanisms, a mallob mode replicating the sharing strategy from [37], and easy customization of solver types and strategies.
  https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figff_HTML.gif is a specialized portfolio based on https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfg_HTML.gif  [32]. It executes pre-processing techniques such as Unit Propagation, Equivalent-literal Substitution, and Resolution Checking [14] in a leader node. Then, it divides all nodes into five groups: SAT, UNSAT, MAPLE, LGL, and DEFAULT. By following the implementation of [32], the group sizes are calculated based on the total number of nodes n, and are: \(\lfloor \frac{n}{8} \rfloor \), \(\lfloor \frac{n}{4} \rfloor \), \(\lfloor \frac{n}{8} \rfloor \), 1, \(n - 2\cdot \lfloor \frac{n}{8} \rfloor - \lfloor \frac{n}{4} \rfloor - 1\), respectively.

5.3 Evaluated Solvers

In Section 5.4 we evaluate different solvers, with different sharing strategies. The first two solvers emulate state-of-the-art solvers, while the two last explore new solvers implementing original sharing strategies.
  https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfh_HTML.gif : is an instantiation of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfi_HTML.gif that emulates the setup of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfj_HTML.gif  [37]. The solvers set includes https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfk_HTML.gif (v3.1.1) and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfl_HTML.gif (v1.9.1)2. For the sharing strategy, all solvers act as both producers and clients of the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfp_HTML.gif strategy. It is configured in concordance to the one used by https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfq_HTML.gif in the 2024 International SAT Competition:
$$\beta _{0} = \frac{400\cdot \textit{solverCount}}{roundsPerSecond}, \textit{with roundsPerSecond} = 2$$
The freeSize parameter is set to 1 for unlimited unit clause sharing, the maximum clause size maxSize and LBD value maxLBD are both set to 60. Lastly, the clause database https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfr_HTML.gif is employed, as outlined in [37] with the maximum size set to maxSize and the capacity defined as \(10 * \beta _{0}\). \(\beta _{\infty }\) is set to 250000, while z is defined as 15 seconds, equivalent to 30 rounds. z represents the number of rounds during which a clause is remembered as being shared. If a clause is reshared after this period, it won’t be filtered as redundant. However, following https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfs_HTML.gif terminology, we used an option in seconds.
Fig. 4.
Ring topology of the DEFAULT group with 3 nodes in https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figft_HTML.gif
  https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfu_HTML.gif : is an instantiation of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfv_HTML.gif that emulates https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfw_HTML.gif  [32]. The SAT and UNSAT groups use https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfx_HTML.gif (v1.0.3) solvers configured for their respective instance types. The MAPLE group uses https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfy_HTML.gif solvers, and the LGL group uses https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfz_HTML.gif (v1.0.0) solvers. Finally, the DEFAULT group uses https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figga_HTML.gif solvers with no specialization. For the sharing strategy, https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgb_HTML.gif requires sharing clauses from local solvers to the next neighbour, exporting received clauses from the previous neighbour to local solvers and to the next neighbour. Local solvers export clauses according to the hordeSat strategy [5]. To emulate this behaviour, we use a https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgc_HTML.gif instance having all solvers as clients and producers, and an instance of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgd_HTML.gif configured for in-group ring sharing as a client (See  Figure 4). To allow solvers receiving clauses from the previous neighbour, they subscribe to the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figge_HTML.gif .
The https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgf_HTML.gif sends clauses obtained from the solvers via the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgg_HTML.gif strategy to the next neighbour and exports received clauses from the previous neighbour to the solvers. To resend clauses received from the previous neighbour to the next neighbour, the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgh_HTML.gif needs to import clauses that it exports to its clients; thus, it adds itself to its list of clients. Finally, following the implementation of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgi_HTML.gif , the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgj_HTML.gif strategy uses an unlimited buffer size and a single https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgk_HTML.gif instance executes both strategies.
  https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgl_HTML.gif : is an instantiation of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgm_HTML.gif with https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgn_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgo_HTML.gif solvers, all connected to https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgp_HTML.gif . A https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgq_HTML.gif instance is used for inter-node sharing with the same parameters as https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgr_HTML.gif . It is solely connected to https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgs_HTML.gif , and both of them run on different threads.
  https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgt_HTML.gif : is an instantiation of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgu_HTML.gif with https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgv_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgw_HTML.gif solvers, all connected to https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgx_HTML.gif . The https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgy_HTML.gif is used for inter-node sharing, solely connected to https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figgz_HTML.gif . The https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figha_HTML.gif buffer size is set to \(1500\cdot \textit{solverCount}\) and each sharing strategy is executed by a separate https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighb_HTML.gif thread.
The initial LBD value in https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighc_HTML.gif is set to 2, with each producer having an upper limit of 1500 literals per sharing round. https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighd_HTML.gif uses https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighe_HTML.gif for concurrency management, while each solver uses https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighf_HTML.gif to store the imported clauses.

5.4 Evaluation

Table 2.
PAR2 and number of resolved instances on GRID5000. The winner and best values in each category are shown in bold font.
https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Tab2_HTML.png
To assess the stability and performance of our new architecture, we used the 400 instances from the SAT’2024 competition, each with a timeout limit of 500 seconds. The tests were conducted on nodes in the “paravance” cluster of the Grid5000 infrastructure. Each node is equipped with two Intel Xeon E5-2630 v3 processors, featuring 8 physical cores each, and 128 GB of RAM, operating under a Non-Uniform Memory Access (NUMA) architecture with each CPU paired with 64 GB of RAM. All evaluations were done using 25 machines, thus having 50 CPUs, totaling 400 cores. All tested solvers use OpenMPI [20], and for each CPU an MPI process is instantiated.
To evaluate our emulations of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighh_HTML.gif 3 and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighi_HTML.gif 4, we ran the versions they submitted to the 2024 SAT Competition. https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighj_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighk_HTML.gif are configured as described earlier Section 5.3, please note that https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighl_HTML.gif was used in its mono mode, i.e. only one SAT problem is solved at a time. With 400 cores, the portfolios consist of multiple sequential solvers: 200 https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighm_HTML.gif and 200 https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighn_HTML.gif . https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figho_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighp_HTML.gif both follow a group distribution strategy (Section 5.2): 6 nodes with SAT-specialized https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighq_HTML.gif (48 cores), 12 nodes with UNSAT-specialized https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighr_HTML.gif (96 cores), 6 nodes with https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighs_HTML.gif (48 cores), 1 node with https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fight_HTML.gif (8 cores), and 25 nodes with general-purpose https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighu_HTML.gif (200 cores).
The version of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighv_HTML.gif used to instantiate these solvers is available on GitHub5. The results of the evaluation are presented in Table 2, with the top row of the two first groups showing their relative Virtual Best Solver (VBS).
The solvers are compared using two metrics: the number of solved SAT problems and their PAR2 score. The PAR2 score penalizes unsolved instances by counting them as 2 times the timeout value. While traditionally PAR2 was calculated as a sum, in recent SAT competitions it is reported as an average on the number of benchmark instances. Additionally, to quantify how closely a solver’s S execution times \(S_{time}(i)\) approaches the ones of its relative VBS across the n tested instances, we use the Symmetric Mean Absolute Percentage Error (SMAPE) [27], defined as:
$$\begin{aligned} {\text {SMAPE-VBS}}(S) = \frac{100}{n} * \sum _{i=1}^n{\frac{|S_{time}(i) - VBS _{time}(i)| *2 }{S_{time}(i) + VBS _{time}(i)}} \end{aligned}$$
Fig. 5.
Execution time comparisons of the emulations
Table 2 tells us that the best overall solver is https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighw_HTML.gif , which solves the most instances. This is quite logical, since it uses three different state-of-the-art solvers: https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighx_HTML.gif , https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighy_HTML.gif , and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Fighz_HTML.gif , each with different pre-processing and in-processing techniques, enabling it to solve different types of formulae. After it, https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figia_HTML.gif comes second. Even though it only uses https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figib_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figic_HTML.gif , it achieves excellent performance thanks to its clever clause sharing, showing the importance of efficient clause sharing in solving SAT problems. https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figid_HTML.gif comes very close to https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figie_HTML.gif , with a single instance difference in the overall score, but the UNSAT column shows us that it struggles to match the performance of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figif_HTML.gif in UNSAT instances. The two solvers https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figig_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figih_HTML.gif perform worse than https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figii_HTML.gif , likely due to their more aggressive clause sharing. The https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figij_HTML.gif solver performs the worst; however, it was able to solve instances that were not solved by the best solver https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figik_HTML.gif , as shown by their relative VBS.
When comparing https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figil_HTML.gif with our emulation ( https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figim_HTML.gif ), the scatter plots in Figure 5b show that our emulation solves nearly the same UNSAT instances as https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figin_HTML.gif , with improved performance on SAT instances (Figure 5a). It is worth noting that even if https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figio_HTML.gif achieves better results than https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figip_HTML.gif , its resolution times are a little bit behind the best ones, as it is shown by the new metric https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figiq_HTML.gif in Table 2. They are still close in performance, and thus we can say that we were able to emulate the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figir_HTML.gif solver successfully with a more complex software architecture.
Fig. 6.
Execution times on UNSAT instances comparison with https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figis_HTML.gif
When comparing https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figit_HTML.gif to our emulation ( https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figiu_HTML.gif ), we observe that our solver is a bit less efficient on UNSAT instances (Figure 5d). However, as illustrated in Figure 5c, our solver resolves many SAT instances more efficiently. The https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figiv_HTML.gif values in Table 2 confirms the current shortcomings, since the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figiw_HTML.gif solver is quite far from its relative VBS. These observations suggest that the current implementation may suffer from limited diversification or sub-optimal clause sharing.
In https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figix_HTML.gif and https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figiy_HTML.gif , we implement more aggressive clause sharing, utilizing the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figiz_HTML.gif strategy for local sharing and the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figja_HTML.gif or https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figjb_HTML.gif strategy for global sharing. Although their PAR2 scores are higher than that of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figjc_HTML.gif , Figure 6b and Figure 6a show that these configurations are able to solve some UNSAT instances that https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figjd_HTML.gif could not. The increased average solving time is likely a consequence of the aggressive clause sharing, which overloads the solvers with excessive clauses, thereby slowing down unit propagation. However, https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figje_HTML.gif with its more balanced global sharing via https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figjf_HTML.gif allows to achieve better overall performance.
In summary, these experiments demonstrate that the solvers instantiated from the https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figjg_HTML.gif framework can perform on par with state-of-the-art solvers. Our results show that https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figjh_HTML.gif can successfully emulate existing solvers using different clause-sharing strategies with minimal performance loss. This highlights the framework’s ability to offer the flexibility, modularity, and generality for which it was designed. Ultimately, https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figji_HTML.gif simplifies the development of new distributed portfolio SAT solvers, making it easier to experiment with novel sharing strategies.

6 Conclusion

Taking advantage of massively parallel hardware is essential for addressing hard SAT problems. Current tools offer excellent performance and scalability on distributed systems for portfolio strategies but lack flexibility in their inter-node communication strategies. We propose a new extension for https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figjj_HTML.gif , namely https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figjk_HTML.gif , enabling clause sharing in a distributed system. This extension makes the framework capable of instantiating distributed portfolio solvers using various clause-sharing strategies.
An initial assessment shows that the new https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figjl_HTML.gif architecture allows for the construction of distributed portfolios, offering performance close to that of state-of-the-art distributed SAT solvers. The modular and flexible nature of this new architecture simplifies experimenting with different sharing strategies.
The current architecture lacks a reliable mechanism to detect errors, making it vulnerable to node failures. Thus, to improve robustness, we aim to refine our strategies, introduce new ones like divide-and-conquer, and develop fault-tolerant algorithms that simplify the management of distributed workflows. In addition to this, we will work on optimizing the performance of the various existing components to further enhance the overall efficiency of the system.

Acknowledgements

The experiments presented in this paper were carried out using the Grid’5000 testbed, supported by a scientific interest group hosted by Inria and including CNRS, RENATER, and several Universities as well as other organizations (https://​www.​grid5000.​fr).
Open Access This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License (http://​creativecommons.​org/​licenses/​by/​4.​0/​), which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license and indicate if changes were made.
The images or other third party material in this chapter are included in the chapter's Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter's Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.
Fußnoten
1
The LBD value is a heuristic used to estimate the importance of a clause, for more details you can refer to [1].
 
2
The integration of https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfm_HTML.gif wasn’t used due to a bug on our side when sharing clauses with other solvers (this has been fixed). However, it was used in https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfn_HTML.gif because https://static-content.springer.com/image/chp%3A10.1007%2F978-3-031-90653-4_3/MediaObjects/652619_1_En_3_Figfo_HTML.gif solvers shared clauses only among themselves.
 
Literatur
1.
Zurück zum Zitat Audemard, G., Simon, L.: Predicting learnt clauses quality in modern SAT solvers. In: IJCAI. vol. 9, pp. 399–404 (2009) Audemard, G., Simon, L.: Predicting learnt clauses quality in modern SAT solvers. In: IJCAI. vol. 9, pp. 399–404 (2009)
2.
Zurück zum Zitat Audemard, G., Simon, L.: Glucose in the SAT 2014 competition. SAT COMPETITION 2014 p. 31 (2014) Audemard, G., Simon, L.: Glucose in the SAT 2014 competition. SAT COMPETITION 2014 p. 31 (2014)
3.
Zurück zum Zitat Audemard, G., Simon, L.: Lazy clause exchange policy for parallel SAT solvers. In: int. conf. on Theory and Applications of Satisfiability Testing. pp. 197–205. Springer (2014) Audemard, G., Simon, L.: Lazy clause exchange policy for parallel SAT solvers. In: int. conf. on Theory and Applications of Satisfiability Testing. pp. 197–205. Springer (2014)
4.
Zurück zum Zitat Balyo, T., Heule, M., Iser, M., Järvisalo, M., Suda, M. (eds.): Proceedings of SAT Competition 2023: Solver, Benchmark and Proof Checker Descriptions. Department of Computer Science Series of Publications B, Department of Computer Science, University of Helsinki, Finland (2023) Balyo, T., Heule, M., Iser, M., Järvisalo, M., Suda, M. (eds.): Proceedings of SAT Competition 2023: Solver, Benchmark and Proof Checker Descriptions. Department of Computer Science Series of Publications B, Department of Computer Science, University of Helsinki, Finland (2023)
5.
Zurück zum Zitat Balyo, T., Sanders, P., Sinz, C.: Hordesat: A massively parallel portfolio SAT solver. In: Proceedings of the 18th International Conference on Theory and Applications of Satisfiability Testing (SAT). pp. 156–172. Springer (2015) Balyo, T., Sanders, P., Sinz, C.: Hordesat: A massively parallel portfolio SAT solver. In: Proceedings of the 18th International Conference on Theory and Applications of Satisfiability Testing (SAT). pp. 156–172. Springer (2015)
6.
Zurück zum Zitat Beyer, D., Kanav, S., Richter, C.: Construction of verifier combinations based on off-the-shelf verifiers. In: Johnsen, E.B., Wimmer, M. (eds.) Fundamental Approaches to Software Engineering. pp. 49–70. Springer International Publishing, Cham (2022) Beyer, D., Kanav, S., Richter, C.: Construction of verifier combinations based on off-the-shelf verifiers. In: Johnsen, E.B., Wimmer, M. (eds.) Fundamental Approaches to Software Engineering. pp. 49–70. Springer International Publishing, Cham (2022)
7.
Zurück zum Zitat Biere, A., van Maaren, H.: Handbook of satisfiability: Second edition. IOS Press, Amsterdam, NY (May 2021) Biere, A., van Maaren, H.: Handbook of satisfiability: Second edition. IOS Press, Amsterdam, NY (May 2021)
8.
Zurück zum Zitat Biere, A.: Splatz, lingeling, plingeling, treengeling, yalsat entering the SAT competition 2016. SAT COMPETITION 2016 p. 44 (2016) Biere, A.: Splatz, lingeling, plingeling, treengeling, yalsat entering the SAT competition 2016. SAT COMPETITION 2016 p. 44 (2016)
9.
Zurück zum Zitat Biere, A.: CaDiCaL, Lingeling, Plingeling, Treengeling, YalSAT Entering the SAT Competition 2017. In: Balyo, T., Heule, M., Järvisalo, M. (eds.) Proc. of SAT Competition 2017 – Solver and Benchmark Descriptions. Department of Computer Science Series of Publications B, vol. B-2017-1, pp. 14–15. University of Helsinki (2017) Biere, A.: CaDiCaL, Lingeling, Plingeling, Treengeling, YalSAT Entering the SAT Competition 2017. In: Balyo, T., Heule, M., Järvisalo, M. (eds.) Proc. of SAT Competition 2017 – Solver and Benchmark Descriptions. Department of Computer Science Series of Publications B, vol. B-2017-1, pp. 14–15. University of Helsinki (2017)
10.
Zurück zum Zitat Biere, A., Fazekas, K., Fleury, M., Heisinger, M.: CaDiCaL, Kissat, Paracooba, Plingeling and Treengeling entering the SAT Competition 2020. In: Balyo, T., Froleyks, N., Heule, M., Iser, M., Järvisalo, M., Suda, M. (eds.) Proc. of SAT Competition 2020 – Solver and Benchmark Descriptions. Department of Computer Science Report Series B, vol. B-2020-1, pp. 51–53. University of Helsinki (2020) Biere, A., Fazekas, K., Fleury, M., Heisinger, M.: CaDiCaL, Kissat, Paracooba, Plingeling and Treengeling entering the SAT Competition 2020. In: Balyo, T., Froleyks, N., Heule, M., Iser, M., Järvisalo, M., Suda, M. (eds.) Proc. of SAT Competition 2020 – Solver and Benchmark Descriptions. Department of Computer Science Report Series B, vol. B-2020-1, pp. 51–53. University of Helsinki (2020)
11.
Zurück zum Zitat Biere, A., Järvisalo, M., Kiesl, B.: Preprocessing in SAT solving. In: Handbook of Satisfiability (2021) Biere, A., Järvisalo, M., Kiesl, B.: Preprocessing in SAT solving. In: Handbook of Satisfiability (2021)
12.
Zurück zum Zitat Bloom, B.H.: Space/time trade-offs in hash coding with allowable errors. Communications of the ACM 13(7), 422–426 (1970) Bloom, B.H.: Space/time trade-offs in hash coding with allowable errors. Communications of the ACM 13(7), 422–426 (1970)
13.
Zurück zum Zitat Chen, Z., Zhang, X., Cai, S., Lu, P.: Cdcl solvers with improved local search cooperation and pre-processing. In: Balyo, T., Heule, M., Iser, M., Järvisalo, M., Suda, M. (eds.) Proceedings of SAT Competition 2022: Solver and Benchmark Descriptions. Department of Computer Science Series of Publications B, Department of Computer Science, University of Helsinki, Finland (2022) Chen, Z., Zhang, X., Cai, S., Lu, P.: Cdcl solvers with improved local search cooperation and pre-processing. In: Balyo, T., Heule, M., Iser, M., Järvisalo, M., Suda, M. (eds.) Proceedings of SAT Competition 2022: Solver and Benchmark Descriptions. Department of Computer Science Series of Publications B, Department of Computer Science, University of Helsinki, Finland (2022)
14.
Zurück zum Zitat Chen, Z., Zhang, X., Cai, S., Lu, P.: Cdcl solvers with improved local search cooperation and pre-processing. In: SAT COMPETITION 2022 Proceedings. pp. 37,38 (2022) Chen, Z., Zhang, X., Cai, S., Lu, P.: Cdcl solvers with improved local search cooperation and pre-processing. In: SAT COMPETITION 2022 Proceedings. pp. 37,38 (2022)
15.
Zurück zum Zitat Chen, Z., Zhang, X., Qian, Y., Cai, S.: Prs: A new parallel/distributed framework for SAT. In: SAT COMPETITION 2023 Proceedings. pp. 39,40 (2023) Chen, Z., Zhang, X., Qian, Y., Cai, S.: Prs: A new parallel/distributed framework for SAT. In: SAT COMPETITION 2023 Proceedings. pp. 39,40 (2023)
16.
Zurück zum Zitat Chrabakh, W., Wolski, R.: Gridsat: A chaff-based distributed SAT solver for the grid. ACM/IEEE SC 2003 Conference (SC’03) pp. 37–37 (2003) Chrabakh, W., Wolski, R.: Gridsat: A chaff-based distributed SAT solver for the grid. ACM/IEEE SC 2003 Conference (SC’03) pp. 37–37 (2003)
18.
Zurück zum Zitat Eén, N., Sörensson, N.: An extensible SAT-solver. In: Proceedings of the 6th International Conference on Theory and Applications of Satisfiability Testing (SAT). pp. 502–518. Springer (2003) Eén, N., Sörensson, N.: An extensible SAT-solver. In: Proceedings of the 6th International Conference on Theory and Applications of Satisfiability Testing (SAT). pp. 502–518. Springer (2003)
19.
Zurück zum Zitat Frioux, L.L., Baarir, S., Sopena, J., Kordon, F.: Modular and efficient divide-and-conquer SAT solver on top of the painless framework. In: International Conference on Tools and Algorithms for Construction and Analysis of Systems (2019) Frioux, L.L., Baarir, S., Sopena, J., Kordon, F.: Modular and efficient divide-and-conquer SAT solver on top of the painless framework. In: International Conference on Tools and Algorithms for Construction and Analysis of Systems (2019)
20.
Zurück zum Zitat Gabriel, E., Fagg, G.E., Bosilca, G., Angskun, T., Dongarra, J.J., Squyres, J.M., Sahay, V., Kambadur, P., Barrett, B., Lumsdaine, A., Castain, R.H., Daniel, D.J., Graham, R.L., Woodall, T.S.: Open MPI: Goals, concept, and design of a next generation MPI implementation. In: Proceedings, 11th European PVM/MPI Users’ Group Meeting. pp. 97–104. Budapest, Hungary (2004) Gabriel, E., Fagg, G.E., Bosilca, G., Angskun, T., Dongarra, J.J., Squyres, J.M., Sahay, V., Kambadur, P., Barrett, B., Lumsdaine, A., Castain, R.H., Daniel, D.J., Graham, R.L., Woodall, T.S.: Open MPI: Goals, concept, and design of a next generation MPI implementation. In: Proceedings, 11th European PVM/MPI Users’ Group Meeting. pp. 97–104. Budapest, Hungary (2004)
22.
Zurück zum Zitat Hamadi, Y., Jabbour, S., Sais, L.: Manysat: a parallel SAT solver. Journal on Satisfiability, Boolean Modeling and Computation 6, 245–262 (2009) Hamadi, Y., Jabbour, S., Sais, L.: Manysat: a parallel SAT solver. Journal on Satisfiability, Boolean Modeling and Computation 6, 245–262 (2009)
23.
Zurück zum Zitat Heisinger, M., Fleury, M., Biere, A.: Distributed cube and conquer with paracooba. In: SAT. Lecture Notes in Computer Science, vol. 12178, pp. 114–122. Springer (2020) Heisinger, M., Fleury, M., Biere, A.: Distributed cube and conquer with paracooba. In: SAT. Lecture Notes in Computer Science, vol. 12178, pp. 114–122. Springer (2020)
24.
Zurück zum Zitat Heule, M.J., Kullmann, O., Wieringa, S., Biere, A.: Cube and conquer: Guiding cdcl SAT solvers by lookaheads. In: Haifa Verification Conference. pp. 50–65. Springer (2011) Heule, M.J., Kullmann, O., Wieringa, S., Biere, A.: Cube and conquer: Guiding cdcl SAT solvers by lookaheads. In: Haifa Verification Conference. pp. 50–65. Springer (2011)
25.
Zurück zum Zitat Hu, K., Chu, Z.: An efficient circuit-based SAT solver and its application in logic equivalence checking. Microelectronics Journal 142, 106005 (2023) Hu, K., Chu, Z.: An efficient circuit-based SAT solver and its application in logic equivalence checking. Microelectronics Journal 142, 106005 (2023)
26.
Zurück zum Zitat Kleine Büning, M., Balyo, T., Sinz, C.: Using dimspec for bounded and unbounded software model checking. In: Ait-Ameur, Y., Qin, S. (eds.) Formal Methods and Software Engineering. pp. 19–35. Springer International Publishing, Cham (2019) Kleine Büning, M., Balyo, T., Sinz, C.: Using dimspec for bounded and unbounded software model checking. In: Ait-Ameur, Y., Qin, S. (eds.) Formal Methods and Software Engineering. pp. 19–35. Springer International Publishing, Cham (2019)
27.
Zurück zum Zitat Kreinovich, V., Nguyen, H.T., Ouncharoen, R.: How to estimate forecasting quality: A system-motivated derivation of symmetric mean absolute percentage error (smape) and other similar characteristics (2014) Kreinovich, V., Nguyen, H.T., Ouncharoen, R.: How to estimate forecasting quality: A system-motivated derivation of symmetric mean absolute percentage error (smape) and other similar characteristics (2014)
28.
Zurück zum Zitat Le Frioux, L., Baarir, S., Sopena, J., Kordon, F.: Painless: a framework for parallel SAT solving. In: Proceedings of the 20th International Conference on Theory and Applications of Satisfiability Testing (SAT). pp. 233–250. Springer (2017) Le Frioux, L., Baarir, S., Sopena, J., Kordon, F.: Painless: a framework for parallel SAT solving. In: Proceedings of the 20th International Conference on Theory and Applications of Satisfiability Testing (SAT). pp. 233–250. Springer (2017)
29.
Zurück zum Zitat Liang, J.H., Oh, C., Ganesh, V., Czarnecki, K., Poupart, P.: Maplecomsps lrb vsids, and maplecomsps chb vsids. In: Proceedings of SAT Competition 2017: Solver and Benchmark Descriptions. pp. 20–21. Department of Computer Science, University of Helsinki, Finland (2017) Liang, J.H., Oh, C., Ganesh, V., Czarnecki, K., Poupart, P.: Maplecomsps lrb vsids, and maplecomsps chb vsids. In: Proceedings of SAT Competition 2017: Solver and Benchmark Descriptions. pp. 20–21. Department of Computer Science, University of Helsinki, Finland (2017)
30.
Zurück zum Zitat Massacci, F., Marraro, L.: Logical cryptanalysis as a SAT problem. Journal of Automated Reasoning 24, 165–203 (2000) Massacci, F., Marraro, L.: Logical cryptanalysis as a SAT problem. Journal of Automated Reasoning 24, 165–203 (2000)
31.
Zurück zum Zitat Moskewicz, M.W., Madigan, C.F., Zhao, Y., Zhang, L., Malik, S.: Chaff: Engineering an efficient SAT solver. In: Proceedings of the 38th Design Automation Conference (DAC). pp. 530–535. ACM (2001) Moskewicz, M.W., Madigan, C.F., Zhao, Y., Zhang, L., Malik, S.: Chaff: Engineering an efficient SAT solver. In: Proceedings of the 38th Design Automation Conference (DAC). pp. 530–535. ACM (2001)
32.
Zurück zum Zitat Qian, Y., Chen, Z., Zhang, X., Cai, S.: Prs-distributed in the SAT competition 2024. In: Proceedings of SAT Competition 2024: Solver and Benchmark Descriptions. Department of Computer Science Report Series B, Department of Computer Science, University of Helsinki, Finland (2024) Qian, Y., Chen, Z., Zhang, X., Cai, S.: Prs-distributed in the SAT competition 2024. In: Proceedings of SAT Competition 2024: Solver and Benchmark Descriptions. Department of Computer Science Report Series B, Department of Computer Science, University of Helsinki, Finland (2024)
33.
Zurück zum Zitat Ryan, L.: Efficient algorithms for clause-learning SAT solvers. Ph.D. thesis, Theses (School of Computing Science)/Simon Fraser University (2004) Ryan, L.: Efficient algorithms for clause-learning SAT solvers. Ph.D. thesis, Theses (School of Computing Science)/Simon Fraser University (2004)
34.
Zurück zum Zitat Sami Cherif, M., Habet, D., Terrioux, C.: Un bandit manchot pour combiner CHB et VSIDS. In: Actes des 16èmes Journées Francophones de Programmation par Contraintes (JFPC). Nice, France (Jun 2021) Sami Cherif, M., Habet, D., Terrioux, C.: Un bandit manchot pour combiner CHB et VSIDS. In: Actes des 16èmes Journées Francophones de Programmation par Contraintes (JFPC). Nice, France (Jun 2021)
35.
Zurück zum Zitat Schreiber, D.: Lilotane: A lifted SAT-based approach to hierarchical planning. J. Artif. Int. Res. 70, 11171181 (may 2021) Schreiber, D.: Lilotane: A lifted SAT-based approach to hierarchical planning. J. Artif. Int. Res. 70, 11171181 (may 2021)
36.
Zurück zum Zitat Schreiber, D., Sanders, P.: Scalable SAT solving in the cloud. In: Li, C.M., Manyà, F. (eds.) Theory and Applications of Satisfiability Testing – SAT 2021. pp. 518–534. Springer International Publishing, Cham (2021) Schreiber, D., Sanders, P.: Scalable SAT solving in the cloud. In: Li, C.M., Manyà, F. (eds.) Theory and Applications of Satisfiability Testing – SAT 2021. pp. 518–534. Springer International Publishing, Cham (2021)
37.
Zurück zum Zitat Schreiber, D., Sanders, P.: MallobSat: Scalable SAT solving by clause sharing. Journal of Artificial Intelligence Research (JAIR) (2024), presented at Pragmatics of SAT (PoS) 2024 Schreiber, D., Sanders, P.: MallobSat: Scalable SAT solving by clause sharing. Journal of Artificial Intelligence Research (JAIR) (2024), presented at Pragmatics of SAT (PoS) 2024
38.
Zurück zum Zitat Silva, J.M., Sakallah, K.A.: Grasp-a new search algorithm for satisfiability. In: Proceedings of International Conference on Computer Aided Design. pp. 220–227. IEEE (1996) Silva, J.M., Sakallah, K.A.: Grasp-a new search algorithm for satisfiability. In: Proceedings of International Conference on Computer Aided Design. pp. 220–227. IEEE (1996)
39.
Zurück zum Zitat Vallade, V., Baarir, S., Sopena, J.: New concurrent painless solvers based on kissat-mab: P-kissat and p-kissat-str. In: SAT COMPETITION 2023 Proceedings. pp. 42,43 (2023) Vallade, V., Baarir, S., Sopena, J.: New concurrent painless solvers based on kissat-mab: P-kissat and p-kissat-str. In: SAT COMPETITION 2023 Proceedings. pp. 42,43 (2023)
40.
Zurück zum Zitat Vallade, V., Le Frioux, L., Baarir, S., Sopena, J., Kordon, F.: On the usefulness of clause strengthening in parallel SAT solving. In: Proceedings of the 12th NASA Formal Methods Symposium (NFM). Springer (2020) Vallade, V., Le Frioux, L., Baarir, S., Sopena, J., Kordon, F.: On the usefulness of clause strengthening in parallel SAT solving. In: Proceedings of the 12th NASA Formal Methods Symposium (NFM). Springer (2020)
41.
Zurück zum Zitat Vallade, V., Le Frioux, L., Oanea, R., Baarir, S., Sopena, J., Kordon, F., Nejati, S., Ganesh, V.: New concurrent and distributed painless solvers: P-mcomsps, p-mcomsps-com,p-mcomsps-mpi, and p-mcomsps-com-mpi. In: Proceedings of SAT Competition 2021: Solver and Benchmark Descriptions. p. 40. Department of Computer Science, University of Helsinki, Finland (2021) Vallade, V., Le Frioux, L., Oanea, R., Baarir, S., Sopena, J., Kordon, F., Nejati, S., Ganesh, V.: New concurrent and distributed painless solvers: P-mcomsps, p-mcomsps-com,p-mcomsps-mpi, and p-mcomsps-com-mpi. In: Proceedings of SAT Competition 2021: Solver and Benchmark Descriptions. p. 40. Department of Computer Science, University of Helsinki, Finland (2021)
42.
Zurück zum Zitat Zhang, H., Bonacina, M.P., Hsiang, J.: PSATO: a distributed propositional prover and its application to quasigroup problems. Journal of Symbolic Computation 21(4), 543–560 (1996) Zhang, H., Bonacina, M.P., Hsiang, J.: PSATO: a distributed propositional prover and its application to quasigroup problems. Journal of Symbolic Computation 21(4), 543–560 (1996)
43.
Zurück zum Zitat Zhang, H., Stickel, M.: Implementing the davis–putnam method. Journal of Automated Reasoning 24(1-2), 277–296 (2000) Zhang, H., Stickel, M.: Implementing the davis–putnam method. Journal of Automated Reasoning 24(1-2), 277–296 (2000)
Metadaten
Titel
D-Painless: A Framework for Distributed Portfolio SAT Solving
verfasst von
Mazigh Saoudi
Souheib Baarir
Julien Sopena
Thibault Lejemble
Copyright-Jahr
2025
DOI
https://doi.org/10.1007/978-3-031-90653-4_3