{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,8,30]],"date-time":"2025-08-30T16:33:47Z","timestamp":1756571627295,"version":"3.37.3"},"reference-count":17,"publisher":"Springer Science and Business Media LLC","issue":"9","license":[{"start":{"date-parts":[[2024,2,23]],"date-time":"2024-02-23T00:00:00Z","timestamp":1708646400000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2024,2,23]],"date-time":"2024-02-23T00:00:00Z","timestamp":1708646400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"funder":[{"DOI":"10.13039\/501100004837","name":"Ministerio de Ciencia e Innovaci\u00f3n","doi-asserted-by":"publisher","award":["PID2019--107228RB--I00","PID2019--107228RB--I00","PID2019--107228RB--I00"],"award-info":[{"award-number":["PID2019--107228RB--I00","PID2019--107228RB--I00","PID2019--107228RB--I00"]}],"id":[{"id":"10.13039\/501100004837","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100015528","name":"Universidad de la Laguna","doi-asserted-by":"crossref","id":[{"id":"10.13039\/100015528","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["J Supercomput"],"published-print":{"date-parts":[[2024,6]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>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.<\/jats:p>","DOI":"10.1007\/s11227-024-05924-1","type":"journal-article","created":{"date-parts":[[2024,2,23]],"date-time":"2024-02-23T05:03:07Z","timestamp":1708664587000},"page":"12891-12909","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":1,"title":["Parallel programming in mobile devices with FancyJCL"],"prefix":"10.1007","volume":"80","author":[{"given":"Sergio","family":"Afonso","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"\u00d3scar","family":"G\u00f3mez-C\u00e1rdenes","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Paula","family":"Exp\u00f3sito","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Vicente","family":"Blanco","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Francisco","family":"Almeida","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2024,2,23]]},"reference":[{"key":"5924_CR1","doi-asserted-by":"publisher","unstructured":"Smith LA, Bull JM, Obdrizalek J (2001) A parallel java grande benchmark suite. In: SC \u201901: Proceedings of the 2001 ACM\/IEEE Conference on Supercomputing, p 6. https:\/\/doi.org\/10.1145\/582034.582042","DOI":"10.1145\/582034.582042"},{"key":"5924_CR2","doi-asserted-by":"publisher","unstructured":"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\u201313. https:\/\/doi.org\/10.1109\/INTERA.2003.1192351","DOI":"10.1109\/INTERA.2003.1192351"},{"key":"5924_CR3","doi-asserted-by":"publisher","first-page":"887","DOI":"10.1007\/978-3-642-03869-3_82","volume-title":"Euro-Par 2009 Parallel Processing","author":"Y Yan","year":"2009","unstructured":"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\u2013899"},{"key":"5924_CR4","unstructured":"Hutter M. (2016) JOCL: Java Bindings for OpenCL. https:\/\/github.com\/gpu\/JOCL"},{"key":"5924_CR5","unstructured":"OpenJDK: Project Sumatra. https:\/\/openjdk.java.net\/projects\/sumatra\/"},{"key":"5924_CR6","doi-asserted-by":"publisher","unstructured":"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\u2013178. https:\/\/doi.org\/10.1145\/3313808.3313819","DOI":"10.1145\/3313808.3313819"},{"key":"5924_CR7","doi-asserted-by":"publisher","first-page":"25","DOI":"10.1016\/j.parco.2016.04.003","volume":"57","author":"A Acosta","year":"2016","unstructured":"Acosta A, Afonso S, Almeida F (2016) Extending Paralldroid with object oriented annotations. Parall Comput 57:25\u201336. https:\/\/doi.org\/10.1016\/j.parco.2016.04.003","journal-title":"Parall Comput"},{"key":"5924_CR8","unstructured":"Aparapi: API for data parallel Java. http:\/\/aparapi.com\/"},{"key":"5924_CR9","doi-asserted-by":"crossref","unstructured":"Pratt-Szeliga PC, Fawcett JW, Welch RD (2012) Rootbeer: seamlessly using GPUs from Java. In: 9th HPCC-ICESS Conference. IEEE, pp 375\u2013380","DOI":"10.1109\/HPCC.2012.57"},{"key":"5924_CR10","doi-asserted-by":"publisher","first-page":"447","DOI":"10.1007\/978-3-319-43659-3_33","volume-title":"Euro-Par 2016: Parallel Processing","author":"G Andrade","year":"2016","unstructured":"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\u2013459"},{"key":"5924_CR11","doi-asserted-by":"publisher","first-page":"164570","DOI":"10.1109\/ACCESS.2021.3134788","volume":"9","author":"S Afonso","year":"2021","unstructured":"Afonso S, Almeida F (2021) Fancier: a unified framework for java, c, and opencl integration. IEEE Access 9:164570\u2013164588. https:\/\/doi.org\/10.1109\/ACCESS.2021.3134788","journal-title":"IEEE Access"},{"key":"5924_CR12","unstructured":"Android Open Source Project: ART and Dalvik. https:\/\/source.android.com\/devices\/tech\/dalvik\/"},{"key":"5924_CR13","unstructured":"Android Open Source Project: Implementing ART Just-In-Time (JIT) Compiler. https:\/\/source.android.com\/devices\/tech\/dalvik\/jit-compiler"},{"key":"5924_CR14","unstructured":"Liang S (1999) The Java Native Interface: Programmer\u2019s Guide and Specification. Addison-Wesley Professional, Palo Alto"},{"key":"5924_CR15","unstructured":"Android Open Source Project: Get Started with the NDK. https:\/\/developer.android.com\/ndk\/guides"},{"key":"5924_CR16","unstructured":"Android Open Source Project: RenderScript Overview. https:\/\/developer.android.com\/guide\/topics\/renderscript\/compute.html"},{"key":"5924_CR17","unstructured":"Google: Clspv. https:\/\/github.com\/google\/clspv"}],"container-title":["The Journal of Supercomputing"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s11227-024-05924-1.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s11227-024-05924-1\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s11227-024-05924-1.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,6,4]],"date-time":"2024-06-04T10:47:44Z","timestamp":1717498064000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s11227-024-05924-1"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,2,23]]},"references-count":17,"journal-issue":{"issue":"9","published-print":{"date-parts":[[2024,6]]}},"alternative-id":["5924"],"URL":"https:\/\/doi.org\/10.1007\/s11227-024-05924-1","relation":{},"ISSN":["0920-8542","1573-0484"],"issn-type":[{"type":"print","value":"0920-8542"},{"type":"electronic","value":"1573-0484"}],"subject":[],"published":{"date-parts":[[2024,2,23]]},"assertion":[{"value":"21 January 2024","order":1,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"23 February 2024","order":2,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}},{"order":1,"name":"Ethics","group":{"name":"EthicsHeading","label":"Declarations"}},{"value":"The authors have no conflicts of interest to declare that are relevant to the content of this article.","order":2,"name":"Ethics","group":{"name":"EthicsHeading","label":"Conflict of interest"}}]}}