170 likes | 311 Views
Multi-Core LTSmin: Marrying Modularity and Scalability. Alfons Laarman Joint work with : Michael Weber Jaco Van de Pol 11/4/201. Nfm 2011. LTSmin Design Multi -Core Backend Concurrent Tree Compression Incremental Algorithms Experiments Future Work. Overview.
E N D
Multi-Core LTSmin:Marrying Modularity and Scalability Alfons Laarman Joint workwith: Michael Weber Jaco Van de Pol 11/4/201 Nfm2011
LTSmin Design Multi-Core Backend Concurrent Tree Compression Incremental Algorithms Experiments Future Work Overview Shared Hashtables in Parallel Model Checking
LTSmin: The modular part LTSMin Internal (symbolic) State based Process algebraic Language Frontend: DVE PROMELA via NIPS μCRL1 muCRL2 … ETF PINS Layer: Caching Regrouping POR Algorithms (backend) Multi-core Distributed Sequential Symbolic Multi-Core LTSmin: Marrying Modularity and Scalability
The scalable multi-core part Previous work Worker 1 Worker 2 PINS Synchronous Random Polling Lockless hash table request Worker 4 Worker 3 Multi-Core LTSmin: Marrying Modularity and Scalability
Memory becomes the problem (again) Store 10^9 state vectors of length up to 10^3 bytes With 16 cores the throughput can become 1GB/sec of new state vectors States are very similar Solution: Tree compression without losing scalability Exploit locality with incremental algorithms Multi-Core LTSmin: Marrying Modularity and Scalability
Concurrent Tree Compression Ingredients Alfons Laarman, Jaco van de Pol and Michael Weber – Parallel Recursive State Compression for Free (submitted) Multi-Core LTSmin: Marrying Modularity and Scalability
Incremental tree insertion Ingredients Incremental insertion exploits locality (log2(N) accesses) Multi-Core LTSmin: Marrying Modularity and Scalability
Memory usage Experiments Multi-Core LTSmin: Marrying Modularity and Scalability
Memory usage Experiments Multi-Core LTSmin: Marrying Modularity and Scalability
Aggregate Performance Experiments Multi-Core LTSmin: Marrying Modularity and Scalability
SUMMARY • Scalable memory-efficient reachability (DFS/BFS) • On-the-fly model checking of safety properties Shared Hashtables in Parallel Model Checking
Future work • POR PINS layer (benchmarked, published) • Multi-Core NDFS • Case studies • Download LTSmin (open source): • http://fmt.cs.utwente.nl/tools/ltsmin/ Shared Hashtables in Parallel Model Checking
Incremental hashing based on Zobrist Hashing [1] An Incremental Algorithm ♘g1-f3 (Hx⊕ Z♘,g,1) ⊕Z♘,f,3 = Hx Hy [1] Albert Lindsey Zobrist, A New Hashing Method with Application for Game Playing Multi-Core LTSmin: Marrying Modularity and Scalability
Command line arguments and their effect LTSmin Shared Hashtables in Parallel Model Checking
Incremental hashing (continued) Ingredients Uses dependency matrix Z is now limited by L Multi-Core LTSmin: Marrying Modularity and Scalability
LTSmin: The modular part LTSMin • Traditionally in model checking we have states and a next-state function • A state is an array of slots: <s1,….,sN> ∈ S • The next-state() function provides the transition relation: S →S • In LTSmin, we expose static information of the specification. • Partitioned Next-State Interface (PINS): S →KS (K transition groups) • The Dependency Matrix D is a K × N matrix of Booleans relating slots and groups: • DRi,j indicates whether slot j is read by the transitions of group i. • DWi,j indicates whether slot j is written to by the transitions of group i. • Di,j = DRi,j∨ DWi,j Multi-Core LTSmin: Marrying Modularity and Scalability
LTSmin: The modular part LTSMin PINS interface μCRL1 PROMELA Sequential Symbolic Multi-core muCRL2 DVE Distributed ETF Multi-Core LTSmin: Marrying Modularity and Scalability