  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.
