Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
tex
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Autotuning OpenCL Workgroup Size for Stencil Patterns

Chris Cummins, Pavlos Petoumenos, Michel Steuwer, Hugh Leather.

Abstract

Selecting an appropriate workgroup size is critical for the performance of OpenCL kernels, and requires knowledge of the underlying hardware, the data being operated on, and the implementation of the kernel. This makes portable performance of OpenCL programs a challenging goal, since simple heuristics and statically chosen values fail to exploit the available performance. To address this, we propose the use of machine learning-enabled autotuning to automatically predict workgroup sizes for stencil patterns on CPUs and multi- GPUs.

We present three methodologies for predicting workgroup sizes. The first, using classifiers to select the optimal workgroup size. The second and third proposed methodologies employ the novel use of regressors for performing classification by predicting the runtime of kernels and the relative performance of different workgroup sizes, respectively. We evaluate the effectiveness of each technique in an empirical study of 429 combinations of architecture, kernel, and dataset, comparing an average of 629 different workgroup sizes for each. We find that autotuning provides a median 3.79x speedup over the best possible fixed workgroup size, achieving 94% of the maximum performance.

Presented The 6th International Workshop on Adaptive Self-tuning Computing Systems. Prague, Czech Republic, Monday, Jan 18th 2016. Co-Located with HiPEAC 2016.

@inproceedings{cummins2016a,
    author    = "Cummins, Chris and Petoumenos, Pavlos and Steuwer, Michel and Leather, Hugh",
    title     = "Autotuning OpenCL Workgroup Size for Stencil Patterns",
    booktitle = "The 6th International Workshop on Adaptive Self-tuning Computing Systems (ADAPT)",
    arxivId   = "1511.02490v3",
    year      = "2016",
}

Releases

No releases published

Packages

No packages published