From c0bbd99bfa33a11557050ba021ad50fc25fdbaed Mon Sep 17 00:00:00 2001 From: Robert Jordens Date: Tue, 16 Feb 2016 17:42:28 +0100 Subject: [PATCH] examples/transport: tweak for profiling --- examples/master/device_db.pyon | 24 +++++++--- .../coredevice_examples/transport.py | 44 +++++++++++-------- 2 files changed, 44 insertions(+), 24 deletions(-) diff --git a/examples/master/device_db.pyon b/examples/master/device_db.pyon index 55d7f0893..e2fe7eed1 100644 --- a/examples/master/device_db.pyon +++ b/examples/master/device_db.pyon @@ -54,6 +54,18 @@ "class": "TTLOut", "arguments": {"channel": 5} }, + "ttl4": { + "type": "local", + "module": "artiq.coredevice.ttl", + "class": "TTLOut", + "arguments": {"channel": 6} + }, + "ttl5": { + "type": "local", + "module": "artiq.coredevice.ttl", + "class": "TTLOut", + "arguments": {"channel": 7} + }, "ttl_sma": { "type": "local", "module": "artiq.coredevice.ttl", @@ -106,25 +118,25 @@ # that it always resolves to a network-visible IP address (see documentation). "host": "::1", "port": 4000, - "command": "pdq2_controller -p {port} --bind {bind} --simulation --dump qc_q1_0.bin" + "command": "pdq2_controller --no-localhost-bind -p {port} --bind {bind} --simulation --dump qc_q1_0.bin" }, "qc_q1_1": { "type": "controller", "host": "::1", "port": 4001, - "command": "pdq2_controller -p {port} --bind {bind} --simulation --dump qc_q1_1.bin" + "command": "pdq2_controller --no-localhost-bind -p {port} --bind {bind} --simulation --dump qc_q1_1.bin" }, "qc_q1_2": { "type": "controller", "host": "::1", "port": 4002, - "command": "pdq2_controller -p {port} --bind {bind} --simulation --dump qc_q1_2.bin" + "command": "pdq2_controller --no-localhost-bind -p {port} --bind {bind} --simulation --dump qc_q1_2.bin" }, "qc_q1_3": { "type": "controller", "host": "::1", "port": 4003, - "command": "pdq2_controller -p {port} --bind {bind} --simulation --dump qc_q1_3.bin" + "command": "pdq2_controller --no-localhost-bind -p {port} --bind {bind} --simulation --dump qc_q1_3.bin" }, "electrodes": { "type": "local", @@ -132,8 +144,8 @@ "class": "CompoundPDQ2", "arguments": { "pdq2_devices": ["qc_q1_0", "qc_q1_1", "qc_q1_2", "qc_q1_3"], - "trigger_device": "ttl3", - "frame_devices": ["ttl0", "ttl1", "ttl2"] + "trigger_device": "ttl2", + "frame_devices": ["ttl3", "ttl4", "ttl5"] } }, diff --git a/examples/master/repository/coredevice_examples/transport.py b/examples/master/repository/coredevice_examples/transport.py index 748d3b7f7..c18fa7286 100644 --- a/examples/master/repository/coredevice_examples/transport.py +++ b/examples/master/repository/coredevice_examples/transport.py @@ -3,29 +3,29 @@ import numpy as np from artiq.experiment import * - from artiq.wavesynth.coefficients import SplineSource + transport = SplineSource( x=np.linspace(0, 10, 101), # waveform time y=np.random.rand(4*3*3, 101)*1e-6, # waveform data, # 4 devices, 3 board each, 3 dacs each ) + class Transport(EnvExperiment): """Transport""" def build(self): - self.core = self.get_device("core") - self.bd_sw = self.get_device("bd_sw") - self.pmt = self.get_device("pmt") - self.electrodes = self.get_device("electrodes") + self.setattr_device("core") + self.setattr_device("bd_sw") + self.setattr_device("pmt") + self.setattr_device("electrodes") - self.wait_at_stop = self.get_argument("wait_at_stop", - NumberValue(100*us)) - self.speed = self.get_argument("speed", NumberValue(1.5)) - self.repeats = self.get_argument("repeats", NumberValue(100)) - self.nbins = self.get_argument("nbins", NumberValue(100)) + self.setattr_argument("wait_at_stop", NumberValue(100*us)) + self.setattr_argument("speed", NumberValue(1.5)) + self.setattr_argument("repeats", NumberValue(100)) + self.setattr_argument("bins", NumberValue(100)) def calc_waveforms(self, stop): self.electrodes.disarm() @@ -74,26 +74,34 @@ class Transport(EnvExperiment): @kernel def repeat(self): - self.histogram[:] = [0 for _ in range(self.nbins)] - + hist = [0 for _ in range(self.bins)] for i in range(self.repeats): n = self.one() - if n >= self.nbins: - n = self.nbins - 1 - self.histogram[n] += 1 + if n >= self.bins: + n = self.bins - 1 + hist[n] += 1 + self.set_dataset("hist", hist) def scan(self, stops): for s in stops: - self.histogram = [] + self.histogram = [0 for _ in range(self.bins)] # non-kernel, build frames # could also be rpc'ed from repeat() self.calc_waveforms(s) # kernel part self.repeat() - # live update 2d plot with current self.histogram - # broadcast(s, self.histogram) def run(self): # scan transport endpoint stops = range(10, len(transport.x), 10) self.scan(stops) + + +# class Benchmark(Transport): +# def build(self): +# Transport.build(self) +# self.calc_waveforms(.3) +# +# @kernel +# def run(self): +# self.repeat()