A
Target
object has methods for generating a schedule, compiling the code, and running the code (which may involve downloading code to the target hardware and beginning its execution). There also may be child targets (for representing multiprocessor targets) together with methods for scheduling the communication between them. Targets also have parameters that are user specified. There are four targets in the CG domain; these are described below.
STRING
) Default = $HOME/PTOLEMY_SYSTEMS
This is the directory to which all generated files will be written to.
STRING
) Default = ACYLOOP
The choices are DEF, CLUST, SJS, or ACYLOOP. Case does not matter; ACYLOOP is the same as AcyLoOP. If the value is DEF, no attempt will be made to construct a looped schedule. This can result in very large programs for multirate systems, since inline code generation is used, where a codeblock is inserted for each appearance of an actor in the schedule. Setting the level to CLUST invokes a quick and simple loop scheduler that may not always give single appearance schedules. Setting it to SJS invokes the more sophisticated SJS loop scheduler [Bha93c], which can take more time to execute, but is guaranteed to find single appearance schedules whenever they exist. Setting it to ACYLOOP invokes a scheduler that generates single appearance schedules optimized for buffer memory usage [Mur96][Bha96], as long as the graph is acyclic. If the graph is not acyclic, and ACYLOOP has been chosen, then the target automatically reverts to the SJS scheduler. For backward compatibility, "0" or "NO", "1", and "2" or "YES" are also recognized, with "0" or "NO" being DEF, "1" being CLUST, and "2" or "YES" being SJS. NOTE: Loop scheduling only applies to uniprocessor targets; hence, this parameter does not appear in the FullyConnected
target.
STRING
) Default =rsh
commands are used to place files on that computer and to invoke the compiler. You should verify that your .rhosts file is properly configured so that rsh
will work.
STRING
) Default =INT
) Default = YES
If this flag is set to YES
, then the generated code will be displayed on the screen.
INT
) Default = YES
If this flag is set to YES
, then the generated code will be compiled (or assembled).
INT
) Default = YES
If this flag is set to YES
, then the compiled code will be loaded onto a chip.
INT
) Default = YES
If this flag is set to YES
, then the generated code is run.
directory
parameter above. This parameter has the same functionality as above.
The parameters for FullyConnected are:
INT
) Default = 2
Number of processors in the target architecture.
INT
) Default = 1
This is the time required, in processor cycles, to send or receive one datum in the multiprocessor architecture. Sending and receiving are assumed to take the same amount of time.
INT
) Default = NO
If this is YES
, then all invocations of a star are scheduled onto the same processor.
INT
) Default = NO
If this is YES
, then the processor assignment is done manually by the user by setting the procId
state in each star.
INT
) Default = NO
If this is YES
, then the automatically generated schedule is overridden by manual assignment. This feature requires improvements in the user interface before it can be implemented; hence, the default is NO
.
STRINGARRAY
) Default = default-CG
This parameter specifies the names of the child targets, separated by spaces. If the number of strings is fewer than the number of processors specified by the nprocs
parameter, the remaining processors are of type given by the last string. For example, if there are four processors, and childType is set to default-CG56[2] default-CGC
, then the first two child targets will be of type default-CG56
, and the next two of type default-CGC
.
STRINGARRAY
) Default =STDIO
. Then, stars that request STDIO
would be scheduled onto the first processor.
INTARRAY
) Default = 1
This defines the relative time scales of the processors corresponding to child targets. This information is needed by the scheduler in order to compute scheduling costs. The number of entries here should be the same as the number of processors; if not, then the last entry is used for the remaining processors. The entries reflect the relative computing speeds of different processors, and are expressed as relative cycle times. For example, if there is a DSP96000 (32Mhz) and a DSP56000 (20Mhz), the relative cycle times are 1 and 1.6. The default is 1 (meaning that all processors have the same computing speed).
INT
) Default = YES
If this is YES
, then the Gantt chart containing the generated schedule is displayed.
STRING
) Default =INT
) Default = NO
If this is YES
, the scheduler will try to reduce the communication overhead by sending multiple samples per send. This has not really been implemented yet.
STRING
) Default = DL
Using the schedName parameter, a user can select which parallel scheduling algorithm to use. There are three basic SDF parallel scheduling algorithms. The first two can be used for heterogeneous processors, while the last can only be used for homogeneous processors.HU
selects a scheduling algorithm based on the classical work by T. C. Hu [Hu61]. This scheduler ignores the interprocessor communication cost (IPC) during scheduling and thus may result in unrealistic schedules. The next two scheduling algorithms take into IPC.DL
selects Gil Sih's dynamic level scheduler [Sih93a] (default). DC
selects Gil Sih's declustering algorithm [Sih93b]. This scheduler only supports homogeneous multiprocessor targets. It is more expensive than the DL
and HU
schedulers, so should be used only if the DL
and HU
schedulers produce poor schedules. HIER
selects a preliminary version of José Luis Pino's hierarchical scheduler [Pin95]. With this scheduler, the user can specify a top-level parallel scheduler from the three listed above and also specify uniprocessor schedulers for individual galaxies. The default top-level scheduler is DL
; to specify another use the following syntax: HIER(HU)
or HIER(DC)
. To specify a uniprocessor scheduler for a galaxy, add a new galaxy string parameter named Scheduler and set it to either Cluster
(looping level 1), Loop
(looping level 2) or SDFScheduler
(looping level 0). See section
13.3.1 for more information on the uniprocessor schedulers.CGDDF1
selects Soonhoi Ha's dynamic construct scheduler [Ha92]. A dynamic construct, clustered as a star instance, can be assigned to multiple processors. In the future, we may want to schedule a star exploiting data-parallelism. A star instance that can be assigned to multiple processors is called a "macro" actor. MACRO
scheduler is expected to allow the macro actors. For now, however, MACRO
scheduler is not implemented.
Copyright © 1990-1997, University of California. All rights reserved.