Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unexpected behavior for long sequences with APS2 #279

Open
ranzani opened this issue Apr 29, 2021 · 1 comment
Open

Unexpected behavior for long sequences with APS2 #279

ranzani opened this issue Apr 29, 2021 · 1 comment
Assignees

Comments

@ranzani
Copy link
Contributor

ranzani commented Apr 29, 2021

When running long sequences with the APS2 if the waveform data cross a cache line the prefetcher can't keep up. The experiment proceeds, but the data are random.

Verified this for example with the following test sequence:

[[X(q,length = l), MEAS(q)] for l in np.arange(2e-6,50e-6,2e-6)]

@matthewware
Copy link
Collaborator

Just as a note to others, this is an issue with the APS2 waveform cache. For longer pulses that aren't constructed with time/amplitude pairs (constant functions), these pulses can chew through all the on-system waveform memory. You can get around this issue by using waveforms made like in the echo-CR case:

QGL/QGL/PulsePrimitives.py

Lines 358 to 374 in e50941b

# helper used by echoCR
def flat_top_gaussian(chan,
riseFall,
length,
amp,
phase=0,
label="flat_top_gaussian"):
"""
A constant pulse with rising and falling gaussian shape
"""
if riseFall == 0:
p = Utheta(chan, length=length, amp=amp, phase=phase, shape_fun=PulseShapes.constant, label=label+"_top")
else:
p = Utheta(chan, length=riseFall, amp=amp, phase=phase, shape_fun=PulseShapes.gaussOn, label=label+"_rise") + \
Utheta(chan, length=length, amp=amp, phase=phase, shape_fun=PulseShapes.constant, label=label+"_top") + \
Utheta(chan, length=riseFall, amp=amp, phase=phase, shape_fun=PulseShapes.gaussOff, label=label+"_fall")
return p._replace(label=label)

Long term, we're hoping to have some checks at compile time to make sure you aren't overflowing the waveform memory.

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

No branches or pull requests

3 participants