Commit Graph

581 Commits

Author SHA1 Message Date
Sebastien Bourdeauducq dc593ec0f0 Merge branch 'rtio-sed' into sed-merge 2018-01-10 12:04:54 +08:00
whitequark 4d915ad15b compiler: do not permit str(...). (#878) 2017-12-27 03:10:50 +00:00
Robert Jördens a44f8282dc test_performance: relax network speed to 2 MB/s
At QUARTIQ I am getting 2.4/2.3 MB/s and with single switch at M-Labs we
apparently regularly met 2.2/2.2 MB/s. But with the current multiple
switches and one of them being a problematic switch that triggered #837
it looks like it is a tad slower.

http://buildbot.m-labs.hk/builders/artiq/builds/1818/steps/python_coverage_1/logs/stdio
2017-12-06 17:21:41 +01:00
Sebastien Bourdeauducq 4387b0be1e clean up rtio_log 2017-11-03 00:52:53 +08:00
Sebastien Bourdeauducq f3f83174b1 test: check that DMA can underflow 2017-10-31 00:10:13 +08:00
Sebastien Bourdeauducq 415fa00846 test: relax rtio test_loopback 2017-10-30 23:07:54 +08:00
Sebastien Bourdeauducq 20a5f095f8 test: use longer DMA sequence when playing it back repeatedly
The CPU has to keep up.
2017-10-30 23:06:38 +08:00
Sebastien Bourdeauducq 9bf189ca10 test: relax timing requirements when not using DMA handle
core_dma.playback() without handle incurs a round-trip with the comms
CPU and should not be used in critical real-time sections.

Closes #834.
2017-10-30 22:57:12 +08:00
whitequark 7dfe7d8c93 test: verify no network performance regression from current 2.2 MB/s. 2017-10-30 04:25:58 +00:00
whitequark fd3a09dd4d Fix ca254ec5. 2017-10-03 05:49:50 +00:00
whitequark e59b301a3b compiler: disallow op= on mutable values (fix #835).
In general, we can't reallocate a value in earlier stack frames,
or fixup references to it. This mainly impacts lists.
2017-10-02 01:55:26 +00:00
whitequark f86744c65c compiler: implement ~ operator (fix #836). 2017-10-01 19:33:18 +00:00
whitequark 491c7ef898 compiler: correct semantics of floating point % operator (fix #830). 2017-10-01 18:57:45 +00:00
whitequark 62f2693e36 compiler: correct semantics of integer % operator (#830). 2017-10-01 18:32:57 +00:00
Sebastien Bourdeauducq 5437f0e3e3 rtio: make sequence errors consistently asychronous 2017-09-29 14:40:06 +08:00
Sebastien Bourdeauducq 4e31e9a9ac test: relax test_rtio.test_loopback
With SED there are 8 additional FIFO output stages.
2017-09-26 17:13:02 +08:00
Sebastien Bourdeauducq 53860868f4 test/rtio: wait for counter >= now before checking for async errors 2017-09-16 17:52:39 +08:00
Sebastien Bourdeauducq 770ce2658f test: adapt SequenceError test to SED 2017-09-16 16:28:57 +08:00
mntng d19e70595a test_rpctool: always create new asyncio event loop 2017-08-29 04:00:09 -04:00
mntng 3952954c12 add unitttest for artiq_rpctool 2017-08-28 10:39:32 -04:00
mntng ea135f9d06 add unittest for artiq_compile and ELF artiq_run (#455) 2017-08-15 08:13:11 -06:00
Sebastien Bourdeauducq cf1de4b26a test_spi: convert to Unix EOL 2017-08-04 11:48:20 +08:00
mntng 692dc0803b test: add test for SPI core using SD card 2017-07-28 19:10:44 +08:00
Robert Jördens 471605ec1e pdq: move to https://github.com/m-labs/pdq 2017-07-19 17:35:28 +02:00
Robert Jördens d96c2abe44 pdq: read/write_reg -> get/set_reg
see also m-labs/pdq#14
2017-07-17 21:45:46 +02:00
whitequark ea7549cfa4 compiler: coerce `while` condition to bool.
Fixes #768.
2017-07-01 18:59:07 +00:00
whitequark 69fa9b38e0 test: actually run test_embedding.AsyncTest. 2017-06-25 05:28:32 +00:00
whitequark 31b52ff1b3 coredevice: do not desync kernel TCP stream on RPCReturnValueError.
And propagate the error upwards instead of trying to squeeze it
through the core device in futility.
2017-06-25 04:47:32 +00:00
Sebastien Bourdeauducq 6262969d46 test: relax test_dma_record_time 2017-06-21 18:33:58 +08:00
Sebastien Bourdeauducq 09d198c7a1 test: add test for exception on non-existent I2C bus 2017-06-19 15:32:09 +08:00
Robert Jördens 566ff73dff pdq: unify spi-PDQ and usb-PDQ protocols 2017-06-10 15:03:25 +02:00
whitequark ad2ee714c2 compiler: do not permit iterating str values.
This currently breaks badly on UTF-8, and doesn't even return
a value of a correct type.
2017-06-09 07:29:31 +00:00
whitequark 5d841d08e9 compiler: do not permit mutation of bytes values (#714). 2017-06-09 07:29:28 +00:00
whitequark 284382b1f5 compiler: add support for bytearray values in RPC (#714). 2017-06-09 07:15:25 +00:00
whitequark 9ed4e9c1cd compiler: add support for printing of bytearray values (#714). 2017-06-09 07:15:25 +00:00
whitequark e9564b15c8 compiler: add support for bytearray type (#714). 2017-06-09 07:15:24 +00:00
whitequark 5b4fde30a8 compiler: unbreak subscripts for bytes values (#714). 2017-06-09 07:10:48 +00:00
whitequark 66a683f583 compiler: add support for bytes values in RPC (#714). 2017-06-09 07:10:48 +00:00
whitequark 778e7dc2ab compiler: add support for concatenating bytes values (#714). 2017-06-09 07:10:48 +00:00
whitequark 7b2da5294f compiler: add support for printing of bytes values (#714). 2017-06-09 07:10:48 +00:00
whitequark dba4e1a28b compiler: add support for bytes type and b"x" literals (#714). 2017-06-09 07:10:48 +00:00
Robert Jördens 2458da1ade pdq: get new host driver, adapt 2017-05-31 00:20:10 +02:00
Sebastien Bourdeauducq 5fc953119e fix usage of CommMgmt 2017-05-22 17:32:11 +08:00
Sebastien Bourdeauducq 5ccca74a3f fold comm device into core device 2017-05-22 15:45:45 +08:00
Sebastien Bourdeauducq e7382f4753 fix test_ctlmgr 2017-05-22 15:04:46 +08:00
Sebastien Bourdeauducq 0ae5e6d8b1 test_lda: more thorough and consistent test of simulation mode 2017-05-22 00:26:05 +08:00
Sebastien Bourdeauducq 3ed70afaa1 Use commandline prefix for controllers
This keeps them better organized and consistent with the artiq_* naming scheme.
Tab completion from aqctl_ also lists all the controllers installed on a machine.
2017-05-22 00:22:10 +08:00
Sebastien Bourdeauducq 8cf0628435 fix lit tests 2017-05-18 23:41:01 +08:00
Sebastien Bourdeauducq cd757c0f16 generate device database from executable python file 2017-05-18 23:14:55 +08:00
whitequark c5d7445973 compiler: reject reachable implicit return if not returning TNone.
Fixes #718.
2017-04-21 18:11:14 +00:00
whitequark ed2b10c5aa compiler: in codegen for delay(), round fp instead of truncating.
Consider delay(8*us). It results in the following computation...
  >>> 8*1e-06/1e-09
  7999.999999999999
with the result promptly getting truncated to 7999.

Fixes #706.
2017-04-21 17:36:44 +00:00
whitequark fd994ceef3 DMA: various fixes to bring tests in line. 2017-04-20 20:05:03 +00:00
Sebastien Bourdeauducq e8f7f8ef9c DMA: speed up playback
Time reduced from 1.53µs to 1.37µs.
2017-04-19 10:59:12 +08:00
whitequark 41c4de4556 DMA: add API for a much faster replay using handles. 2017-04-18 08:20:12 +00:00
whitequark 9dfe9c1248 DMA: improve recording performance.
This commit moves DMA serialization code to the kernel CPU
(to cope with the existence of rtio_output_wide) and batches
the resulting sequences. This results in less data being transferred
between kernel and comms CPUs (24 octets with one pointer before,
18 octets with no pointers now, for the common case of rtio_output),
but most importantly reduces cache flushes, which now happen
once per 64k octets.

On average, it now takes about 15us to record a single RTIO event
in a DMA trace.

Fixes #712.
2017-04-15 07:29:52 +00:00
whitequark 3a1fc729cf compiler: refactor type annotations recognizing in kernels.
The new implementation is much more generic, more robust,
and shares code with the same for syscalls as well as RPCs.

Fixes #713.
2017-04-13 08:26:10 +00:00
whitequark 31048f4b6a compiler: fix monomorphization of coerced integer literals.
Fixes #703.
2017-04-12 04:11:47 +00:00
Sebastien Bourdeauducq f314f8b8f5 relax test_rpc_timing 2017-04-08 22:45:08 +08:00
whitequark 14ae1cc100 runtime: advance now on DMA replay.
Fixes #700.
2017-04-05 18:34:36 +00:00
whitequark 56918fb375 test: re-enable DMA tests as the feature is now stable. 2017-04-05 16:43:22 +00:00
whitequark 8b98e1ea6d test: relax test_rpc_timing: rpc_time_mean <2ms → <3ms. 2017-03-31 20:41:47 +00:00
whitequark 245e186347 Commit missing parts of 948ed6fb. 2017-03-29 18:34:08 +00:00
Sebastien Bourdeauducq 2e2d0be201 skip crashing DMA tests on buildbot 2017-03-29 09:36:51 +08:00
whitequark 7eb368fd5d test: add DMA test that checks the analyzer trace. 2017-03-28 14:22:20 +00:00
Sebastien Bourdeauducq 6caab4d10b test: verify that RTIO collisions appear in log 2017-03-27 18:08:03 +08:00
Sebastien Bourdeauducq 70343b244d test: add more RTIO slack in test_clock_generator_loopback 2017-03-27 17:26:23 +08:00
Sebastien Bourdeauducq 58ee09dbdc test: re-enable test_clock_generator_loopback
It passes now for some reason.
2017-03-27 17:26:02 +08:00
Sebastien Bourdeauducq b74d6fb9ba make collision and busy asynchronous errors, and simplify CPU/gateware handshake for output errors and reads 2017-03-27 16:32:23 +08:00
Sebastien Bourdeauducq 1ee3f96482 test: self.break_realtime → self.core.break_realtime 2017-03-27 16:31:11 +08:00
whitequark ac9e8b8568 test: avoid underflow in DMA replay test. 2017-03-17 12:09:02 +00:00
whitequark dbea679e96 Revert "test: relax test_rpc_timing on Windows."
This reverts commit e9cf451c0b.
2017-03-17 11:34:45 +00:00
whitequark e9cf451c0b test: relax test_rpc_timing on Windows. 2017-03-17 11:20:16 +00:00
whitequark 7dc7dcda2c test: relax test_pulse_rate_dds to only catch catastrophic slowdown. 2017-03-17 11:17:47 +00:00
Sebastien Bourdeauducq f121ca20fe test: relax test_pulse_rate_dds 2017-03-03 18:10:27 +08:00
whitequark a4ece19614 Implement DMA playback. 2017-02-28 21:28:40 +00:00
Sebastien Bourdeauducq 9cfa3e704b fix test_analyzer 2017-02-27 19:19:46 +08:00
Sebastien Bourdeauducq 3b386aa590 fix test_moninj import 2017-02-27 18:44:32 +08:00
Sebastien Bourdeauducq 7d6ebabc1b reorganize core device communication code 2017-02-27 18:37:30 +08:00
Sebastien Bourdeauducq d16073fcaa test: add moninj unittest 2017-02-27 15:56:58 +08:00
whitequark 3a1f14c16c compiler: fix overly strict constness analysis.
Before this commit, the following code would fail to compile...
  obj.foo.bar = True
... if foo is marked kernel_invariant in obj, even if bar is not
marked as such in obj.foo.
2017-02-26 01:58:21 +00:00
whitequark d04e611232 firmware, compiler: rename rpc functions to be more consistent. 2017-02-25 14:12:58 +00:00
whitequark 25c9b8827a firmware: mark __artiq_{re,}raise as #[unwind].
This is required for correctness.
2017-02-05 09:04:22 +00:00
whitequark f94028b8df Fix c39394b. 2017-02-04 16:23:32 +00:00
whitequark c39394b4d5 firmware: port the exception handling routines to Rust. 2017-02-04 08:21:07 +00:00
whitequark b9cbedceb1 firmware: migrate last vestiges of the old runtime build system. 2017-02-03 12:59:35 +00:00
whitequark fd8b11532f compiler, firmware: use Pascal strings everywhere.
This removes a large amount of very ugly code, and also simplifies
the compiler and runtime.
2017-02-03 11:53:27 +00:00
whitequark 9c93c760fc firmware: do not use PIC in Rust code.
This fixes test_pulse_rate and test_pulse_rate_dds by making
rtio_output slightly faster.
2017-02-02 12:22:55 +00:00
whitequark 0df8a24135 Fix c2cf60e. 2017-02-02 01:08:20 +00:00
whitequark ab71c9a0ba compiler: the len builtin is not polymorphic, coerce the result.
Fixes #659.
2017-01-31 21:28:20 +00:00
whitequark 2f37b1d1c0 compiler: support methods defined on singleton instances.
Fixes #638.
2017-01-30 10:10:21 +00:00
Sebastien Bourdeauducq 657afd770e artiq/test/gateware -> artiq/gateware/test
This allows gateware simulations to be skipped or not considered for coverage when using test discovery.
2017-01-30 09:00:55 +08:00
whitequark 609fd3d902 test: skip test_clock_generator_loopback as well.
Both tests pass locally, which means there's some conda screwup
that prevents them from working on CI.
2017-01-27 11:47:26 +00:00
whitequark c529cefc89 conda: bump llvmlite-artiq dependency. 2017-01-27 11:14:53 +00:00
whitequark 477664f931 test: temporarily skip pulse_rate_dds. 2017-01-26 20:53:30 +00:00
whitequark 0b67396630 test: convert test_pulse_rate_dds to use mu.
Before this commit, this test was actually measuring soft-FP
performance.
2017-01-25 11:26:30 +00:00
Sebastien Bourdeauducq 043780d603 drtio: fix DRTIOSatellite invokation in test 2017-01-15 17:30:02 -06:00
Sebastien Bourdeauducq 6805feb494 drtio: report truncated packets 2017-01-12 23:44:45 -06:00
Sebastien Bourdeauducq e624f45369 drtio: remove FIFO empty local detection optimization
It optimizes a marginal case, it is difficult to get right
(need to know the size of the FIFO for each channel), and
it adds complexity and potential bug sources.
2017-01-10 14:31:46 -06:00
Sebastien Bourdeauducq 8be9a827ba test: move dsp tests into their own folder 2017-01-05 18:25:38 +01:00
Robert Jördens f5f662200b fir: streamline, optimize DSP extraction, left-align inputs 2016-12-20 21:39:51 +01:00
jboulder baac555f96 add device for Korad KA3005P programmable DC power supply 2016-12-19 09:31:21 +01:00
Robert Jördens 15b48be6e4 test/sawg: adapt to new latency spec 2016-12-14 19:43:30 +01:00
Robert Jördens 7be27d7116 fir: add upsample transfer function test 2016-12-14 19:16:07 +01:00
Sebastien Bourdeauducq 3b5abae935 drtio: fix clock domain conflict 2016-12-13 14:19:49 +08:00
Robert Jördens c63fa46430 Merge branch 'phaser2'
* phaser2: (157 commits)
  sawg/hbf: tweak pipeline for timing
  fir: register multiplier output
  conda/phaser: build-depend on numpy
  sawg: reduce coefficient width
  sawg: fix latency
  test/fir: needs mpl. don't run by default
  test/sawg: patch spline
  sawg: use ParallelHBFCascade to AA [WIP]
  fir: add ParallelHBFCascade
  fir: add ParallelFIR and test
  gateware/dsp: add FIR and test
  README_PHASER: update
  sawg: documentation
  sawg: extract spline
  sawg: document
  sawg: demo_2tone
  sawg: round to int64
  gateware/phaser -> gateware/ad9154_fmc_ebz
  phaser: fix typo
  sawg: merge set/set64
  ...
2016-12-12 17:31:39 +01:00
Sebastien Bourdeauducq 4b61020b27 drtio: reset more local state 2016-12-12 18:48:10 +08:00
Robert Jördens f4ceace253 test/fir: needs mpl. don't run by default 2016-12-08 15:49:50 +01:00
Robert Jördens efc95043c4 test/sawg: patch spline 2016-12-08 15:49:23 +01:00
Robert Jördens a629eb1665 fir: add ParallelHBFCascade 2016-12-08 15:30:26 +01:00
Robert Jördens d303225249 fir: add ParallelFIR and test 2016-12-08 15:21:04 +01:00
Robert Jördens 7e0f3edca5 gateware/dsp: add FIR and test 2016-12-07 19:14:23 +01:00
Sebastien Bourdeauducq eb8d630148 rtio: test DMA RTIO wait state 2016-12-05 18:01:48 +08:00
Sebastien Bourdeauducq 75ea13748a rtio: fix DMA data MSB and stop signaling, self-checking unittest 2016-12-05 18:01:48 +08:00
Sebastien Bourdeauducq 43a5455058 rtio: DMA unittest WIP 2016-12-05 18:01:48 +08:00
Sebastien Bourdeauducq 74fe5c3ef0 test: make gateware simulations discoverable 2016-12-05 18:01:48 +08:00
whitequark b5a684830d compiler: fix parsing of TList annotations (fixes #632). 2016-12-05 03:18:56 +00:00
Sebastien Bourdeauducq 88ad054ab6 Merge branch 'drtio' 2016-12-03 23:25:17 +08:00
Robert Jördens a324f4faa1 Merge remote-tracking branch 'm-labs/master' into phaser2
* m-labs/master:
  compiler: monomorphize int64(round(x)) to not lose precision.
2016-12-02 18:11:29 +01:00
whitequark 68de724554 compiler: monomorphize int64(round(x)) to not lose precision.
This applies to any expression with an indeterminate integer type
cast to int64(), not just round().
2016-12-02 15:02:44 +00:00
Robert Jördens 6e9bc7c05d sawg: merge set/set64 2016-12-01 16:45:54 +01:00
Robert Jördens 93a853a0e0 test/sawg: non trivial coarse_ref_period 2016-12-01 16:00:06 +01:00
Robert Jördens 01057dfb6d test/sawg: check 48 bit frequency 2016-11-30 11:21:25 +01:00
Robert Jördens ea04fb2704 test/sawg: skip 2tone demo test 2016-11-30 11:02:41 +01:00
Robert Jördens ed6d1e73cc sawg: cleanup 2016-11-30 10:52:35 +01:00
Robert Jördens dbf72f5fde sawg: extend unittests 2016-11-29 20:52:51 +01:00
Robert Jördens 4f813c4977 test/sawg: rtio_output_wide fixes 2016-11-29 18:11:38 +01:00
Robert Jördens 313aa32779 sawg: artiq-python list scoping 2016-11-29 17:20:02 +01:00
Robert Jördens 23fd225947 sawg: spline knot packing/conversion, unittest 2016-11-29 14:49:07 +01:00
Sebastien Bourdeauducq b2450c7c56 drtio: test large data 2016-11-27 12:57:12 +08:00
Sebastien Bourdeauducq d381dd5384 drtio: remove stale signal from test 2016-11-25 18:33:55 +08:00
Sebastien Bourdeauducq 8b736ddbc9 drtio: update test 2016-11-24 00:37:53 +08:00
Robert Jördens 6799bb097a sawg: adapt to int32/int64 change 2016-11-22 11:57:34 +01:00
Sebastien Bourdeauducq 3459793586 Merge branch 'master' into drtio 2016-11-22 15:15:22 +08:00
Robert Jördens 4160490e0a Merge branch 'phaser' into phaser2
* phaser: (23 commits)
  RELEASE_NOTES: update
  pipistrello: add some inputs
  Remove last vestiges of nist_qc1.
  Fully drop AD9858 and kc705-nist_qc1 support (closes #576).
  coredevice.dds: reimplement fully in ARTIQ Python.
  compiler: unbreak casts to int32/int64.
  analyses.constness: fix false positive on x[...].
  inferencer: significantly improve the op-assignment diagnostic.
  Fix tests.
  Move mu_to_seconds, seconds_to_mu to Core.
  artiq_devtool: don't crash on invalid utf-8.
  artiq_devtool: detect a race condition during connect.
  llvm_ir_generator: handle no-op coercions.
  conda: use development version of migen/misoc
  Revert accidentally committed code.
  Revert "gateware: increase RTIO FIFO sizes for NIST_CLOCK. Closes #623"
  analyses.invariant_detection: implement (#622).
  Fix whitespace.
  coredevice.dds: work around the round(numpy.float64()) snafu.
  coredevice.dds: update from obsolete int(width=) syntax (fixes #621).
  ...
2016-11-21 17:29:46 +01:00
Robert Jördens f7e8961ab0 Merge branch 'master' into phaser
* master: (23 commits)
  RELEASE_NOTES: update
  pipistrello: add some inputs
  Remove last vestiges of nist_qc1.
  Fully drop AD9858 and kc705-nist_qc1 support (closes #576).
  coredevice.dds: reimplement fully in ARTIQ Python.
  compiler: unbreak casts to int32/int64.
  analyses.constness: fix false positive on x[...].
  inferencer: significantly improve the op-assignment diagnostic.
  Fix tests.
  Move mu_to_seconds, seconds_to_mu to Core.
  artiq_devtool: don't crash on invalid utf-8.
  artiq_devtool: detect a race condition during connect.
  llvm_ir_generator: handle no-op coercions.
  conda: use development version of migen/misoc
  Revert accidentally committed code.
  Revert "gateware: increase RTIO FIFO sizes for NIST_CLOCK. Closes #623"
  analyses.invariant_detection: implement (#622).
  Fix whitespace.
  coredevice.dds: work around the round(numpy.float64()) snafu.
  coredevice.dds: update from obsolete int(width=) syntax (fixes #621).
  ...
2016-11-21 17:29:39 +01:00
whitequark 55ea68da7f compiler: unbreak casts to int32/int64. 2016-11-21 14:20:28 +00:00
whitequark 35f4449ef2 inferencer: significantly improve the op-assignment diagnostic.
Before this commit, it displayed incorrect output if an error
appeared on 2nd run and beyond, and displayed messages for trying
to do "num32 -= num64" that made very little sense.
2016-11-21 14:20:24 +00:00
Robert Jördens b226dbd257 sawg: unittest data format 2016-11-21 12:35:57 +01:00
whitequark 3485c83429 Fix tests. 2016-11-21 06:40:47 +00:00
whitequark 009d396740 Move mu_to_seconds, seconds_to_mu to Core. 2016-11-21 05:37:30 +00:00
whitequark 7af41bd29c llvm_ir_generator: handle no-op coercions. 2016-11-21 02:25:34 +00:00
Robert Jördens d678bb3fb6 phaser: update sawg tests 2016-11-18 15:23:56 +01:00
Sebastien Bourdeauducq bb047aabe9 drtio: simpler link layer 2016-11-17 22:32:39 +08:00
Robert Jördens 424a1f8f4e dsp: move test tools 2016-11-16 13:39:19 +01:00
Sebastien Bourdeauducq 09363e1da8 drtio: aux controller unittest 2016-11-16 19:45:28 +08:00
Sebastien Bourdeauducq 7fa9a4efc3 drtio: aux controller unittest WIP 2016-11-15 12:02:53 +08:00
Robert Jördens b9ce2bb1f0 Merge branch 'phaser' into phaser2
* phaser: (127 commits)
  phaser: use misoc cordic
  phaser: fix DDS dummy cfg
  runtime: disable the Nagle algorithm entirely.
  runtime: buffer RPC send packets.
  runtime: don't print debug messages to the UART.
  runtime: print microsecond timestamps in debug messages.
  artiq_devtool: abort if build failed.
  conda: bump llvmlite-artiq dep.
  conda: bump llvmlite-artiq dep.
  llvm_ir_generator: use !{→unconditionally.}invariant.load metadata.
  artiq_devtool: more robust port forwarding.
  setup: remove paramiko dependency (optional and developer-only)
  artiq_devtool: implement.
  artiq_compile: actually disable attribute writeback.
  conda: use pythonparser 1.0.
  conda: tighten pythonparser dependency (fixes #600).
  doc: clarify kernel_invariant doc (fixes #609).
  compiler: Emit all-kernel_invariant objects as LLVM constants
  conda: update for LLVM 3.9.
  add has_dds, use config flags
  ...
2016-11-13 17:30:37 +01:00
Robert Jördens aedb6747f2 Merge branch 'master' into phaser
* master: (47 commits)
  runtime: disable the Nagle algorithm entirely.
  runtime: buffer RPC send packets.
  runtime: don't print debug messages to the UART.
  runtime: print microsecond timestamps in debug messages.
  artiq_devtool: abort if build failed.
  conda: bump llvmlite-artiq dep.
  conda: bump llvmlite-artiq dep.
  llvm_ir_generator: use !{→unconditionally.}invariant.load metadata.
  artiq_devtool: more robust port forwarding.
  setup: remove paramiko dependency (optional and developer-only)
  artiq_devtool: implement.
  artiq_compile: actually disable attribute writeback.
  conda: use pythonparser 1.0.
  conda: tighten pythonparser dependency (fixes #600).
  doc: clarify kernel_invariant doc (fixes #609).
  compiler: Emit all-kernel_invariant objects as LLVM constants
  conda: update for LLVM 3.9.
  add has_dds, use config flags
  Revert "Revert "Revert "Revert "Update for LLVM 3.9.""""
  Revert "Revert "Revert "Update for LLVM 3.9."""
  ...
2016-11-13 16:54:28 +01:00
whitequark feed91d8b2 runtime: buffer RPC send packets.
This brings mean RPC time from ~45ms to ~2ms.

The cause of the slowness without buffering is, primarily, that lwip
is severely pessimized by small writes, whether with Nagle on or off.
(In fact, disabling Nagle makes it function *better* on many small
writes, which begs the question of what's the point of having Nagle
there in the first place.) In practical terms, the slowness appears
only when writing a 4-byte buffer (the synchronization segment);
writing buffers of other sizes does not trigger the problem.

This all is extremely confusing and the fix is partly palliative,
but since it seems to work reliably and we're migrating off lwip
I think it is unwise to spend any more time debugging this.
2016-11-12 23:06:33 +00:00
David Nadlinger bfbdba9205 compiler: Emit all-kernel_invariant objects as LLVM constants
This enables constant propagation optimisations, as verified by
the included test case. This is only a first stop-gap measure, though;
we should support optimisation based on kernel invariants on a more
fine-grained level.
2016-11-09 14:50:48 +00:00