Hi,
Mali GPU will support OpenCL and as well as android.
Is there any SDK will support OpenCL for Android?
The Mali OpenCL SDK provides a lot of OpenCL samples for the developers. Good!
But I don't find any Android related stuff in the SDK. (or) Am I missing something?
I want to build Android applications with OpenCL acceleration (an 'apk' package) which i can test(run) on a Smart Phone hosting Mali T6xx GPU.
In particular, we are looking to accelerate the FFT portion of our image processing Android Application.
Is there a way to achieve this with MaliGPU OpenCL SDK?
As of Android 4.3, most Android devices don't allow OpenCL kernel compilation.
OpenCL Blog: OpenCL Disabled on Android
You can read a full assessment and retort here:
Google blocked OpenCL on Nexus with Android 4.3 - Blog - StreamComputing
This doesn't mean it can't be done, it simply means you have to use older Android tools/versions or Linux toolchains. Because Google is discouraging OpenCL in favor of RenderScript (read Tim Murray's post on Stack Overflow), you won't find a lot of demo or sample code for Android. I see you've posted this in ARM Mali Graphics before the Android Community was tagged. akshayagarwal, any further thoughts?
Utilizing the GPU with OpenCL may get you the best performance for your FFT but you might also consider RenderScript, RenderScript Intrinsics, or if SIMD is acceptable, we have a set of NEON FFTs in ProjectNe10. In a few days, we'll be posting an update to Ne10 with more FFTs but the current list is in our DSP header file on GitHub.
Hi prasu,
The OpenCL SDK samples will build out of the box for Linux but not for Android at present. The OpenCL kernels themselves will of course work on OpenCL on Android, you will just have to write an APK which feeds the commands to the API. In fact, most of those samples might build as Android executables (not apk's, binaries) if you wanted to test them that way. The process for building binaries is the same as for shared libraries with the NDK, but you include "include $(BUILD_EXECUTABLE)" instead of "include $(BUILD_SHARED_LIBRARY)" These could then be run from the command line.
For FFT specifically, there are a number of renderscript implementations out there, such as nesl/renderScriptFFT · GitHub, which might be worth a look, although I can't vouch for its performance.
Hope this helps,
Chris