Uses boost::mpl to generate all possible combinations of list elements at compile time and provides the possibility to select one of these combinations at run-time.
This code is used in the autotuner of cuLGT. For multiple compile-time sequences A1, ..., An
a new sequence B
is generated with N-dimensional elements built from all combinations of A1, ..., An
elements.
Given A1 = {1,2}
and A2 = {X,Y}
, the new sequence will be B={{1,X},{1,Y},{2,X},{2,Y}}
. This sequence can then be used to generate template functions based on B
's entires.
These can be used as input in an (run-time) iterator to run all combinations and choose the best one.
See the example files for its application.