New Page 1

## Image Reassembly Template

The image reassembly template is used to setup a configuration in which the tilesort SPU generates N tiles which are reassembled into a downstream window. This template can also be used to configure hardware image assembly (such as with Lightning-2).

When you create an image reassembly template you'll be prompted to enter the number of application nodes, number of rendering nodes and the size of the display (width and height in tiles).

Clicking on the Edit Template button will open the image reassembly editor, shown here:

The editor is similar to the tilesort editor and has many of the same controls.

The mural is depicted as colored tiles. The tiles are labeled and colored to indicate the host node for each tile's server.

Good load balancing is essential for this configuration. By observing the colors of the tiles one can get a feel for how well the image space is subdivided among the servers. You want to have an even spatial distribution of servers for good load balancing.

## Using the image reassembly template

### Step 1: Specify the rendering servers

Specify the number and names of the rendering servers in your cluster. Do this with the controls in the upper-left corner of the window.

### Step 2: Fixed or Variable Image Size?

The Fixed or Variable Size Image radio buttons control whether the recombined image will be of a fixed size or variable size. If it's a variable size you can choose to either fix the number of rows and columns or the tile size. If the rows and columns are fixed then tile tiles size will be free to change. Conversely, if the tile size is fixed, then the number of rows and columns will be free to change.

The total image size will be displayed below only if you choose the fixed size option.

### Step 3: Image and Tile Size

The Image Tiles controls set the number of rows and columns of tiles in the image mural. This control will be disabled if you chose the variable tile size above.

The Tile Size controls set the individual tile size. You can choose a predefined tile size or enter any custom size. This control will be disabled if you chose the variable tile size option above.

### Step 4: Tile Layout

The Tile Layout control determines how the tiles within the mural are laid out.
Raster order uses a simple top-to-bottom, left-to-right ordering.
Zig-zag order is like raster order except the left-to-right and right-to-left order is used for the even and odd rows, respectively.
Spiral order starts laying out tiles in the center of the mural, and grows in an outward, clockwise spiral.

As mentioned above, it's important to choose a good tile layout for the sake of load balancing.

### Step 5: Final Image Reassembly

There are three options for final image reassembly:

- No reassembly - you'd probably use this if you have a hardware image compositor (such as Lightning-2) available. The tiles are rendered by each server and stay there.
- Reassemble into render SPU window - the image tiles on each server will be sent downstream (via readback SPU) to a downstream node which hosts a render SPU. The reassembled image will appear in the render SPU's window.
- Reassemble into application window - again, a downstream node with a render SPU will collect the image tiles. However, instead of displaying the reassembled image in the render SPU's window it will be shown in the original application window.

### Other options

Here are some other things which you'll probably want to pay attention to.

Readback SPU window geometry: You'll typically want to set the fullscreen option so that each server has maximum window space for its tiles.

Note that other SPU options, such as resizable will be set automatically when you use the controls described above in steps 1 - 5.

## Runtime Options

When you save your image reassembly configuration to a file (such as `myreassemble.conf`) you'll have a stand-alone configuration script that you can run as follows:

       python myreassemble.conf

This configuration script will also accept the following optional command-line arguments:

- `-c cols` specifies the number of tile columns
- `-r rows` specifies the number of tile rows
- `-w width` specifies the tile width in pixels
- `-h height` specifies the tile height in pixels
- `-s servers` a comma-separated list of hosts for the tile servers
- `-l layout` specifies layout method: 0 = raster order, 1 = zig-zag order, 2 = spiral from center.
- `-d dynamic` Dynamic window resize: 0 = fixed size, 1 = variable rows and columns, 2 = variable tile size.

You can also specify the name of the program to run as the last argument.

For example:

       python myreassemble.conf -c2 -r2 -d2 -s "cr1,cr2,cr3" atlantis

Will run atlantis on a 2 column by 2 row mural using the servers cr1, cr2, and cr3. Dynamic window resizing will be done by resizing the tiles.