Mastering Software Variant Explosion for GPU Accelerators
Mapping algorithms in an efficient way to the target hardware poses a challenge for algorithm designers. This is particular true for heterogeneous systems hosting accelerators like graphics cards. While algorithm developers have profound knowledge of the application domain, they often lack detailed insight into the underlying hardware of accelerators in order to exploit the provided processing power. Therefore, this paper introduces a rule-based, domain-specific optimization engine for generating the most appropriate code variant for different Graphics Processing Unit (GPU) accelerators. The optimization engine relies on knowledge fused from the application domain and the target architecture. The optimization engine is embedded into a framework that allows to design imaging algorithms in a Domain-Specific Language (DSL). We show that this allows to have one common description of an algorithm in the DSL and select the optimal target code variant for different GPU accelerators and target languages like CUDA and OpenCL.
KeywordsGraphic Processing Unit Local Operator Local Memory Iteration Space Code Variant
Unable to display preview. Download preview PDF.
- 2.Czarnecki, K., Eisenecker, U.: Generative Programming: Methods, Tools, and Applications. Addison-Wesley (2000)Google Scholar
- 4.Grewe, D., Wang, Z., O’Boyle, M.F.: A Workload-Aware Mapping Approach for Data-Parallel Programs. In: Proceedings of the 6th International Conference on High-Performance and Embedded Architectures and Compilers, HiPEAC, pp. 117–126. ACM (January 2011)Google Scholar
- 6.Membarth, R., Hannig, F., Teich, J., Körner, M., Eckert, W.: Automatic Optimization of In-Flight Memory Transactions for GPU Accelerators based on a Domain-Specific Language for Medical Imaging. In: Proceedings of the 11th International Symposium on Parallel and Distributed Computing, ISPDC. IEEE (June 2012)Google Scholar
- 7.Membarth, R., Hannig, F., Teich, J., Körner, M., Eckert, W.: Generating Device-specific GPU Code for Local Operators in Medical Imaging. In: Proceedings of the 26th IEEE International Parallel & Distributed Processing Symposium, IPDPS, pp. 569–581. IEEE (May 2012)Google Scholar
- 8.Pohl, K., Böckle, G., Van Der Linden, F.: Software Product Line Engineering: Foundations, Principles, and Techniques. Springer (2005)Google Scholar
- 11.Wong, H., Papadopoulou, M., Sadooghi-Alvandi, M., Moshovos, A.: Demystifying GPU Microarchitecture through Microbenchmarking. In: Proceedings of the 2010 IEEE International Symposium on Performance Analysis of Systems and Software, ISPASS, pp. 235–246. IEEE (2010)Google Scholar
- 12.Yotov, K., Li, X., Ren, G., Garzaran, M., Padua, D., Pingali, K., Stodghill, P.: Is Search Really Necessary to Generate High-performance BLAS? Proceedings of the IEEE Special Issue on “Program Generation, Optimization, and Platform Adaptation” 93(2), 358–386 (2005)Google Scholar