Preview

Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS)

Advanced search

Automatically generating OpenCL code from loop nests via a polyhedral model

Abstract

In this work we suggest automatically generating code for OpenCL standard from loops with no dependencies in C/C++/Fortran programs. We use GCC compiler’s GRAPHITE infrastructure that represents loop nests as polyhedra. We describe our implementation and experimental results which are the best for computational programs that spend most of their execution time in loop nests.

About the Authors

Andrey Belevantsev
ISP RAS, Moscow
Russian Federation


Alexey Kravets
ISP RAS, Moscow
Russian Federation


Alexander Monakov
ISP RAS, Moscow
Russian Federation


References

1. ATI. OpenCL Programming Guide, March 2010. http://developer.amd.com/gpu_assets/ATI_Stream_SDK_OpenCL_Programming_Guide.pdf

2. C. Bastoul. Code generation in the polyhedral model is easier than you think. In PACT'13 IEEE International Conference on Parallel Architecture and Compilation Techniques,

3. pp. 7-16, Juan-les-Pins, September 2004.

4. Standard Performance Evaluation Corporation. Spec CPU 2000. http://www.spec,org/cpu

5. Khronos OpenCL Working Group. The OpenCL 1.1 Specification, September 2010. http://www.khronos.org/registry/cl/specs/opencl-1.1.pdf

6. IBM Polykernels. http://groups.google.com/group/gcc-graphite/

7. NVIDIA OpenCL JumpStart Guide, April 2009. http://developer.download.nvidia.com/OpenCL/NVIDIA_OpenCL_JumpStart_

8. Guide.pdf

9. Jan Sjödin, Sebastian Pop, Harsha Jagasia, Tobias Grosser, and Antoniu Pop. Design of graphite and the polyhedral compilation package. In Proceedings of GCC Summit 2009, Ottawa, Canada.

10. Polyhedron Software. Polyhedron 2005 benchmark suite. http://www.polyhedron.com/polyhedron_benchmark_suite.html

11. Альфред Ахо, Рави Сети, Джеффри Ульман. Компиляторы: Принципы, Технологии, Инструменты. Издательский дом Вильямс, 2008.

12. NVIDIA. CUDA Programming Guide, 2010. http://developer.download.nvidia.com/compute/cuda/3_0/toolkit/docs/NVIDIA_CUDA_ProgrammingGuide.pdf

13. A. Monakov, A. Lokhmotov, and A. Avetisyan. Automatically Tuning Sparse Matrix-Vector Multiplication for GPU Architectures. High Performance Embedded Architectures and Compilers, 2010, pp. 111-125.

14. A. Monakov and A. Avetisyan. Implementing Blocked Sparse Matrix-Vector Multiplication on NVIDIA GPUs. Embedded Computer Systems: Architectures, Modeling, and Simulation, 2009, pp. 289-297.

15. A. Kravets, A. Monakov, and A. Belevantsev. GRAPHITE-OpenCL: Generate OpenCL Code from Parallel Loops. Proceedings of the GCC Developers’ Summit, 2010, pp. 7-6.


Review

For citations:


Belevantsev A., Kravets A., Monakov A. Automatically generating OpenCL code from loop nests via a polyhedral model. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2011;21. (In Russ.)



Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)