a parallel backtracking framework (bkfr) for single and multiple clusters
There is a wide class of important problems, typified by the NP-complete SAT problem, for which the best known solutions are obtained using the backtracking strategy and heuristics to bound the search of the associated state-space tree. The backtracking strategy is well suited to parallelization, since different portions of the state-space tree can be assigned to different processes. The resulting strategy is often referred to in the literature as parallel depth-first search or parallel backtracking. In this paper we introduce Backtracking Framework (BkFr) that simplifies implementation of the parallel backtracking paradigm in the single cluster environment, and supports the extension of computations over multiple clusters. BkFr uses two communication methods -- MPI for intra-cluster communication and ICI (Inter-Cluster Interface) for inter-cluster communication. What differentiates ICI from MPI-2, Globus and other libraries that support inter-cluster message passing is its lightweight (requiring only Unix socket API and little or no systems administration support), and its fault-tolerant capabilities. The latter capability was one of our principal motivations for developing ICI, since it allows new clusters to join an ongoing computation anytime without affecting the integrity of the whole system. Also, a sudden failure of a cluster that is part of the computation will result in a reassignment of its work to another resource. There are a number of other parallel frameworks for parallel state-space tree searching, such as the ZRAM framework, but they do not support the multi-cluster fault-tolerant option. In addition to its ease of implementation, BkFr offers a simple interface (less than 10 functions) for new compute modules, making it relatively simple for the user to alter existing code to a form suitable for the BkFr framework. To further simplify the utilization of BkFr for solving user-defined problems, we have developed our own Shared Variable Emulation layer, which hides MPI and ICI communication functions, and allows the user to send information (messages) as variables. Because of its lightweight features, our framework does not incur significant additional overhead, and performance data shows good speedup on problems ranging from a simply implemented version of the sum of subsets problem, to complicated implementations of SAT solvers such as SBSAT and zChaff. While the current implementations of ICI and BkFr are developed in the context of MPI, they can readily be adapted to other message passing environments.
backtracking sat mpi intra-cluster communication ici inter-cluster communication