Graphics Reference
In-Depth Information
Fig. 8.6 The final app making the next move recommendation
8.5 Vision Acceleration on Mobile Devices
In this section, we describe what we learned about acceleration of vision algorithms
on mobile devices, such as smart phones and tablets. Our app, as written in Java,
runs at around five frames per second, fast enough to allow seamless user interface.
Therefore, we can say we achieved real-time operation. However, we can imagine
that other, more complex vision apps with more stringent real-time requirements,
would have much more difficulty achieving real-time operation, so we wanted to
learn about how vision apps can be accelerated on mobile devices. We used the Tic-
Tac-Tandroid as a proxy application—our experience can be extrapolated to other
vision apps.
Mobile devices, such as smart phones and tablets, commonly have application
processors based on ARM Cortex architecture, which includes a SIMD (single
instruction multiple data) media accelerator called Neon [ 14 ]. Particular devices
commonly have other processors, such as DSPs and GPUs, however, at this time
the mobile operating systems such as Android, do not offer access to them because
each of these accelerators requires special-purpose code, contrary to the expecta-
tion of writing code once and running it on any device. Therefore, we focused on
acceleration using Neon.
Acceleration with Neon . All ARM Cortex-A8 devices and many Cortex-A9
devices, commonly used on recent smart phones and tablets, include a media accel-
erator known as Neon [ 14 ]. It is a 16-way SIMD (single instruction multiple data)
accelerator that can perform 8-, 16-, 32-, and 64-bit integer operations as well as
32-bit (single precision) floating-point operations. Having Neon available on most
Android smartphones opens up the possibility to accelerate many low-level vision
operations [ 15 ]. These include lens distortion correction, color conversion, image
filtering, pyramid building, gradient computations, etc.
Code Profiling . In order to decide where to start with vision optimization, we
first measured the execution times of various parts of our code as they executed in
Search WWH ::




Custom Search