This report describes algorithm constraining and selection techniques. The presented techniques allow generating multi-versioned kernels implementations for a selected kernel in a source code in order to choose the most promising one in runtime.
The report introduces the workow and the algorithms used. The presented solution contains the following characteristics:
- It semi-automatically translates computation/data-intensive ISO C++ code segments, such as loop-nests, into annotated kernel code.
- It generates a set of multi-versioned implementations for each kernel.
- Finally, the best version is chosen to run on a heterogeneous parallel platform based on a run-time multi-attribute/objective decision making function.
These techniques could be used by the scheduler to select automaticly the optimal kernel at runtime.