QRAM 操作¶
量子随机存取存储器(SparQ/include/qram.h)¶
QRAM (Quantum Random Access Memory) operation definitions.
Implements the load operations and the input generator of the quantum random access memory, supporting QRAMLoad, QRAMLoadFast and QRAMInputGenerator
-
namespace qram_simulator
QRAM sparse state simulator namespace.
Contains all classes, functions, and data structures related to quantum computing simulation
-
struct QRAMInputGenerator¶
- #include <qram.h>
QRAM input generator.
Generates random input states for QRAM testing
Public Functions
-
inline QRAMInputGenerator(size_t addr_sz_, size_t data_sz_, size_t input_size_)¶
Constructor (random address and data)
- 参数:
addr_sz_ -- Address size
data_sz_ -- Data size
input_size_ -- Input size
-
inline QRAMInputGenerator(size_t addr_sz_, size_t data_sz_, size_t input_size_, size_t addr_, size_t data_)¶
Constructor (specified address and data)
- 参数:
addr_sz_ -- Address size
data_sz_ -- Data size
input_size_ -- Input size
addr_ -- Specified address
data_ -- Specified data
-
inline std::pair<size_t, size_t> rand_input()¶
Generate a random input.
- 返回:
Random pair of address and data
-
inline void _validate_registers(size_t addr_, size_t data_) const¶
Validate registers (internal use)
- 参数:
addr_ -- Address register ID
data_ -- Data register ID
- 抛出:
Throws -- an exception when a register ID is out of range
-
inline void generate_input(std::vector<System> &s, size_t addr_, size_t data_)¶
Generate input state (with specified registers)
- 参数:
s -- System state vector
addr_ -- Address register ID
data_ -- Data register ID
-
inline QRAMInputGenerator(size_t addr_sz_, size_t data_sz_, size_t input_size_)¶
-
struct QRAMLoad : public qram_simulator::SelfAdjointOperator¶
- #include <qram.h>
QRAM load operation class.
Implements the standard load operation of the quantum random access memory
备注
Only adapted for qram_qutrit::QRAMCircuit; use QRAMLoad_Qubit for the qubit version
Public Functions
-
inline void clear_control_nonzeros()¶
-
inline auto &conditioned_by_nonzeros(size_t cond)¶
-
inline void clear_control_all_ones()¶
-
inline auto &conditioned_by_all_ones(size_t cond)¶
-
inline void clear_control_by_bit()¶
-
inline auto &conditioned_by_bit(size_t cond, size_t pos)¶
-
inline void clear_control_by_value()¶
-
inline auto &conditioned_by_value(size_t cond, size_t pos)¶
-
inline QRAMLoad(const qram_qutrit::QRAMCircuit *qram_, size_t reg1, size_t reg2)¶
Constructor (ID version)
- 参数:
qram_ -- QRAM circuit pointer
reg1 -- Address register ID
reg2 -- Data register ID
- 抛出:
Throws -- an exception when the address register type is not an unsigned integer
-
inline QRAMLoad(const qram_qutrit::QRAMCircuit *qram, std::string_view reg1, std::string_view reg2)¶
Constructor (name version)
- 参数:
qram -- QRAM circuit pointer
reg1 -- Address register name
reg2 -- Data register name
-
void noise_free_impl(std::vector<System> &state) const¶
Noise-free implementation.
- 参数:
state -- System state vector
-
void _set_branches(qram_qutrit::QRAMCircuit *qram, const std::vector<System> &state, std::vector<std::pair<size_t, size_t>> &groups) const¶
Set branches (internal implementation)
- 参数:
qram -- QRAM circuit pointer
state -- System state vector
groups -- Grouping information
-
void _set_branches_impl(qram_qutrit::QRAMCircuit *qram, const std::vector<System> &state, decltype(qram->get_branches()) branches, decltype(qram->get_branch_probs()) branch_probs, size_t iter_l, size_t iter_r, std::vector<std::pair<size_t, size_t>> &groups) const¶
Set branches implementation (recursive)
- 参数:
qram -- QRAM circuit pointer
state -- System state vector
branches -- Branch information
branch_probs -- Branch probabilities
iter_l -- Left iteration boundary
iter_r -- Right iteration boundary
groups -- Grouping information
-
void _reconstruct(qram_qutrit::QRAMCircuit *qram, std::vector<System> &state, std::vector<std::pair<size_t, size_t>> &groups) const¶
Reconstruct operation.
- 参数:
qram -- QRAM circuit pointer
state -- System state vector
groups -- Grouping information
-
virtual void operator()(std::vector<System> &state) const¶
Apply the QRAM load operation.
- 参数:
state -- System state vector
-
inline virtual void dag(std::vector<System> &state) const override¶
Apply the dagger operation (the dagger of a self-adjoint operator equals itself)
- 参数:
state -- System state vector
-
inline virtual void dag(SparseState &state) const override¶
Apply dagger to a SparseState.
- 参数:
state -- Sparse state
-
inline virtual void dag(std::vector<System> &state) const
Apply the conjugate transpose (dagger) operation.
- 参数:
state -- System state vector
- 抛出:
Throws -- a not-implemented exception by default
-
inline virtual void dag(SparseState &state) const
Apply dagger to a SparseState.
- 参数:
state -- Sparse state
-
inline void clear_control_nonzeros()¶
-
struct QRAMLoadFast : public qram_simulator::SelfAdjointOperator¶
- #include <qram.h>
Fast QRAM load operation class.
Optimized version of the QRAM load operation with higher performance
备注
Only adapted for qram_qutrit::QRAMCircuit
Public Functions
-
inline void clear_control_nonzeros()¶
-
inline auto &conditioned_by_nonzeros(size_t cond)¶
-
inline void clear_control_all_ones()¶
-
inline auto &conditioned_by_all_ones(size_t cond)¶
-
inline void clear_control_by_bit()¶
-
inline auto &conditioned_by_bit(size_t cond, size_t pos)¶
-
inline void clear_control_by_value()¶
-
inline auto &conditioned_by_value(size_t cond, size_t pos)¶
-
QRAMLoadFast(const qram_qutrit::QRAMCircuit *qram, size_t reg1, size_t reg2)¶
Constructor (ID version)
- 参数:
qram -- QRAM circuit pointer
reg1 -- Address register ID
reg2 -- Data register ID
-
QRAMLoadFast(const qram_qutrit::QRAMCircuit *qram, std::string_view reg1, std::string_view reg2)¶
Constructor (name version)
- 参数:
qram -- QRAM circuit pointer
reg1 -- Address register name
reg2 -- Data register name
-
void noise_free_impl(std::vector<System> &state) const¶
Noise-free implementation.
- 参数:
state -- System state vector
-
void has_damping_impl(std::vector<System> &state, qram_qutrit::QRAMCircuit *qram, std::vector<System> &state_remove_cache) const¶
Implementation with damping.
- 参数:
state -- System state vector
qram -- QRAM circuit pointer
state_remove_cache -- State removal cache
-
void no_damping_impl(std::vector<System> &state, qram_qutrit::QRAMCircuit *qram, std::vector<System> &state_remove_cache) const¶
Implementation without damping.
- 参数:
state -- System state vector
qram -- QRAM circuit pointer
state_remove_cache -- State removal cache
-
virtual void operator()(std::vector<System> &state) const¶
Apply the fast QRAM load operation.
- 参数:
state -- System state vector
-
inline virtual void dag(std::vector<System> &state) const override¶
Apply the dagger operation (the dagger of a self-adjoint operator equals itself)
- 参数:
state -- System state vector
-
inline virtual void dag(SparseState &state) const override¶
Apply dagger to a SparseState.
- 参数:
state -- Sparse state
-
inline virtual void dag(std::vector<System> &state) const
Apply the conjugate transpose (dagger) operation.
- 参数:
state -- System state vector
- 抛出:
Throws -- a not-implemented exception by default
-
inline virtual void dag(SparseState &state) const
Apply dagger to a SparseState.
- 参数:
state -- Sparse state
-
inline void clear_control_nonzeros()¶
-
struct QRAMInputGenerator¶
备注
QRAM 电路核心(QRAMCircuit 的 qutrit/qubit 实现)位于
QRAM-Simulator 仓库
(本仓库 extern/qram-simulator submodule),其文档请参阅该仓库。