Maestro 0.3.11
Unified interface for quantum circuit simulation
Loading...
Searching...
No Matches
GpuState.h
Go to the documentation of this file.
1#pragma once
2#if defined(INCLUDED_BY_FACTORY) && defined(__linux__)
4
6{
7class GpuState : public FusionState
8{
9 public:
10 explicit GpuState(std::shared_ptr<ISimulator> immediate) : FusionState(std::move(immediate))
11 {
12 }
13
14 unsigned GetGateFusionMaxQubits() const override
15 {
16 switch (GetSimulationType())
17 {
18 case SimulationType::kStatevector:
19 return GpuLibrary::GetInstance()->HasStatevectorMatrixAPI() ? 3 : 0;
20 case SimulationType::kDensityMatrix:
21 case SimulationType::kMatrixProductState:
22 case SimulationType::kMatrixProductOperator:
23 return 2;
24 default:
25 return 0;
26 }
27 }
28
29 protected:
30 bool UsesDestructiveStateStorage() const override
31 {
32 return GetSimulationType() == SimulationType::kStatevector;
33 }
34};
35} // namespace Simulators::Private
36#endif
int GetSimulationType(void *sim)
unsigned GetGateFusionMaxQubits(void *sim)