IPMACC: Open Source OpenACC to CUDA/OpenCL Translator
Abstract
In this paper we introduce IPMACC, a framework for translating OpenACC applications to CUDA or OpenCL. IPMACC is composed of set of translators translating OpenACC for C applications to CUDA or OpenCL. The framework uses the system compiler (e.g. nvcc) for generating final accelerator's binary. The framework can be used for extending the OpenACC API, executing OpenACC applications, or obtaining CUDA or OpenCL code which is equivalent to OpenACC code. We verify correctness of our framework under several benchmarks included from Rodinia Benchmark Suit and CUDA SDK. We also compare the performance of CUDA version of the benchmarks to OpenACC version which is compiled by our framework. By comparing CUDA and OpenACC versions, we discuss the limitations of OpenACC in achieving a performance near to highly-optimized CUDA version.
References (16)
- Jorg Arndt. Matters computational. Springer, 2011. Chapter 23, page 481.
- S. Che et al., Rodinia: A benchmark suite for heterogeneous computing, IISWC 2009.
- Mark Hariss. Optimizing Parallel Reduction in CUDA. Available: http://developer.download.nvidia.com/assets/cuda/files/reduction.pdf
- S. Lee and J. S. Vetter, OpenARC: Extensible OpenACC Compiler Frame- work for Directive-based Accelerator Programming Study. Proceedings of the First Workshop on Accelerator Programming Using Directives. 2014. Piscat- away, NJ, USA.
- C. Liao et al., OpenUH: an optimizing, portable openmp compiler, Con- currency and Computation: Practice and Experience, vol. 19, no. 18, pp. 2317.2332, 2007.
- E. Lindholm et al., NVIDIA Tesla: A unified graphics and computing archi- tecture, IEEE Micro 2008.
- M. Nikao et al. XcalableACC: Extension of XcalableMP PGAS Language Using OpenACC for Accelerator Clusters. Proceedings of the First Workshop on Accelerator Programming Using Directives. 2014. Piscataway, NJ, USA.
- J. Nickolls et al., Scalable parallel programming with cuda, Queue, vol. 6, no. 2, pp. 40.53, Mar. 2008.
- NVIDIA Corporation, .CUDA Toolkit 6.0,. 2014. Available: https://developer.nvidia.com/cuda-downloads
- NVIDIA Corporation, Profiler's User Guide, 2014. Available: http://docs.nvidia.com/cuda/profiler-users-guide/
- J. P. L. Nyland and Mark Harris, GPU Gems 3, 2007. Path- Scale. Modified rodinia benchmark suite, 2013. [Online]. Available: https://github.com/pathscale/rodinia
- R. Reyes et al., accULL: An openacc implementation with cuda and opencl support, Euro-Par 2012.
- X. Tian et al. Compiling a High-level Directive-Based Programming Model for GPGPUs. The 26th International Workshop on Languages and Compilers for Parallel Computing. 2013.
- The OpenACC application programming interface, 2013. [Online]. Avail- able: http://www.openacc-standard.org
- Uncrustify: Source Code Beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA. Available: http://uncrustify.sourceforge.net/
- H. Wong et al., Demystifying gpu microarchitecture through microbench- marking, ISPASS 2010.
Amirali Baniasadi

