Hi Amichi,

> 1) In the latest public release (2.1) of the compiler, what StreamIt
> specific analysis, optimizations and verifications are implemented?

The notable stream-specific optimizations are:
- linear optimizations (-linearpartition) as described in PLDI'03
- cache optimizations (-cacheopt) as described in LCTES'05
- statespace optimizations (-statespace) as described in CASES'05

When targeting a multicore or cluster (-cluster), the compiler also
implements partitioning, fusion, and load-balancing algorithms.

There are also an internal set of graph transformations, including
graph canonicalization, synchronization removal, refactoring of
parallel components, and fission/fusion.  They can be manually
directed with the -optfile option.

You can view an exhaustive list of optimizations by typing "strc
--much-more-help".

>        - Is there more than the translation from StreamIt syntax to a Java
> or C++ representation with a preservation of the StreamIt semantics?

Yes, the -simpleC option also translates StreamIt to vanilla C.

There are also deprecated options to target a C runtime library (-uni)
or a single C function (-standalone).

> 2) Why did you make the decision to translate from StreamIt syntax to
> Java and then to C/C++?

Translation through Java provided two benefits:

- It was easy to write a runtime library in Java, which could emulate
correct StreamIt execution, for testing application correctness.

- Those familiar with Java can use Java syntax, rather than StreamIt
syntax, as input to the StreamIt compiler.

Note that we do not support the full generality of Java -- within a
filter's computation, we prohibit manipulation of objects.  We are
just using a Java API to specify the structure of the stream graph.

The StreamIt compiler emits C/C++ (as opposed to assembly code)
because most of its optimizations are very high level (fission/fusion
of filters, assignment of filters to processors, etc.)  We chose to
rely on the node compilers to generate efficient statement-level code
from C/C++.

>        - Is there a version of StreamIt that goes straight to C/C++ without
> java inbetween?

No, the compiler itself inputs Java.

>        - What happened to the SimpleC version?

It should be supported in our latest release.  Please contact me
directly if you are experiencing trouble.

> 3) Although StreamIt is supposed to be architecture agnostic, for the
> case that it doesn't have an full OS underneath it, have you dealt at
> all with exposing systems level facilities to the language?

We have tried to prevent architecture-specific features from creeping
into the language.  In cases where OS support (e.g., for threads) is
lacking, we have incorporated the needed functionality into the
corresponding backend of the compiler.  For example, we statically
schedule filter interleavings for execution on Raw, rather than
relying on any multiplexing by an OS.

Hope this helps, please let me know if you have any additional questions.

-Bill

_______________________________________________
StreamIt-users mailing list
[email protected]
https://lists.csail.mit.edu/mailman/listinfo/streamit-users

Reply via email to