Template Class OperationKernelMap¶
Defined in File KernelMap.hpp
Class Documentation¶
-
template<class Operation, std::size_t cache_size = 16>
class OperationKernelMap¶ This class manages all data related to kernel map statevector uses.
For a given number of qubit, threading, and memory model, this class returns the best kernels for each gate/generator/matrix operation.
Public Types
Public Functions
-
inline void assignKernelForOp(Operation op, Threading threading, CPUMemoryModel memory_model, uint32_t priority, const Util::IntegerInterval<std::size_t> &interval, KernelType kernel)¶
Assign a kernel for a given operation, threading, and memory model.
Variable
priority
set the priority of the given kernel when multiple choices are available. The giveninterval
must be disjoint with all existing intervals with a given priority.- Parameters
op – Operation to use as a dispatch key
threading – Threading option to use as a dispatch key
memory_model – Memory model to use as a dispatch key
priority – Priority of this assignment
interval – Range of the number of qubits to use this kernel
kernel – Kernel to assign
-
inline void assignKernelForOp(Operation op, [[maybe_unused]] AllThreading dummy, CPUMemoryModel memory_model, const Util::IntegerInterval<std::size_t> &interval, KernelType kernel)¶
Assign kernel for given operation and memory model for all threading options. The priority of this assignment is 1.
-
inline void assignKernelForOp(Operation op, Threading threading, [[maybe_unused]] AllMemoryModel dummy, const Util::IntegerInterval<std::size_t> &interval, KernelType kernel)¶
Assign kernel for given operation and threading option for all memory models. The priority of this assignment is 2.
-
inline void assignKernelForOp(Operation op, [[maybe_unused]] AllThreading dummy1, [[maybe_unused]] AllMemoryModel dummy2, const Util::IntegerInterval<std::size_t> &interval, KernelType kernel)¶
Assign kernel for a given operation for all memory model and all threading options. The priority of this assignment is 0.
-
inline void removeKernelForOp(Operation op, Threading threading, CPUMemoryModel memory_model, uint32_t priority)¶
Remove an assigned kernel for the given operation, threading, and memory model.
- Parameters
op – Operation
threading – Threading option
memory_model – Memory model
priority – Priority to remove
-
inline auto getKernelMap(std::size_t num_qubits, Threading threading, CPUMemoryModel memory_model) const -> EnumKernelMap¶
Create map contains default kernels for operation.
- Parameters
num_qubits – Number of qubits
threading – Threading context
memory_model – Memory model of the underlying data
- Returns
A kernel map for given keys
Public Static Functions
-
static inline auto getInstance() -> OperationKernelMap&¶
Get a singleton instance.
- Returns
A singleton instance.
-
inline void assignKernelForOp(Operation op, Threading threading, CPUMemoryModel memory_model, uint32_t priority, const Util::IntegerInterval<std::size_t> &interval, KernelType kernel)¶