About 5 months ago we started waiting for Mobile OpenCL. Meanwhile we had all the news around ARM on CES in January, and of course all those beta-programs made progress meanwhile. And after a year of having “support“, we actually want to see the words “SDK” and/or “driver“. So who’s leading? Ziilabs, ImTech, Vivante, Qualcomm, FreeScale or newcomer nVIDIA?
Mobile phone manufacturers could have a big problem with the low-level access to the GPU. While most software can be sandboxed in some form, OpenCL can crash the phone. But at the other side, if the program hasn’t taken down the developer’s test-phone, the chances are low it will take any other phone. And also there are more low-level access-points to the phone. So let’s check what has happened until now.
Note: this article will be updated if more news comes from MWC ’11.
For mobile devices Khronos has specified a profile, which is optimised for (ARM) phones: OpenCL Embedded Profile. Read on for the main differences (taken from a presentation by Nokia).
- Adapting code for embedded profile
- Added macro __EMBEDDED_PROFILE__
- CL_PLATFORM_PROFILE capabilityreturns the string EMBEDDED_PROFILE if only the embedded profile is supported
- Online compiler is optional
- No 64-bit integers
- Reduced requirements for constant buffers, object allocation, constant argument count and local memory
- Image & floating point support matches OpenGL ES 2.0 texturing
- The extensions of full profile can be applied to embedded profile
Floating point numbers
- INF and NAN values for floats are not mandated.
- Most accuracy requirements are the same, but some single precision floating-point operations are relaxed from full profile:
- x / y<= 3 ulp [units in last place]
- exp<= 4 ulp
- log<= 4 ulp
- Float add, sub, mul, mad can be rounded to zero resulting an error <= 1 ulp (helps to keep HW area down)
- Denormalized half floats can be flushed to zero
- The precision of conversions from normalized integers is <= 2 ulp for the embedded profile (instead of <= 1.5 ulp)
- Image support is an optional feature within an OpenCL device
- If Images are supported, the min reqs for the supported image capabilities are lowered to the level of OpenGL ES 2.0 textures:
- Kernel must be able to read >= 8 simultaneous image objects
- Kernel must be able to write >= 1 simultaneous image objects
- Width and height of 2D image >= 2048
- Number of samplers >= 8
- Image formats match OpenGL ES 2.0 texture formats
- Support for 3D images is optional
- Float 2D/3D images only support point sampling (nearest neighbour)
Mobile operating systems
I want to focus on the hardware, but hardware needs an OS.
It is not known if Apple’s iPhone uses GPGPU, but there are some press releases hinting to it. In any case it is not available to the developer and only used under the hood.
Android 3.0 will have “hardware acceleration”, which is basically a better OpenGL-renderer, but not clear if it does OpenCL-like computations. So we have to be happy with multi-core support and the better OpenGL-support. Since there is much competition between the Android-phone manufacturers and therefore a bigger need to distinct themselves, we might have to watch Samsung and Sony-Ericsson – both having experience with OpenCL.
No news around Windows Mobile 7. Of course they will use DirectCompute. I expect them to launch mobile GPGPU in 2012, together with Windows 8 and Xbox 720.
Vivante claims to have OpenCL EP 1.1 support for several of its products and even drivers. But no public drivers/SDK available yet. I really had expected they would have been first, after reading “Vivante is providing native support for OpenCL as a driver for unlocking the power of our GPUs as a compute element in a wide variety of embedded applications.” from 16 November 2009.
Two people mention OpenCL on their LinkedIn: Kit Lam Cheong has worked on an OpenCL-compiler since August last year, and VP sales and business development David Jarmon. It seems that they had the hardware ready, made a proof-of-concept and took it out of the drawer half a year ago.
ZiiLabs is still running its “OpenCL Early Access Program” and no news has been added. They do use OpenCL for stereoscopic 3D, since June 2010. Better news is here: “OpenCL-support in Android NDK”. So it seems they have actually have developers-support; you’ll hear more about this later.
NVIDIA has developed CUDA for Tegra together with selected licensees, I heard from several sources. There is no news on public availability, we can expect the official launch will be very well prepared by NVIDIA’s marketing department, supported by several products. I think they will launch around the launch of AMD Fusion, being its biggest competitor; or else on the moment other ARM-based solutions on OpenCL go on the market. They can then blow away the competition, because they have products.
See here the news from a selected licensee, which uses probably CUDA for its “Powerful physics module”.
ImTec stated: “Early OpenCL software now with multiple licensees and OEMs. Running on today’s production POWERVR SGX chips –nobody else can do this” at page 40 in this PDF (14 December 2010). I found one engineer Pedro Ferreira who worked on a compiler since March 2010. It seems to be successful, since today ImTec submitted the driver to Khronos for conformance. It is not known when and in what form the driver will be available for developers.
It was quiet around this company concerning OpenCL, but end January this year the tag was used for the first time in an news-item about Snapdragon’s Adreno Graphics. I can tell that ex-AMD-employee David Garcia leads the OpenCL-team there since more than a year, so it is in the works for sure.
FreeScale / S3
Oof! It’s really quiet around FreeScale. I could find mentions of OpenCL, such as that an IP-camera of theirs will support it on page in this PDF, but that’s all. The mentioned GPU is from S3.
S3 provides an alternative for ARM’s MALI-GPU (not discussed here) and has OpenCL 1.0 support since end of 2009 in their 5000-serie.
It seems we are close to see several launches for ARM-based OpenCL solutions, but we still have to wait. NVIDIA might have sped up the process by entering the ARM-market in a fast pace. If I look at where we stand, we can expect driver- and SDK-releases this summer. If you have any more news, please let StreamHPC know via a comment or by contacting us.