12 research outputs found
Analysing the Performance of GPU Hash Tables for State Space Exploration
In the past few years, General Purpose Graphics Processors (GPUs) have been
used to significantly speed up numerous applications. One of the areas in which
GPUs have recently led to a significant speed-up is model checking. In model
checking, state spaces, i.e., large directed graphs, are explored to verify
whether models satisfy desirable properties. GPUexplore is a GPU-based model
checker that uses a hash table to efficiently keep track of already explored
states. As a large number of states is discovered and stored during such an
exploration, the hash table should be able to quickly handle many inserts and
queries concurrently. In this paper, we experimentally compare two different
hash tables optimised for the GPU, one being the GPUexplore hash table, and the
other using Cuckoo hashing. We compare the performance of both hash tables
using random and non-random data obtained from model checking experiments, to
analyse the applicability of the two hash tables for state space exploration.
We conclude that Cuckoo hashing is three times faster than GPUexplore hashing
for random data, and that Cuckoo hashing is five to nine times faster for
non-random data. This suggests great potential to further speed up GPUexplore
in the near future.Comment: In Proceedings GaM 2017, arXiv:1712.0834
Multi-core Symbolic Bisimulation Minimisation
Bisimulation minimisation alleviates the exponential growth of transition systems in model checking by computing the smallest system that has the same behavior as the original system according to some notion of equivalence. One popular strategy to compute a bisimulation minimisation is signature-based partition refinement. This can be performed symbolically using binary decision diagrams to allow models with larger state spaces to be minimised. This paper studies strong and branching symbolic bisimulation for labeled transition systems, continuous-time markov chains, and interactive markov chains. We introduce the notion of partition refinement with partial signatures. We extend the parallel BDD library Sylvan to parallelize the signature refinement algorithm, and develop a new parallel BDD algorithm to refine a partition, which conserves previous block numbers and uses a parallel data structure to store block assignments. We also present a specialized BDD algorithm for the computation of inert transitions. The experimental evaluation, based on benchmarks from the literature, demonstrates a speedup of up to 95x sequentially. In addition, we find parallel speedups of up to 17x due to parallelisation with 48 cores. Finally, we present the implementation of these algorithms as a versatile tool that can be customized for bisimulation minimisation in various contexts
On the Scalability of the GPUexplore Explicit-State Model Checker
The use of graphics processors (GPUs) is a promising approach to speed up
model checking to such an extent that it becomes feasible to instantly verify
software systems during development. GPUexplore is an explicit-state model
checker that runs all its computations on the GPU. Over the years it has been
extended with various techniques, and the possibilities to further improve its
performance have been continuously investigated. In this paper, we discuss how
the hash table of the tool works, which is at the heart of its functionality.
We propose an alteration of the hash table that in isolated experiments seems
promising, and analyse its effect when integrated in the tool. Furthermore, we
investigate the current scalability of GPUexplore, by experimenting both with
input models of varying sizes and running the tool on one of the latest GPUs of
NVIDIA.Comment: In Proceedings GaM 2017, arXiv:1712.0834
Coalgebra Encoding for Efficient Minimization
Recently, we have developed an efficient generic partition refinement algorithm, which computes behavioural equivalence on a state-based system given as an encoded coalgebra, and implemented it in the tool CoPaR. Here we extend this to a fully fledged minimization algorithm and tool by integrating two new aspects: (1) the computation of the transition structure on the minimized state set, and (2) the computation of the reachable part of the given system. In our generic coalgebraic setting these two aspects turn out to be surprisingly non-trivial requiring us to extend the previous theory. In particular, we identify a sufficient condition on encodings of coalgebras, and we show how to augment the existing interface, which encapsulates computations that are specific for the coalgebraic type functor, to make the above extensions possible. Both extensions have linear run time
An O(mlog n) algorithm for computing stuttering equivalence and branching bisimulation
We provide a new algorithm to determine stuttering equivalence with time complexity O(mlog n), where n is the number of states and mis the number of transitions of a Kripke structure. This algorithm can also be used to determine branching bisimulation in O(m(log |Act| + log n)) time, where Act is the set of actions in a labeled transition system. Theoretically, our algorithm substantially improves upon existing algorithms, which all have time complexity of the form O(mn) at best. Moreover, it has better or equal space complexity. Practical results confirm these findings: they show that our algorithm can outperform existing algorithms by several orders of magnitude, especially when the Kripke structures are large. The importance of our algorithm stretches far beyond stuttering equivalence and branching bisimulation. The known O(mn) algorithms were already far more efficient (both in space and time) than most other algorithms to determine behavioral equivalences (including weak bisimulation), and therefore they were often used as an essential preprocessing step. This new algorithm makes this use of stuttering equivalence and branching bisimulation even more attractive.</p
Coalgebra Encoding for Efficient Minimization
Recently, we have developed an efficient generic partition refinement
algorithm, which computes behavioural equivalence on a state-based system given
as an encoded coalgebra, and implemented it in the tool CoPaR. Here we extend
this to a fully fledged minimization algorithm and tool by integrating two new
aspects: (1) the computation of the transition structure on the minimized state
set, and (2) the computation of the reachable part of the given system. In our
generic coalgebraic setting these two aspects turn out to be surprisingly
non-trivial requiring us to extend the previous theory. In particular, we
identify a sufficient condition on encodings of coalgebras, and we show how to
augment the existing interface, which encapsulates computations that are
specific for the coalgebraic type functor, to make the above extensions
possible. Both extensions have linear run time
Lowerbounds for Bisimulation by Partition Refinement
We provide time lower bounds for sequential and parallel algorithms deciding
bisimulation on labeled transition systems that use partition refinement. For
sequential algorithms this is and for parallel algorithms this is , where
is the number of states and is the number of transitions. The lowerbounds
are obtained by analysing families of deterministic transition systems,
ultimately with two actions in the sequential case, and one action for parallel
algorithms. For deterministic transition systems with one action, bisimilarity
can be decided sequentially with fundamentally different techniques than
partition refinement. In particular, Paige, Tarjan, and Bonic give a linear
algorithm for this specific situation. We show, exploiting the concept of an
oracle, that this approach is not of help to develop a faster generic algorithm
for deciding bisimilarity. For parallel algorithms there is a similar situation
where these techniques may be applied, too
GPU accelerated strong and branching bisimilarity checking
Bisimilarity checking is an important operation to perform explicit-state model checking when the state space of a model under verification has already been generated. It can be applied in various ways: reduction of a state space w.r.t. a particular flavour of bisimilarity, or checking that two given state spaces are bisimilar. Bisimilarity checking is a computationally intensive task, and over the years, several algorithms have been presented, both sequential, i.e. single-threaded, and parallel, the latter either relying on shared memory or message-passing. In this work, we first present a novel way to check strong bisimilarity on general-purpose graphics processing units (GPUs), and show experimentally that an implementation of it for CUDA-enabled GPUs is competitive with other parallel techniques that run either on a GPU or use message-passing on a multi-core system. Building on this, we propose, to the best of our knowledge, the first many-core branching bisimilarity checking algorithm, an implementation of which shows speedups comparable to our strong bisimilarity checking approach