Shorten the text:
OpenMP-to-CUDA NAME_1 and NAME_2 present a
framework for automatic source-to-source translation
of standard OpenMP applications into CUDA appli-
cations [133]. This translator aims to further improve
programmability and make existing OpenMP applica-
tions amenable to execution on GPGPUs. Later, they
propose a new programming interface, OpenMPC, which
builds on OpenMP to provide an abstraction of CUDA
Parallel Programming Models for Heterogeneous Many-Cores : A Comprehensive Survey 11
and offers high-level controls of the involved parameters
and optimizations [134].
OpenMP-to-OpenCL NAME_3 et NAME_4. propose a frame-
work that translates OpenMP 4.0 accelerator directives
to OpenCL [125]. They leverage a run-time optimiza-
tion to automatically eliminates unnecessary data trans-
fers between the host and the accelerator.
OpenMP-to-LEO Managing data transfers between
the CPU and XeonPhi and optimizing applications for
performance requires some amount of effort and exper-
imentation. NAME_5 et NAME_4. present Apricot, an optimizing
compiler and productivity tool for Intel XeonPhi that
minimizes developer effort by automatically inserting
LEO clauses [166]. This optimizing compiler aims to
assist programmers in porting existing multi-core ap-
plications and writing new ones to take full advantage
of the many-core accelerator, while maximizing overall
performance.
CUDA-lite CUDA programmers shoulder the respon-
sibility of managing the code to produce the desirable
access patterns. Experiences show that such res