2#if defined(__linux__) && defined(INCLUDED_BY_FACTORY)
8template <
class Immediate>
class DistributedFusionSimulator :
public FusionSimulator<FusionState>
11 DistributedFusionSimulator() : FusionSimulator(std::make_shared<Immediate>())
18 if (GetType() == SimulatorType::kDistMpiGpuSim ||
GetConfiguration(
"distributed_backend") !=
"conventional")
20 return DistributedGpuLibrary::GetInstance()->HasThreeQubitMatrixAPI() ? 3 : 2;
26 if (std::string(key) ==
"distributed_qubit_layout")
27 const_cast<DistributedFusionSimulator *
>(
this)->Flush();
28 return FusionSimulator<FusionState>::GetConfiguration(key);
31 std::unique_ptr<ISimulator> Clone()
override
33 auto copy = std::make_unique<DistributedFusionSimulator>();
41 bool PreserveStructuredGates()
const override
46 bool UsesDestructiveStateStorage()
const override
52using DistributedGpuSimulator = DistributedFusionSimulator<ImmediateDistributedGpuSimulator>;
53using DistributedMpiGpuSimulator = DistributedFusionSimulator<ImmediateDistributedMpiGpuSimulator>;
char * GetConfiguration(void *sim, const char *key)
unsigned GetGateFusionMaxQubits(void *sim)