Re: [ARTIQ] scans and generators on core device?

2017-10-20 Thread Peter Zotov via ARTIQ

On 2017-10-19 16:36, Slichter, Daniel H. (Fed) via ARTIQ wrote:

Judging from the absence of replies to this email, we will not support
generators on the core device nor MultiScanManager.


My main question with this is about time efficiency -- if you were to
go to the effort to support this on the core device, will it end up
taking a lot longer (i.e. processor slack) than the current way of
just passing a list to the kernel which it can step through to scan
something?


Slightly slower for integer-only (after optimization) scans, and
quite a bit slower for FP scans, than just traversing the list.
However, compiling and loading very large lists as parts of kernels
is slow, so there's a spectrum from 1-10 steps (unrolled list
is clearly better) to 10,000-100,000 steps (generators are
clearly better), with some mixture of these in between.

--
Peter Zotov
___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq


Re: [ARTIQ] ARTIQ implementation

2016-09-29 Thread Peter Zotov

On Thursday, September 29, 2016 10:28 AM, Trung Nguyen wrote:

The target is incorrect. It was "or1k-unknown" but I read the note in
released manual as below:

We’re using an |or1k-linux| target because it is necessary to 
enable

shared library support in |ld|, not because Linux is involved.

from this link:
https://m-labs.hk/artiq/manual-release-2/installing_from_source.html#install-from-source
So I tried to change the target to "or1k-linux" but it does work.


The note about using the or1k-linux target only refers to building 
binutils,
as it is a workaround to its undesirable behavior. Everything else uses 
the target

or1k-unknown as it is the correct one.

--
Peter Zotov
___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq


[ARTIQ] Storage for static experiments

2016-01-10 Thread Peter Zotov

Hello,

In the spec for device storage, there is this item:

4. Storage on the core device. The following items shall
be implemented:
  * Storage for static experiments.

What does it mean?

--
Peter Zotov
___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq


[ARTIQ] New compiler announcement

2015-12-10 Thread Peter Zotov

Hi all,

I have recently landed a new compiler for the ARTIQ Python
dialect. The major improvement it brings is diagnostics;
the goal is to ensure that no programmer error would result
in a compile-time (unhandled exception in ARTIQ) or
run-time (memory corruption) crash, but rather display
a useful, human-readable diagnostic at compile time and
raise an exception at run-time.

It also recognizes a much larger subset of Python without
degradation of performance via judicious use of an ML-style
type system, e.g. closures are now supported as long as they
do not escape their parent function, and the compiler
verifies that they indeed do not, or rejects the code.

Some other changes I'd like to highlight:
  * Nested lists are supported everywhere.
  * Extended slices (e.g. `x[1:5:2]`) are supported.
  * Strings can be passed to RPCs.
  * print() now prints into core device log, not host console;
it is much faster but limited by ringbuffer size.
  * The 'assert' statement has gained much functionality;
in an expression like `assert h() == 1 and g() == []`,
when an assertion failure is detected, the values of
h() and g() will be printed into core device log.

In practice, of course, any large feature will contain bugs.
Thus I ask everyone to test their existing code on
the new compiler and otherwise stretch its limits.

Currently known deficiencies:
  * Conda package for Windows are not yet updated.
  * Loop unrolling (for interleaving) does not yet work.
  * It is possible to cause memory corruption via
infinite recursion.

--
Peter Zotov
___
ARTIQ mailing list
https://ssl.serverraum.org/lists/listinfo/artiq