Title: Gedae Graphical Editor Syntax and Semantics II
1Gedae Graphical Editor Syntax and Semantics II
- William I. LundgrenGedae, Inc.Telephone 856
231 4458Fax 856 231 1403Email
gedae_at_gedae.comWebsite www.gedae.com
2Overview
- Valve Behavior
- Processing Stream Segments
- Merging Data
- Incomplete Merges
- Types of Valves, Branches, Merges, and Switches
- Controlling Processing Using Valves
- Examples of Illegal Graphs
- Use of Encoded Streams to Synchronize Parameter
Changes
3Valve Behavior
- Valves are boxes with 3 inputs and 1 output
- Inputs
- The input to a valve is of any type
- The ID of a valve is a constant integer input
- The control stream to a valve is an encoded
stream of integers - Output
- The output from a valve is of the same type as
the input - There is 1 control token for each data token if
the control token is equal to the valve ID, then
the token is passed, otherwise it is discarded
4Definition of Stream Segments
- Stream segments consist of a finite number of
tokens - A graph (or subgraph) that operates on segments
should be in a known state when it begins
processing each segment - The graph (or subgraph) that operates on segments
may output a single result for each segment - In some cases, an infinite stream is broken into
segments and only some of the segments should be
processed - In other cases, the segments are produced
externally
5Using a Valve to Process Segments of Data
StreamsExample 6-1
The valve only passes data when control signal is
equal to the valve ID
6Using a Branch to Form Stream SegmentsExample 6-2
7Branching and Merging DataExample 6-3
Output is identical to the input
Complete branch tokens go through one branch or
the other
8Incomplete Merges Decimate TokensExample 6-3a
Because this is an incomplete merge, control
tokens not equal to 0 or 1 will lead to dropped
data tokens
24 control tokens have a value of 2, so 24 data
tokens are dropped
9Types of Valves
- The control stream of a valve can be run-length
encoded or normal. If the control stream is
encoded, then the valve has the prefix e. - evalve uses an encoded control stream.
- valve uses a non-encoded control stream.
- Normally, a valve lets tokens pass if the token
on the control stream is equal to the valves ID.
An inverse valve does the opposite it compares
the token from the control stream to a vector of
IDs. If the control value is not in the vector,
then the data token is produced on the output.
Inverse valves have the prefix i. - x_ievalve is an inverse valve.
- x_evalve is a valve.
10Types of Branches and Merges
- Like valves, the control stream can be encoded or
not encoded as marked by the e prefix. - Branches and merges can create and combine two,
three, or four queues, as well as a family of
queues. If a family is combined (or created),
then the suffix f is added. If three or four
paths are combined (or created), then the number
of queues (3 or 4) is added as a suffix. If
two paths are combined (or created), then no
suffix is added. - mx_ebranch4 creates four paths.
- mx_ebranchf creates a family of paths.
11Types of Branches and Merges
- A branch and merge can be complete or incomplete.
A branch (merge) is considered complete if all
possible IDs on the control stream map to an
output (input) queue. A suffix _c indicates a
complete branch or merge. - v_ebranch3_c maps any control ID not 0, 1, or 2
to output 2. - v_ebranch3 drops tokens corresponding to IDs not
0, 1, or 2. - The control IDs for a branch or merge indicate
the index of the chosen stream. Alternatively, a
table of indices can be searched for the control
stream ID. The index where the ID is found
indicates the index of the chosen stream. The
suffix T indicates that a look-up table is
used. - vv_branchT3_c uses a look-up table to find the
index of the queue. - vv_branch3_c uses the control token as the
index of the queue.
12Using Valves to Control Data ProcessingExample
6-5
This parameter controls whether the wideband
noise removal is engaged
13Using Valves to Control Data ProcessingExample
6-5 (continued)
Because the value of intel_on is 1, data is
processed by the rcepstrum, sub_noise, v_multK,
and invrcepstrum
14Using Valves to Control Data ProcessingExample
6-5 (continued)
Because the value of intel_on is 0, the
rcepstrum, sub_noise, v_multK, and invrcepstrum
are bypassed
15Mode ControlExample 6-5a
Control the removal of noise based on energy
Noisy signal
Processed signal
The noise removal is active when the control
signal is 1 notice the reduced noise in the
processed signal
Control signal
Signal energy
16Mode ControlExample 6-5a (continued)
Data route with Intel off
Data route with Intel on
Note the boxes controlled are recepstrum,
sub_noise, v_multK and invrcepstrum
17Mode ControlExample 6-5a (continued)
The controlled boxes are intermittently inactive
18Illegal Valve Graphs
- Graphs using valves, branches, and/or merges are
illegal if a dynamic queue is contained inside a
static schedule. - This illegality can occur if a stream is
decimated by a branch and merge or by a valve,
and then that decimated stream is input to a box
that has other inputs that are non-decimated or
unequally decimated.
19Illegal Valve Graph 1Feed Forward with an
Incomplete MergeExample 6-6
Dynamic output drops tokens, causes mismatch in
availability on addlta addltb
Same static schedule
20Illegal Valve Graph 2Feed Back with an
Incomplete MergeExample 6-7
Not enough tokens to match oscs output
Tokens are lost when controller produces 2
21Encoded StreamsExample 6-10
22Encoded StreamsExample 6-10
23Encoded StreamsExample 6-10 (continued)
- This example assumes that the buffers are of size
100 and it takes 1 time unit to complete multK_2,
the data transfer, and multK_3. The multK_2 and
multK_3 are on different processors.
Xfer buffer
multK_3
multK_2
Set M to 2
Buffer 12
t1
Buffer 22
Buffer 12
t2
Buffer 32
Buffer 22
Buffer 12/2
t3
Buffer 32
Buffer 22/2
Buffer 42
t4
Set M to 3
Buffer 32/3
Buffer 53
Buffer 42
t5
Buffer 63
Buffer 53
Buffer 42/3
t6
Buffer 63
Buffer 53/3
Buffer 73
t7
Buffer 83
Buffer 73
Buffer 63/3
t8
24Encoded StreamsExample 6-10 (continued)
- This example assumes that the buffers are of size
100 and it takes 1 time unit to complete multK,
the data transfer, and multK_1. The multK and
multK_1 are on different processors.
Xfer buffer
multK_1
multK
Set M to 2
Buffer 12
t1
(2,100)
(2,100),
Buffer 22
Buffer 12
t2
(2,100)
(2,100),(2,100)
Buffer 32
Buffer 22
Buffer 12/2
t3
(2,100)
(2,100),(2,100)
Buffer 32
Buffer 22/2
Buffer 42
t4
(2,100)
(2,100),(2,100)
Set M to 3
Buffer 32/2
Buffer 53
Buffer 42
t5
(3,100)
(3,100),(2,100)
Buffer 63
Buffer 53
Buffer 42/2
t6
(3,100)
(3,100),(3,100)
Buffer 63
Buffer 53/3
Buffer 73
t7
(3,100)
(3,100),(3,100)
Buffer 83
Buffer 73
Buffer 63/3
t8
(3,100)
(3,100),(3,100)