Class CirqQsim

Inheritance Relationships

Base Type

  • public xacc::Accelerator

Derived Type

Class Documentation

class CirqQsim : public xacc::Accelerator

Noisy emulator based on Qsim library.

Subclassed by qristal::CirqQsimCPU

Public Functions

virtual void initialize(const xacc::HeterogeneousMap &params = {}) override

Initialize the backend accelerator.

Parameters:

params – Initialization parameters

virtual void updateConfiguration(const xacc::HeterogeneousMap &config) override
inline virtual BitOrder getBitOrder() override

Get the Bit Order configuration.

Returns:

Bit order

inline virtual xacc::HeterogeneousMap getProperties() override

Get any backend-specific properties.

Returns:

Backend properties

void convert_noise_channel(NoiseModel noise_model)

Function to convert a Kraus channel to qsim type.

Parameters:

noise_model

virtual void execute(std::shared_ptr<xacc::AcceleratorBuffer> buffer, const std::vector<std::shared_ptr<xacc::CompositeInstruction>> compositeInstructions) override

Execute/emulate a single circuit.

Execute/emulate an array of circuits

Parameters:
  • buffer – Buffer to store the execution results

  • compositeInstruction – Input circuit

  • buffer – Buffer to store the execution results

  • compositeInstructions – Input circuits

void run_sim(size_t startIdx, size_t endIdx, std::shared_ptr<xacc::AcceleratorBuffer> buffer, const std::shared_ptr<xacc::CompositeInstruction> compositeInstruction, std::map<std::string, int> &counts, std::mutex &meas_mutex, std::unique_ptr<QsimExecutor> executor)

Execute the actual circuit using the qsim executor created by the derived class.

Protected Attributes

int m_shots
uint32_t m_seed
bool m_ro_errors_enabled
NoiseModel *m_noise_model
std::unordered_map<std::string, std::map<std::vector<size_t>, std::vector<noise_channel_components>>> m_noise_channels