We have been running all Imagine applications using the cycle-accurate
simulator ISim. The simulator can be supplied with a series of
commands either through an interactive interface or from a script file.
The simulator also allows to run applications running on multiple
There are four available Imagine programming tools:
- IScd (Kernel Scheduler)
- A single-phase VLIW scheduler, which is
optimized for individual kernels by handling functional unit assignment,
communication scheduling between clusters and modulo-software
pipelining. It generates the set of VLIW instructions in the shape
of a microcode program (.raw file), which resides in Imagine memory
until it is needed, at which point it is loaded onto the on-chip microcode
store. In order to facilitate debugging, the scheduler also
generates human-readable .uc files and is used by the
- IStream (Stream Scheduler)
- The stream scheduler converts
StreamC functions into Imagine operations, which are dispatched to Imagine
by the host to load input streams, execute kernels and save output
streams. The scheduler generates these operations such the working
set has all the resources required in Imagine, available to it. It
determines the allocation of the memory and SRF amongst all the streams
and handles large streams using strip-mining or double-buffering.
It determines dependencies between operations and allocates operation
issue slots, and performs high-level optimizations like software
pipelining. The Stream Scheduler is profile based; it runs once with
allocation of the code on the Imagine simulator and determines a good
allocation from the usage information derived from the first run.
- Idebug (Interactive debugger)
- This is a functional simulator
to debug Imagine applications during development stage. This uses the
Visual Studio debugging environment.
- Schedviz (Schedule Visualizer)
- This is used for schedule
visualization: allows one to monitor how the different Imagine resources are used over time.