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...
Main Authors: | , |
---|---|
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++, 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++ 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óbal de La Laguna, SpainDepartment of Computer Engineering and Systems, Universidad de La Laguna, San Cristó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++, 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++ 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 |