Fancier: A Unified <underline>F</underline>ramework for J<underline>a</underline>va, C, a<underline>n</underline>d Open<underline>C</underline>L <underline>I</underline>nt<underline>e</underline>g<underline>r</underline>ation

Graphics Processing Units (GPUs) have evolved from very specialized designs geared towards computer graphics to accommodate general-purpose highly-parallel workloads. Harnessing the performance that these accelerators provide requires the use of specialized native programming interfaces, such as CUD...

Full description

Bibliographic Details
Main Authors: Sergio Afonso, Francisco Almeida
Format: Article
Language:English
Published: IEEE 2021-01-01
Series:IEEE Access
Subjects:
Online Access:https://ieeexplore.ieee.org/document/9646900/
_version_ 1819320522185375744
author Sergio Afonso
Francisco Almeida
author_facet Sergio Afonso
Francisco Almeida
author_sort Sergio Afonso
collection DOAJ
description Graphics Processing Units (GPUs) have evolved from very specialized designs geared towards computer graphics to accommodate general-purpose highly-parallel workloads. Harnessing the performance that these accelerators provide requires the use of specialized native programming interfaces, such as CUDA or OpenCL, or higher-level programming models like OpenMP or OpenACC. However, on managed programming languages, offloading execution into GPUs is much harder and error-prone, mainly due to the need to call through a native API (Application Programming Interface), and because of mismatches between value and reference semantics. The Fancier framework provides a unified interface to Java, C/C&#x002B;&#x002B;, and OpenCL C compute kernels, together with facilities to smooth the transitions between these programming languages. This combination of features makes GPU acceleration on Java much more approachable. In addition, Fancier Java code can be directly translated into equivalent C/C&#x002B;&#x002B; or OpenCL C code easily, which simplifies the implementation of higher-level abstractions targeting GPU or parallel execution on Java. Furthermore, it reduces the programming effort without adding significant overhead on top of the necessary OpenCL and Java Native Interface (JNI) API calls. We validate our approach on several image processing workloads running on different Android devices.
first_indexed 2024-12-24T11:20:55Z
format Article
id doaj.art-72cb3ffdff49469bb17db28353160be8
institution Directory Open Access Journal
issn 2169-3536
language English
last_indexed 2024-12-24T11:20:55Z
publishDate 2021-01-01
publisher IEEE
record_format Article
series IEEE Access
spelling doaj.art-72cb3ffdff49469bb17db28353160be82022-12-21T16:58:14ZengIEEEIEEE Access2169-35362021-01-01916457016458810.1109/ACCESS.2021.31347889646900Fancier: A Unified <underline>F</underline>ramework for J<underline>a</underline>va, C, a<underline>n</underline>d Open<underline>C</underline>L <underline>I</underline>nt<underline>e</underline>g<underline>r</underline>ationSergio Afonso0https://orcid.org/0000-0003-0838-8057Francisco Almeida1Department of Computer Engineering and Systems, Universidad de La Laguna, San Crist&#x00F3;bal de La Laguna, SpainDepartment of Computer Engineering and Systems, Universidad de La Laguna, San Crist&#x00F3;bal de La Laguna, SpainGraphics Processing Units (GPUs) have evolved from very specialized designs geared towards computer graphics to accommodate general-purpose highly-parallel workloads. Harnessing the performance that these accelerators provide requires the use of specialized native programming interfaces, such as CUDA or OpenCL, or higher-level programming models like OpenMP or OpenACC. However, on managed programming languages, offloading execution into GPUs is much harder and error-prone, mainly due to the need to call through a native API (Application Programming Interface), and because of mismatches between value and reference semantics. The Fancier framework provides a unified interface to Java, C/C&#x002B;&#x002B;, and OpenCL C compute kernels, together with facilities to smooth the transitions between these programming languages. This combination of features makes GPU acceleration on Java much more approachable. In addition, Fancier Java code can be directly translated into equivalent C/C&#x002B;&#x002B; or OpenCL C code easily, which simplifies the implementation of higher-level abstractions targeting GPU or parallel execution on Java. Furthermore, it reduces the programming effort without adding significant overhead on top of the necessary OpenCL and Java Native Interface (JNI) API calls. We validate our approach on several image processing workloads running on different Android devices.https://ieeexplore.ieee.org/document/9646900/Application programming interfaceshardware accelerationheterogeneous systemsimage processingmobile computingparallel programming
spellingShingle Sergio Afonso
Francisco Almeida
Fancier: A Unified <underline>F</underline>ramework for J<underline>a</underline>va, C, a<underline>n</underline>d Open<underline>C</underline>L <underline>I</underline>nt<underline>e</underline>g<underline>r</underline>ation
IEEE Access
Application programming interfaces
hardware acceleration
heterogeneous systems
image processing
mobile computing
parallel programming
title Fancier: A Unified <underline>F</underline>ramework for J<underline>a</underline>va, C, a<underline>n</underline>d Open<underline>C</underline>L <underline>I</underline>nt<underline>e</underline>g<underline>r</underline>ation
title_full Fancier: A Unified <underline>F</underline>ramework for J<underline>a</underline>va, C, a<underline>n</underline>d Open<underline>C</underline>L <underline>I</underline>nt<underline>e</underline>g<underline>r</underline>ation
title_fullStr Fancier: A Unified <underline>F</underline>ramework for J<underline>a</underline>va, C, a<underline>n</underline>d Open<underline>C</underline>L <underline>I</underline>nt<underline>e</underline>g<underline>r</underline>ation
title_full_unstemmed Fancier: A Unified <underline>F</underline>ramework for J<underline>a</underline>va, C, a<underline>n</underline>d Open<underline>C</underline>L <underline>I</underline>nt<underline>e</underline>g<underline>r</underline>ation
title_short Fancier: A Unified <underline>F</underline>ramework for J<underline>a</underline>va, C, a<underline>n</underline>d Open<underline>C</underline>L <underline>I</underline>nt<underline>e</underline>g<underline>r</underline>ation
title_sort fancier a unified underline f underline ramework for j underline a underline va c a underline n underline d open underline c underline l underline i underline nt underline e underline g underline r underline ation
topic Application programming interfaces
hardware acceleration
heterogeneous systems
image processing
mobile computing
parallel programming
url https://ieeexplore.ieee.org/document/9646900/
work_keys_str_mv AT sergioafonso fancieraunifiedunderlinefunderlinerameworkforjunderlineaunderlinevacaunderlinenunderlinedopenunderlinecunderlinelunderlineiunderlinentunderlineeunderlinegunderlinerunderlineation
AT franciscoalmeida fancieraunifiedunderlinefunderlinerameworkforjunderlineaunderlinevacaunderlinenunderlinedopenunderlinecunderlinelunderlineiunderlinentunderlineeunderlinegunderlinerunderlineation