Struct qcs_api::models::architecture::Architecture
source · [−]pub struct Architecture {
pub edges: Vec<Edge>,
pub family: Option<Box<Family>>,
pub nodes: Vec<Node>,
}Expand description
Architecture : Represents the logical underlying architecture of a quantum processor. The architecture is defined in detail by the nodes and edges that constitute the quantum processor. This defines the set of all nodes that could be operated upon, and indicates to some approximation their physical layout. The main purpose of this is to support geometry calculations that are independent of the available operations, and rendering ISA-based information. Architecture layouts are defined by the family, as follows. The "Aspen" family of quantum processor indicates a 2D planar grid layout of octagon unit cells. The node_id in this architecture is computed as :math:100 p_y + 10 p_x + p_u where :math:p_y is the zero-based Y position in the unit cell grid, :math:p_x is the zero-based X position in the unit cell grid, and :math:p_u is the zero-based position in the octagon unit cell and always ranges from 0 to 7. This scheme has a natural size limit of a 10x10 unit cell grid, which permits the architecture to scale up to 800 nodes. Note that the operations that are actually available are defined entirely by Operation instances. The presence of a node or edge in the Architecture model provides no guarantee that any 1Q or 2Q operation will be available to users writing QUIL programs.
Fields
edges: Vec<Edge>A list of all computational edges in the instruction set architecture.
family: Option<Box<Family>>The architecture family. The nodes and edges conform to this family.
nodes: Vec<Node>A list of all computational nodes in the instruction set architecture.
Implementations
sourceimpl Architecture
impl Architecture
sourcepub fn new(
edges: Vec<Edge>,
family: Option<Family>,
nodes: Vec<Node>
) -> Architecture
pub fn new(
edges: Vec<Edge>,
family: Option<Family>,
nodes: Vec<Node>
) -> Architecture
Represents the logical underlying architecture of a quantum processor. The architecture is defined in detail by the nodes and edges that constitute the quantum processor. This defines the set of all nodes that could be operated upon, and indicates to some approximation their physical layout. The main purpose of this is to support geometry calculations that are independent of the available operations, and rendering ISA-based information. Architecture layouts are defined by the family, as follows. The "Aspen" family of quantum processor indicates a 2D planar grid layout of octagon unit cells. The node_id in this architecture is computed as :math:100 p_y + 10 p_x + p_u where :math:p_y is the zero-based Y position in the unit cell grid, :math:p_x is the zero-based X position in the unit cell grid, and :math:p_u is the zero-based position in the octagon unit cell and always ranges from 0 to 7. This scheme has a natural size limit of a 10x10 unit cell grid, which permits the architecture to scale up to 800 nodes. Note that the operations that are actually available are defined entirely by Operation instances. The presence of a node or edge in the Architecture model provides no guarantee that any 1Q or 2Q operation will be available to users writing QUIL programs.
Trait Implementations
sourceimpl Clone for Architecture
impl Clone for Architecture
sourcefn clone(&self) -> Architecture
fn clone(&self) -> Architecture
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source. Read more
sourceimpl Debug for Architecture
impl Debug for Architecture
sourceimpl Default for Architecture
impl Default for Architecture
sourcefn default() -> Architecture
fn default() -> Architecture
Returns the “default value” for a type. Read more
sourceimpl<'de> Deserialize<'de> for Architecture
impl<'de> Deserialize<'de> for Architecture
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl PartialEq<Architecture> for Architecture
impl PartialEq<Architecture> for Architecture
sourcefn eq(&self, other: &Architecture) -> bool
fn eq(&self, other: &Architecture) -> bool
This method tests for self and other values to be equal, and is used
by ==. Read more
sourcefn ne(&self, other: &Architecture) -> bool
fn ne(&self, other: &Architecture) -> bool
This method tests for !=.
sourceimpl Serialize for Architecture
impl Serialize for Architecture
impl StructuralPartialEq for Architecture
Auto Trait Implementations
impl RefUnwindSafe for Architecture
impl Send for Architecture
impl Sync for Architecture
impl Unpin for Architecture
impl UnwindSafe for Architecture
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber to this type, returning a
WithDispatch wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more