Synopsis

#include <IceT.h>

void icetSingleImageStrategy( IceTEnum strategy );

Description

The main IceT algorithms are specially designed to composite data defined on multiple tiles. Some of these algorithms, namely ICET_STRATEGY_REDUCE and ICET_STRATEGY_SEQUENTIAL, operate at least in part by compositing single images together. IceT also comes with multiple separate strategies for performing this single image compositing, and this can be selected with the icetSingleImageStrategy function.

A single image strategy is chosen from one of the following provided enumerated values:

ICET_SINGLE_IMAGE_STRATEGY_AUTOMATIC

Automatically chooses which single image strategy to use based on the number of processes participating in the composition.

ICET_SINGLE_IMAGE_STRATEGY_BSWAP

The classic binary swap compositing algorithm. At each phase of the algorithm, each process partners with another, sends half of its image to its partner, and receives the opposite half from its partner. The processes are then partitioned into two groups that each have the same image part, and the algorithm recurses.

ICET_SINGLE_IMAGE_STRATEGY_RADIXK

The radix-k acompositing algorithm is similar to binary swap except that groups of processes can be larger than two. Larger groups require more overall messages but overlap blending and communication. The size of the groups is indirectly controlled by the ICET_MAGIC_K environment variable or CMake variable.

ICET_SINGLE_IMAGE_STRATEGY_TREE

At each phase, each process partners with another, and one of the processes sends its entire image to the other. The algorithm recurses with the group of processes that received images until only one process has an image.

By default IceT sets the single image strategy to ICET_SINGLE_IMAGE_STRATEGY_AUTOMATIC when a context is created. This is the single image strategy that will be used if no other is selected.

Errors

ICET_INVALID_ENUM

The strategy argument does not represent a valid single image strategy.

Warnings

None.

Bugs

None known.

Copyright

Copyright (C)2010 Sandia Corporation

Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software.

This source code is released under the New BSD License.

See Also