{'fraction_non_alphanumeric': 0.01867572156196944, 'fraction_numerical': 0.0, 'mean_word_length': 5.407608695652174, '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 CLP on Heterogeneous Networks

The combination of Or-Parallelism and Constraint Logic Programming (CLP) has proven to be very effective in tackling large combinatorial problems in real-life applications. However, existing implementations have focused on shared-memory multiprocessors. In this paper, we investigate how we can efficiently implement Or-Parallel CLP languages on heterogeneous networks, where communication bandwidth is much lower and heterogeneity requires all communication to be in a machine-independent format. Since a recomputation-based system has the potential to solve these problems, we analyse the performance of a prototype using this approach. On a representative set of CLP programs we show that close to optimal speedups can be obtained on networks for programs generating large search spaces and that the overhead of recomputation is surprisingly low. We compare this approach with that of stack-copying and also discuss how side-effects can be dealt with during recomputation. The main conclusion of the paper is that incremental recomputation is a clean and efficient execution model for Or-Parallel CLP systems on heterogeneous networks.