ART vs. NDK vs. GPU acceleration: A study of performance of image processing algorithms on Android

The Android ecosystem contains three major platforms for execution suitable for different purposes. Android applications are normally written in the Java programming language, but computationally intensive parts of Android applications can be sped up by choosing to use a native language or by utilis...

Full description

Bibliographic Details
Main Author: Pålsson, Andreas
Format: Others
Language:English
Published: KTH, Skolan för datavetenskap och kommunikation (CSC) 2017
Subjects:
ART
NDK
GPU
C++
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-209847
id ndltd-UPSALLA1-oai-DiVA.org-kth-209847
record_format oai_dc
spelling ndltd-UPSALLA1-oai-DiVA.org-kth-2098472018-01-14T05:11:39ZART vs. NDK vs. GPU acceleration: A study of performance of image processing algorithms on AndroidengART, NDK eller GPU acceleration: En prestandastudie av bildbehandlingsalgoritmer på AndroidPålsson, AndreasKTH, Skolan för datavetenskap och kommunikation (CSC)2017ARTNDKGPUC++JavaAndroidRenderScriptimage processingDalvikAndroid runtimeComputer SciencesDatavetenskap (datalogi)The Android ecosystem contains three major platforms for execution suitable for different purposes. Android applications are normally written in the Java programming language, but computationally intensive parts of Android applications can be sped up by choosing to use a native language or by utilising the parallel architecture found in graphics processing units (GPUs). The experiments conducted in this thesis measure the performance benefits by switching from Java to C++ or RenderScript, Google’s GPU acceleration framework. The experiments consist of often-done tasks in image processing. For some of these tasks, optimized libraries and implementations already exist. The performance of the implementations provided by third parties are compared to our own. Our results show that for advanced image processing on large images, the benefits are large enough to warrant C++ or RenderScript usage instead of Java in modern smartphones. However, if the image processing is conducted on very small images (e.g. thumbnails) or the image processing task contains few calculations, moving to a native language or RenderScript is not worth the added development time and static complexity. RenderScript is the best choice if the GPU vendors provide an optimized implementation of the processing task. If there is no such implementation provided, both C++ and RenderScript are viable choices. If full precision is required in the floating point arithmetic, a C++ implementation is the recommended. If it is possible to achieve the desired effect without compliance with IEEE Floating Point Arithmetic standard, RenderScript provides better run time performance. Android-ekosystemet innehåller tre exekveringsplattformer passande för olika syften. Android-applikationer är vanligtvis skrivna i programmeringsspråket Java, men beräkningsintensiva delar av en Android-applikation kan snabbas upp genom att använda en statiskt kompilerat språk eller genom att utnyttja den parallella arkitekturen som hittas i grafikprocessorer. Experimenten utförda i det här projektet ämnar mäta prestandasförbättringar som kan uppnås genom att byta från Java till C++ eller RenderScript, Googles grafikaccelerationsramverk. Experimenten består av ofta använda algoritmer inom bildhantering. För några av dessa finns det optimerade bibliotek och övriga färdiga implementationer. Prestandan av tredjepartsbiblioteken jämförs med våra implementationer. Våra resultat visar att för avancerad bildhantering är prestandaförbättringarna tillräckligt bra för att använda C++ eller RenderScript istället för Java på moderna smartphones. I de fall bildhanteringen görs på väldigt små bilder eller innehåller få beräkningar (exempelvis miniatyrbilder) är bytet från Java till RenderScript eller C++ inte värt den extra utvecklingstiden samt den statiska kodkomplexiteten. RenderScript är det bästa valet då grafikprocessortillverkarna tillhandahåller implementationer av algoritmen som ska köras. Om det inte finns någon sådan implementation är både C++ och RenderScript tillämpbara val. Om noggrann precision krävs rekommenderas en C++-implementation. Däremot om full precision inte behövs vid flyttalsberäkningar rekommenderas istället RenderScript. Student thesisinfo:eu-repo/semantics/bachelorThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-209847application/pdfinfo:eu-repo/semantics/openAccess
collection NDLTD
language English
format Others
sources NDLTD
topic ART
NDK
GPU
C++
Java
Android
RenderScript
image processing
Dalvik
Android runtime
Computer Sciences
Datavetenskap (datalogi)
spellingShingle ART
NDK
GPU
C++
Java
Android
RenderScript
image processing
Dalvik
Android runtime
Computer Sciences
Datavetenskap (datalogi)
Pålsson, Andreas
ART vs. NDK vs. GPU acceleration: A study of performance of image processing algorithms on Android
description The Android ecosystem contains three major platforms for execution suitable for different purposes. Android applications are normally written in the Java programming language, but computationally intensive parts of Android applications can be sped up by choosing to use a native language or by utilising the parallel architecture found in graphics processing units (GPUs). The experiments conducted in this thesis measure the performance benefits by switching from Java to C++ or RenderScript, Google’s GPU acceleration framework. The experiments consist of often-done tasks in image processing. For some of these tasks, optimized libraries and implementations already exist. The performance of the implementations provided by third parties are compared to our own. Our results show that for advanced image processing on large images, the benefits are large enough to warrant C++ or RenderScript usage instead of Java in modern smartphones. However, if the image processing is conducted on very small images (e.g. thumbnails) or the image processing task contains few calculations, moving to a native language or RenderScript is not worth the added development time and static complexity. RenderScript is the best choice if the GPU vendors provide an optimized implementation of the processing task. If there is no such implementation provided, both C++ and RenderScript are viable choices. If full precision is required in the floating point arithmetic, a C++ implementation is the recommended. If it is possible to achieve the desired effect without compliance with IEEE Floating Point Arithmetic standard, RenderScript provides better run time performance. === Android-ekosystemet innehåller tre exekveringsplattformer passande för olika syften. Android-applikationer är vanligtvis skrivna i programmeringsspråket Java, men beräkningsintensiva delar av en Android-applikation kan snabbas upp genom att använda en statiskt kompilerat språk eller genom att utnyttja den parallella arkitekturen som hittas i grafikprocessorer. Experimenten utförda i det här projektet ämnar mäta prestandasförbättringar som kan uppnås genom att byta från Java till C++ eller RenderScript, Googles grafikaccelerationsramverk. Experimenten består av ofta använda algoritmer inom bildhantering. För några av dessa finns det optimerade bibliotek och övriga färdiga implementationer. Prestandan av tredjepartsbiblioteken jämförs med våra implementationer. Våra resultat visar att för avancerad bildhantering är prestandaförbättringarna tillräckligt bra för att använda C++ eller RenderScript istället för Java på moderna smartphones. I de fall bildhanteringen görs på väldigt små bilder eller innehåller få beräkningar (exempelvis miniatyrbilder) är bytet från Java till RenderScript eller C++ inte värt den extra utvecklingstiden samt den statiska kodkomplexiteten. RenderScript är det bästa valet då grafikprocessortillverkarna tillhandahåller implementationer av algoritmen som ska köras. Om det inte finns någon sådan implementation är både C++ och RenderScript tillämpbara val. Om noggrann precision krävs rekommenderas en C++-implementation. Däremot om full precision inte behövs vid flyttalsberäkningar rekommenderas istället RenderScript.
author Pålsson, Andreas
author_facet Pålsson, Andreas
author_sort Pålsson, Andreas
title ART vs. NDK vs. GPU acceleration: A study of performance of image processing algorithms on Android
title_short ART vs. NDK vs. GPU acceleration: A study of performance of image processing algorithms on Android
title_full ART vs. NDK vs. GPU acceleration: A study of performance of image processing algorithms on Android
title_fullStr ART vs. NDK vs. GPU acceleration: A study of performance of image processing algorithms on Android
title_full_unstemmed ART vs. NDK vs. GPU acceleration: A study of performance of image processing algorithms on Android
title_sort art vs. ndk vs. gpu acceleration: a study of performance of image processing algorithms on android
publisher KTH, Skolan för datavetenskap och kommunikation (CSC)
publishDate 2017
url http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-209847
work_keys_str_mv AT palssonandreas artvsndkvsgpuaccelerationastudyofperformanceofimageprocessingalgorithmsonandroid
AT palssonandreas artndkellergpuaccelerationenprestandastudieavbildbehandlingsalgoritmerpaandroid
_version_ 1718609756037316608