62 static bool InitGpuLibraryWithMute();
65 return gpuLibrary && gpuLibrary->IsValid();
68 static std::shared_ptr<GpuLibrary> GetGpuLibrary() {
69 if (!gpuLibrary || !gpuLibrary->IsValid())
return nullptr;
73 static std::unique_ptr<GpuLibStateVectorSim> CreateGpuLibStateVectorSim() {
74 if (!gpuLibrary || !gpuLibrary->IsValid())
return nullptr;
76 return std::make_unique<GpuLibStateVectorSim>(gpuLibrary);
79 static std::unique_ptr<GpuLibMPSSim> CreateGpuLibMPSSim() {
80 if (!gpuLibrary || !gpuLibrary->IsValid())
return nullptr;
82 return std::make_unique<GpuLibMPSSim>(gpuLibrary);
85 static std::unique_ptr<GpuLibTNSim> CreateGpuLibTensorNetSim() {
86 if (!gpuLibrary || !gpuLibrary->IsValid())
return nullptr;
88 return std::make_unique<GpuLibTNSim>(gpuLibrary);
91 static std::shared_ptr<GpuStabilizer> CreateGpuStabilizerSimulator() {
92 if (!gpuLibrary || !gpuLibrary->IsValid())
return nullptr;
93 return std::make_shared<GpuStabilizer>(gpuLibrary);
96 static std::shared_ptr<GpuPauliPropagator>
97 CreateGpuPauliPropagatorSimulator() {
98 if (!gpuLibrary || !gpuLibrary->IsValid())
return nullptr;
99 return std::make_shared<GpuPauliPropagator>(gpuLibrary);
102 static std::unique_ptr<GpuPauliPropagator>
103 CreateGpuPauliPropagatorSimulatorUnique() {
104 if (!gpuLibrary || !gpuLibrary->IsValid())
return nullptr;
105 return std::make_unique<GpuPauliPropagator>(gpuLibrary);
109 static std::shared_ptr<GpuLibrary> gpuLibrary;
110 static std::atomic_bool firstTime;
120 return questLibrary && questLibrary->IsValid();
124 if (!questLibrary || !questLibrary->IsValid())
return nullptr;
129 static std::shared_ptr<QuestLibSim> questLibrary;
130 static std::atomic_bool firstTimeQuest;