From 0e0a3dd9afbfead92c5754023510292bf131cf00 Mon Sep 17 00:00:00 2001 From: Matthias Volk Date: Wed, 12 Sep 2018 18:17:39 +0200 Subject: [PATCH] Fixed problem with BitVector size mismatch for DFT states --- src/storm-dft/builder/ExplicitDFTModelBuilder.cpp | 2 +- src/storm-dft/storage/dft/DFT.h | 5 +++-- src/storm-dft/storage/dft/DFTState.cpp | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/storm-dft/builder/ExplicitDFTModelBuilder.cpp b/src/storm-dft/builder/ExplicitDFTModelBuilder.cpp index 82a566496..93e1170be 100644 --- a/src/storm-dft/builder/ExplicitDFTModelBuilder.cpp +++ b/src/storm-dft/builder/ExplicitDFTModelBuilder.cpp @@ -58,7 +58,7 @@ namespace storm { usedHeuristic(storm::settings::getModule().getApproximationHeuristic()), generator(dft, *stateGenerationInfo, enableDC, mergeFailedStates), matrixBuilder(!generator.isDeterministicModel()), - stateStorage(((dft.stateVectorSize() / 64) + 1) * 64), + stateStorage(dft.stateBitVectorSize()), // TODO Matthias: make choosable //explorationQueue(dft.nrElements()+1, 0, 1) explorationQueue(200, 0, 0.9) diff --git a/src/storm-dft/storage/dft/DFT.h b/src/storm-dft/storage/dft/DFT.h index c373c8199..aed02807d 100644 --- a/src/storm-dft/storage/dft/DFT.h +++ b/src/storm-dft/storage/dft/DFT.h @@ -80,8 +80,9 @@ namespace storm { void copyElements(std::vector elements, storm::builder::DFTBuilder builder) const; - size_t stateVectorSize() const { - return mStateVectorSize; + size_t stateBitVectorSize() const { + // Ensure multiple of 64 + return (mStateVectorSize / 64 + (mStateVectorSize % 64 != 0)) * 64; } size_t nrElements() const { diff --git a/src/storm-dft/storage/dft/DFTState.cpp b/src/storm-dft/storage/dft/DFTState.cpp index 29c1e525f..9d8a4d9d2 100644 --- a/src/storm-dft/storage/dft/DFTState.cpp +++ b/src/storm-dft/storage/dft/DFTState.cpp @@ -6,7 +6,7 @@ namespace storm { namespace storage { template - DFTState::DFTState(DFT const& dft, DFTStateGenerationInfo const& stateGenerationInfo, size_t id) : mStatus(dft.stateVectorSize()), mId(id), mPseudoState(false), mDft(dft), mStateGenerationInfo(stateGenerationInfo) { + DFTState::DFTState(DFT const& dft, DFTStateGenerationInfo const& stateGenerationInfo, size_t id) : mStatus(dft.stateBitVectorSize()), mId(id), mPseudoState(false), mDft(dft), mStateGenerationInfo(stateGenerationInfo) { // TODO Matthias: use construct() // Initialize uses