Ten Reasons Why Android Should Support OpenCL

>> Wednesday, April 3, 2013

In an earlier post, I explained why a Google engineer's grievance with OpenCL was mistaken. Now here are ten reasons why Google should make OpenCL the high-performance language of choice on Android:

10. GPU vendors are the driving force behind OpenCL and their tools provide stable, high-speed kernel execution. When GPU technology improves, OpenCL improves immediately.

9. If Android becomes a desktop OS, it should be able to access desktop GPUs and mobile GPUs. OpenCL has broad support on both platforms.

8. Aparapi makes it easy to launch OpenCL kernels from Java. It's open-source and GSS Mahadevan has successfully used it on Android.

7. In addition to CPUs and GPUs, OpenCL kernels can be executed on DSPs and FPGAs. Future high-performance devices will be more likely to support OpenCL than any other language.

6. When OpenCL devices are added to a context, they can work together to execute kernels. With OpenCL, embedded devices have the potential of accessing more powerful systems to crunch data.

5. One of OpenCL's chief advantages is OpenCL-OpenGL interoperability, which allows OpenCL kernels to process OpenGL buffer data before rendering starts. It would take a lot of work to add a similar capability for Renderscript.

4. Currently, native Android developers need to learn x86 and ARM/NEON instructions to ensure high-performance. Intel and ARM are both strong supporters of OpenCL, so if Android adopted OpenCL, native developers would only have to learn one language.

3. Google has put aside O3D in favor of WebGL and the Renderscript graphics engine in favor of OpenGL. If history is any guide, Google will choose OpenCL over Renderscript computation.

2. The general-purpose GPU (GPGPU) community is small and fragmented. It's unlikely that a new, OS-specific language will attract a developer base large enough to justify its existence.

1. If iOS supports OpenCL and Android doesn't, GPU-accelerated apps will run faster on iOS. High-performance mobile computing isn't a big deal yet, but there's no telling what the future may bring.

7 comments:

Anonymous,  April 5, 2013 at 7:39 AM  

Nice summary!
Maybe you should mention battery life, because GPUs are far more efficient :)

Matt Scarpino April 5, 2013 at 8:27 AM  

Thank you. Yes, improved battery life is an important advantage.

Cheng Angela April 21, 2013 at 11:08 AM  

Hi Matt,

This is Angela from Khronos Group, the OpenCL standard organization. It's great to see your blog. May I have your email for further communication? My email: angela@goldstandardgroup.com.

Thank you!

Matt Scarpino April 21, 2013 at 3:28 PM  

Hi Angela,

My e-mail address is mattscar@gmail.com. Thanks for your attention.

Matt

David N. Wiggins April 22, 2013 at 10:31 PM  

0. OpenCL-enabled SQL DB's could beat the poop out of MapReduce:

http://data-informed.com/fast-database-emerges-from-mit-class-gpus-and-students-invention/

Albeit this one is CUDA...

Dan Strano April 28, 2013 at 4:29 PM  

I'm working on quantum mechanics simulations on home hardware, including Android devices. Google claims that OpenCL programs are locked into how they're designed around group size; my kernels aren't. I wrote my kernels to scale based on a parameter for group size specified at compile time. If you're writing OpenCL, this is part of the programmer's job where scaling considerations are applicable.

Renderscript is kind of a nightmare, as I try to shoe-horn my OpenCL into a Renderscript program and back-door to get group size control back. There's practically zip documentation on Renderscript, and the organization of the workspace is haphazard from my POV as an OpenCL developer. I use Android; I love Android; but Google is making it really hard for me by assuming that I can't be bothered to handle low-level organization when I specifically want to push the hardware with computationally intensive code. If we ask for OpenCL, it's because we want the control it implies. We're big girls and boys; we can handle the manual control, and we'll use high-level parts of the SDK anyway when computation capacity isn't taxed.

Please leave me both the responsibility AND THE CONTROL, Google!

Anonymous,  May 11, 2013 at 6:01 AM  

What would you think about an Android-Tab with a multi-core epiphany processor on board? In a few weeks the first creditcard-size boards will be shipped to the first backers from the kickstarter project. This will be the first platform to develop OpenCL-based Apps for Android, and make it a 90 GFLOP system with 5W power-consumption.

Post a Comment

  © Blogger template Werd by Ourblogtemplates.com 2009

Back to TOP