Skip to content

QREv3 neutral atom models#3198

Open
brad-lackey wants to merge 4 commits intomainfrom
brlackey/neutral-atom-models
Open

QREv3 neutral atom models#3198
brad-lackey wants to merge 4 commits intomainfrom
brlackey/neutral-atom-models

Conversation

@brad-lackey
Copy link
Copy Markdown
Contributor

NeutralAtom class: architecture for a generic neutral atom platform.

SurfaceCodeLowMove class: a variant of the surface code that does syndome extraction with local moves.

Added properties: ACCELERATION, VELOCITY, ATOM_SPACING to support neutral atom platforms.

@dataclass
class SurfaceCodeLowMove(ISATransform):
"""
This class models the gate-based rotated surface code.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we add details about the "low-move" nature of this transform. Further, is there a reference that discusses this which we could add to the docstring?

space_formula = linear_function(2 * self.distance**2 - 1)

# Each standard syndrome extraction cycle consists of ancilla preparation, 4
# rounds of CNOTs, and measurement. (See Fig. 2 in arXiv:1009.3686).
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Refers to CNOT in the comment, but gate that is used is CZ.


@dataclass
class NeutralAtom(Architecture):
"""A movement-aware neutral-atom architecture."""
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should add doc strings about the various fields that can be configured, their units, and their default value.

Comment on lines +34 to +36
atom_spacing: int = field(default=3) # In units of microns.
max_velocity: int = field(default=1) # In units m/s.
max_acceleration: int = field(default=5000) # In units m/s^2.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these the most natural units to choose? Why not meters or nano-meters for the atom spacing? We could also use a float value here and then convert it to bits using the helper function.

encoding=Encoding.PHYSICAL,
arity=1,
time=0,
error_rate=0.00001,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be configurable? It should also have a comment to explain why we currently do not set the error rate to 0.

encoding=Encoding.PHYSICAL,
arity=1,
time=2 * self.handoff_time,
error_rate=1e-4,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be configurable? Is this value ever used or are we only using the move instruction to provide timing information?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants