Add our past past techniques to cMFCOP2005 LCWP2009 JVGP2009 FT2010 using OpenME based on static multiversioning (with different optimizations or targeting different processors) and run-time adaptation/scheduling plugin that selects versions (codelets targeting CPU with different micro architectural features/CUDA/OpenCL) as reaction to changes in program and system behavior or dataset parameters using optimized decision trees:

Cm run time adaptation.png

Some years ago we started implementing static multi-versioning, function-level optimizations, and plugin and event-based framework in GCC during Google Summer of Code that have been recently completed by Google colleagues, so we can now building self-tuning applications that automatically and continuously adapt to the underlying hardware:


(C) 2011-2014 cTuning foundation