Skip to content

Commit a50b525

Browse files
authored
👽 adjust to latest mqt-core changes (#348)
## Description This PR adjust the codebase to the latest changes from mqt-core (specifically munich-quantum-toolkit/core#491). Note that this merely applies the minimal changes necessary to run the project with the latest version. A proper cleanup of the noise-aware simulators is scheduled to arrive with #321. ## Checklist: <!--- This checklist serves as a reminder of a couple of things that ensure your pull request will be merged swiftly. --> - [x] The pull request only contains commits that are related to it. - [x] I have added appropriate tests and documentation. - [x] I have made sure that all CI jobs on GitHub pass. - [x] The pull request introduces no new warnings and follows the project's style guidelines. Signed-off-by: burgholzer <burgholzer@me.com>
1 parent 20ec8c4 commit a50b525

File tree

5 files changed

+11
-48
lines changed

5 files changed

+11
-48
lines changed

apps/noise_aware.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,7 @@ int main(int argc, char** argv) { // NOLINT(bugprone-exception-escape)
113113
auto ddsim = std::make_unique<DeterministicNoiseSimulator<>>(std::move(quantumComputation), vm["noise_effects"].as<std::string>(),
114114
vm["noise_prob"].as<double>(),
115115
noiseProbT1,
116-
vm["noise_prob_multi"].as<double>(),
117-
vm.count("unoptimized_sim"), vm["seed"].as<std::size_t>());
116+
vm["noise_prob_multi"].as<double>(), vm["seed"].as<std::size_t>());
118117

119118
auto t1 = std::chrono::steady_clock::now();
120119

extern/mqt-core

include/DeterministicNoiseSimulator.hpp

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,20 @@ class DeterministicNoiseSimulator: public Simulator<Config> {
1414
double noiseProbability,
1515
std::optional<double> ampDampingProbability,
1616
double multiQubitGateFactor,
17-
bool unoptimizedSim = false,
18-
std::uint64_t seed_ = 0):
17+
std::uint64_t seed_ = 0):
1918
Simulator<Config>(seed_),
2019
qc(std::move(qc_)),
2120
noiseEffects(StochasticNoiseSimulator<StochasticNoiseSimulatorDDPackageConfig>::initializeNoiseEffects(noiseEffects_)),
2221
noiseProbSingleQubit(noiseProbability),
2322
ampDampingProbSingleQubit(ampDampingProbability ? ampDampingProbability.value() : noiseProbability * 2),
2423
noiseProbMultiQubit(noiseProbability * multiQubitGateFactor),
25-
ampDampingProbMultiQubit(ampDampingProbSingleQubit * multiQubitGateFactor),
26-
sequentiallyApplyNoise(unoptimizedSim),
27-
useDensityMatrixType(!unoptimizedSim) {
24+
ampDampingProbMultiQubit(ampDampingProbSingleQubit * multiQubitGateFactor) {
2825
StochasticNoiseSimulator<StochasticNoiseSimulatorDDPackageConfig>::sanityCheckOfNoiseProbabilities(noiseProbability, ampDampingProbSingleQubit, multiQubitGateFactor);
2926
Simulator<Config>::dd->resize(qc->getNqubits());
3027
}
3128

3229
explicit DeterministicNoiseSimulator(std::unique_ptr<qc::QuantumComputation>&& qc_, std::uint64_t seed_ = 0):
33-
DeterministicNoiseSimulator(std::move(qc_), std::string("APD"), 0.001, std::optional<double>{}, 2, false, seed_) {}
30+
DeterministicNoiseSimulator(std::move(qc_), std::string("APD"), 0.001, std::optional<double>{}, 2, seed_) {}
3431

3532
std::map<std::string, std::size_t> simulate(size_t shots) override {
3633
return sampleFromProbabilityMap(deterministicSimulate(), shots);
@@ -50,12 +47,10 @@ class DeterministicNoiseSimulator: public Simulator<Config> {
5047
[[nodiscard]] std::size_t getMaxNodeCount() const override { return Simulator<Config>::dd->template getUniqueTable<dd::dNode>().getPeakNumActiveEntries(); }
5148

5249
[[nodiscard]] std::size_t countNodesFromRoot() override {
53-
if (useDensityMatrixType) {
54-
qc::DensityMatrixDD::alignDensityEdge(rootEdge);
55-
const std::size_t tmp = rootEdge.size();
56-
qc::DensityMatrixDD::setDensityMatrixTrue(rootEdge);
57-
return tmp;
58-
}
50+
qc::DensityMatrixDD::alignDensityEdge(rootEdge);
51+
const std::size_t tmp = rootEdge.size();
52+
qc::DensityMatrixDD::setDensityMatrixTrue(rootEdge);
53+
return tmp;
5954
return rootEdge.size();
6055
}
6156

@@ -71,7 +66,4 @@ class DeterministicNoiseSimulator: public Simulator<Config> {
7166
double ampDampingProbMultiQubit{};
7267

7368
double measurementThreshold = 0.01;
74-
75-
bool sequentiallyApplyNoise{};
76-
bool useDensityMatrixType{};
7769
};

src/DeterministicNoiseSimulator.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ dd::SparsePVecStrKeys DeterministicNoiseSimulator<Config>::deterministicSimulate
1717
noiseProbMultiQubit,
1818
ampDampingProbSingleQubit,
1919
ampDampingProbMultiQubit,
20-
noiseEffects,
21-
useDensityMatrixType,
22-
sequentiallyApplyNoise);
20+
noiseEffects);
2321

2422
for (auto const& op: *qc) {
2523
Simulator<Config>::dd->garbageCollect();
@@ -39,7 +37,7 @@ dd::SparsePVecStrKeys DeterministicNoiseSimulator<Config>::deterministicSimulate
3937
auto operation = dd::getDD(op.get(), *Simulator<Config>::dd);
4038

4139
// Applying the operation to the density matrix
42-
Simulator<Config>::dd->applyOperationToDensity(rootEdge, operation, useDensityMatrixType);
40+
Simulator<Config>::dd->applyOperationToDensity(rootEdge, operation);
4341

4442
deterministicNoiseFunctionality.applyNoiseEffects(rootEdge, op);
4543
}

test/test_det_noise_sim.cpp

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -226,32 +226,6 @@ TEST(DeterministicNoiseSimTest, TestFunctionsOptimized) {
226226
EXPECT_EQ(ddsim->countNodesFromRoot(), 23);
227227
}
228228

229-
TEST(DeterministicNoiseSimTest, TestFunctionsUnOptimized) {
230-
auto quantumComputation = detGetAdder4Circuit();
231-
auto ddsim = std::make_unique<DeterministicNoiseSimulator<>>(std::move(quantumComputation), std::string("APD"), 0.01, 0.02, 1, true);
232-
auto m = ddsim->deterministicSimulate();
233-
234-
EXPECT_EQ(ddsim->getNumberOfQubits(), 4);
235-
EXPECT_EQ(ddsim->getActiveNodeCount(), 29);
236-
EXPECT_EQ(ddsim->getMaxNodeCount(), 58);
237-
EXPECT_EQ(ddsim->getMaxMatrixNodeCount(), 0);
238-
EXPECT_EQ(ddsim->getMatrixActiveNodeCount(), 0);
239-
EXPECT_EQ(ddsim->countNodesFromRoot(), 30);
240-
}
241-
242-
TEST(DeterministicNoiseSimTest, TestingSimulatorFunctionality) {
243-
auto quantumComputation = detGetAdder4Circuit();
244-
auto ddsim = std::make_unique<DeterministicNoiseSimulator<>>(std::move(quantumComputation), std::string("APD"), 0.01, 0.02, 1, true);
245-
auto m = ddsim->deterministicSimulate();
246-
247-
EXPECT_EQ(ddsim->getNumberOfQubits(), 4);
248-
EXPECT_EQ(ddsim->getActiveNodeCount(), 29);
249-
EXPECT_EQ(ddsim->getMaxNodeCount(), 58);
250-
EXPECT_EQ(ddsim->getMaxMatrixNodeCount(), 0);
251-
EXPECT_EQ(ddsim->getMatrixActiveNodeCount(), 0);
252-
EXPECT_EQ(ddsim->countNodesFromRoot(), 30);
253-
}
254-
255229
TEST(DeterministicNoiseSimTest, sampleFromProbabilityMap1) {
256230
auto quantumComputation = std::make_unique<qc::QuantumComputation>(2);
257231
quantumComputation->emplace_back<qc::StandardOperation>(2, 0, qc::X);

0 commit comments

Comments
 (0)