Maestro 0.3.11
Unified interface for quantum circuit simulation
Loading...
Searching...
No Matches
Composite.h
Go to the documentation of this file.
1#pragma once
2#ifdef INCLUDED_BY_FACTORY
5
7{
8class CompositeSimulator : public FusionSimulator<FusionState>
9{
10 public:
11 explicit CompositeSimulator(SimulatorType type = SimulatorType::kQCSim)
12 : FusionSimulator(std::make_shared<ImmediateCompositeSimulator>(type)), childType_(type)
13 {
14 }
15
16 unsigned GetGateFusionMaxQubits() const override
17 {
18 return childType_ == SimulatorType::kQCSim ? 3 : 0;
19 }
20
21 std::unique_ptr<ISimulator> Clone() override
22 {
23 auto copy = std::make_unique<CompositeSimulator>(childType_);
24 CloneInto(*copy);
25 return copy;
26 }
27
28 std::unique_ptr<ISimulator> CloneForExecution(uint64_t seed) override
29 {
30 auto copy = std::make_unique<CompositeSimulator>(childType_);
31 CloneInto(*copy, &seed);
32 return copy;
33 }
34
35 protected:
36 // The composite keeps its separate cloned snapshot when rebuilding children.
37 bool InitializationPreservesSnapshots() const override
38 {
39 return true;
40 }
41
42 private:
43 SimulatorType childType_;
44};
45} // namespace Simulators::Private
46#endif
unsigned GetGateFusionMaxQubits(void *sim)
SimulatorType
The type of simulator.
Definition State.h:79