Parallel programming in mobile devices with FancyJCL

  1. Afonso, Sergio 1
  2. Gómez-Cárdenes, Óscar 1
  3. Expósito, Paula 1
  4. Blanco, Vicente 1
  5. Almeida, Francisco 1
  1. 1 Universidad de La Laguna
    info

    Universidad de La Laguna

    San Cristobal de La Laguna, España

    ROR https://ror.org/01r9z8p25

Revista:
The Journal of Supercomputing

ISSN: 0920-8542 1573-0484

Año de publicación: 2024

Tipo: Artículo

DOI: 10.1007/S11227-024-05924-1 GOOGLE SCHOLAR lock_openAcceso abierto editor

Otras publicaciones en: The Journal of Supercomputing

Resumen

Mobile devices and handheld systems, such as the smartphones and tablets universally extended, are becoming increasingly powerful. Their basic hardware configuration is usually state-of-the-art heterogeneous architectures consisting of multi-core processors and some kind of accelerator such as GPUs or DSPs. Specific code adapted to the architecture is mandatory if high-performance computation is required and low-level libraries and parallelism are needed, which constitutes an important barrier for the usual developer in such devices. In this context, we propose the FancyJCL framework. It provides a high-level abstraction layer that hides implementation details and allows to develop parallel programs for mobile devices. The target platform for FancyJCL is mainly Android and Java developers due to their high market penetration. A very simple, seemingly sequential encoding results in parallel efficient OpenCL code. FancyJCL is itself based on the Fancier framework, which enables optimal memory management across memory spaces on unified memory systems. Benchmarks of FancyJCL code developed for a wide range of image processing algorithms show good performance with low development effort.

Información de financiación

Financiadores

Referencias bibliográficas

  • Smith LA, Bull JM, Obdrizalek J (2001) A parallel java grande benchmark suite. In: SC ’01: Proceedings of the 2001 ACM/IEEE Conference on Supercomputing, p 6. https://doi.org/10.1145/582034.582042
  • Shiv K et al (2003) Impact of JIT/JVM optimizations on JAVA application performance. In: 7th Workshop on Interaction Between Compilers and Computer Architectures (INTERACT-7), pp 5–13. https://doi.org/10.1109/INTERA.2003.1192351
  • Yan Y, Grossman M, Sarkar V (2009) JCUDA: a programmer-friendly interface for accelerating Java programs with CUDA. In: Sips H, Epema D, Lin H-X (eds) Euro-Par 2009 Parallel Processing. Springer, Berlin, pp 887–899
  • Hutter M. (2016) JOCL: Java Bindings for OpenCL. https://github.com/gpu/JOCL
  • OpenJDK: Project Sumatra. https://openjdk.java.net/projects/sumatra/
  • Fumero J et al (2019) Dynamic application reconfiguration on heterogeneous hardware. In: 15th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments. ACM, New York, pp 165–178. https://doi.org/10.1145/3313808.3313819
  • Acosta A, Afonso S, Almeida F (2016) Extending Paralldroid with object oriented annotations. Parall Comput 57:25–36. https://doi.org/10.1016/j.parco.2016.04.003
  • Aparapi: API for data parallel Java. http://aparapi.com/
  • Pratt-Szeliga PC, Fawcett JW, Welch RD (2012) Rootbeer: seamlessly using GPUs from Java. In: 9th HPCC-ICESS Conference. IEEE, pp 375–380
  • Andrade G et al (2016) ParallelME: a parallel mobile engine to explore heterogeneity in mobile computing architectures. In: Dutot P-F, Trystram D (eds) Euro-Par 2016: Parallel Processing. Springer, Cham, pp 447–459
  • Afonso S, Almeida F (2021) Fancier: a unified framework for java, c, and opencl integration. IEEE Access 9:164570–164588. https://doi.org/10.1109/ACCESS.2021.3134788
  • Android Open Source Project: ART and Dalvik. https://source.android.com/devices/tech/dalvik/
  • Android Open Source Project: Implementing ART Just-In-Time (JIT) Compiler. https://source.android.com/devices/tech/dalvik/jit-compiler
  • Liang S (1999) The Java Native Interface: Programmer’s Guide and Specification. Addison-Wesley Professional, Palo Alto
  • Android Open Source Project: Get Started with the NDK. https://developer.android.com/ndk/guides
  • Android Open Source Project: RenderScript Overview. https://developer.android.com/guide/topics/renderscript/compute.html
  • Google: Clspv. https://github.com/google/clspv