This work tackles two simultaneous challenges faced by autotuners: the ease ofdescribing a complex, multidimensional search space, and the speed ofevaluating that space, while applying a multitude of pruning constraints. Thisarticle presents a declarative notation for describing a search space and atranslation system for conversion to a standard C code for fast andmultithreaded, as necessary, evaluation. The notation is Python-based and thussimple in syntax and easy to assimilate by the user interested in tuningrather than learning a new programming language. A large number of dimensionsand a large number of pruning constraints may be expressed with littleeffort. The system is discussed in the context of autotuning the canonicalmatrix multiplication kernel for NVIDIA GPUs, where the search space has 15dimensions and involves application of 10 complex pruning constrains. Thespeed of evaluation is compared against generators created using imperativeprogramming style in various scripting and compiled languages.
['Piotr Luszczek', 'Mark Gates', 'Jakub Kurzak', 'Anthony Danalis', 'Jack Dongarra']
Search Space Generation and Pruning System for Autotuners