the camera is delivered in the NV21 format, which the
OpenCL API does not define. Therefore, in order to
use the camera image in the executing kernel, it had
to be transformed to RGBA format. The conversion
significantly affected only the device with the Mali
GPU. In case of devices with the Adreno GPU,
the process of transforming the image to RGBA
format and entering it into the displayed texture did
not affect the number of displayed FPS.
After applying a set of filters, like grayscale
conversion or max rgb filter, the number of images
presented per second did not change. On the other
hand, the use of an averaging filter, in which it was
necessary to read and average the value of 25 pixels
to calculate the value of one pixel, significantly
reduced the number of displayed frames, for some
devices even by more than a half.
At the end, there is limited information on using
the OpenCL API in utility applications. Each of the
GPU manufacturers for Android devices has an
implementation of such a driver, which suggests that
it is more often used than just for testing the device’s
capabilities. The problem with finding information
about the use of this API by various applications is
most likely due to the fact that mobile developers
usually do not publish a list of all used APIs,
frameworks or versions of the programming
language. Future studies could involve checking how
to determine power consumption in case of kernel
execution. Another direction would be to evaluate
how would OpenCL perform on a variety of devices
with integrated Intel, AMD or NVidia GPUs.
REFERENCES
Acosta, A., Merino, C., Totz, J. (2018). Analysis of
OpenCL support for mobile GPUs on Android. In
IWOCL’18, Proceedings of the International Workshop
on OpenCL. ACM.
Ashbaugh, B. (2019). OpenCL on Linux.
https://bashbaug.github.io/opencl/2019/07/06/OpenCL
-On-Linux.html (access. 26.06.2022).
Aydonat, U., O’Connell, S., Capalija, D., Ling, A. C., Chiu,
G. R. (2017). An OpenCL deep learning accelerator on
Arria 10. In FPGA’17, Proceedings of the 2017
ACM/SIGDA International Symposium on Field-
Programmable Gate Arrays. ACM.
Fang, J., Huang, C., Tang, T., Wang, Z. (2020). Parallel
programming models for heterogeneous many-cores: a
comprehensive survey. CCF Transactions on High
Performance Computing, 2(4), 382-400.
Fang, J., Varbanescu, A. L., Sips, H. (2011). A
comprehensive performance comparison of CUDA and
OpenCL. In ICPP’11. 2011 International Conference
on Parallel Processing. IEEE.
Gilski, P., Stefański, J. (2015). Android OS: a review. Tem
Journal, 4(1), 116-120.
Jääskeläinen, P., de La Lama, C. S., Schnetter, E., Raiskila,
K., Takala, J., Berg, H. (2015). pocl: a performance-
portable OpenCL implementation. International
Journal of Parallel Programming, 43(5), 752-785.
Juhyun, L., Raman S. (2020). Even faster mobile GPU
inference with OpenCL. https://blog.tensorflow.org/
2020/08/faster-mobile-gpu-inference-with-opencl.html
(access: 26.06.2022).
Karimi, K., Dickson, N. G., Hamze, F. (2010). A
performance comparison of CUDA and OpenCL. arXiv
preprint, arXiv:1005.2581.
Keryell, R., Reyes, R., Howes, L. (2015). Khronos SYCL
for OpenCL: A tutorial. In IWOCL’15, Proceedings of
the 3rd International Workshop on OpenCL. ACM.
McIntosh-Smith, S. (2020). Catching up with Khronos:
Experts’ QA on OpenCL 3.0 and SYCL.
https://www.khronos.org/blog/catching-up-with-khronos
-experts-qa-on-opencl-3.0-and-sycl-2020 (access: 26.
06.2022).
Munshi, A. (2009). The OpenCL specification. In HCS’09,
2009 IEEE Hot Chips 21 Symposium. IEEE.
Ross, J. A., Richie, D. A., Park, S. J., Shires, D. R., Pollock,
L. L. (2014). A case study of OpenCL on an Android
mobile GPU. In HPEC’14, 2014 IEEE High
Performance Extreme Computing Conference. IEEE.
Seo, S., Jo, G., Lee, J. (2011). Performance characterization
of the NAS Parallel Benchmarks in OpenCL. In
IISWC’11, 2011 IEEE International Symposium on
Workload Characterization. IEEE.
Tay, R. (2013). OpenCL parallel programming development
cookbook. Birmingham: Packt Publishing.
Wang, K., Nurmi, J., Ahonen, T. (2016). Accelerating
computation on an Android phone with OpenCL
parallelism and optimizing workload distribution
between a phone and a cloud service. In
UIC/ATC/ScalCom/CBDCom/IoP/SmartWorld’16,
2016 Intl IEEE Conferences on Ubiquitous Intelligence
& Computing, Advanced and Trusted Computing,
Scalable Computing and Communications, Cloud and
Big Data Computing, Internet of People, and Smart
World Congress. IEEE.
Wang, G., Xiong, Y., Yun, J., Cavallaro, J. R. (2013).
Accelerating computer vision algorithms using
OpenCL framework on the mobile GPU – A case study.
In ICASSP’13, 2013 IEEE International Conference on
Acoustics, Speech and Signal Processing. IEEE.