← Back to team overview

ubuntu-phone team mailing list archive

Re: Are there OpenCL/HSA/Bolt specific libs in the ubuntu phone repository yet?

 

REQUEST for CHANGE:
please add to the ubuntu and ubuntu phone repositories:
-Adreno 320-based OpenCL libs
-HSA tools/libs
-Bolt C++ template libs
-aparapi java-based jar's for accessing OpenCL from java

SUMMARY of the OpenCL/HSA/Bolt
------------------------------
HSA is the highest level tool for doing high-performance computing.
IMHO, HSA is a NON-GUI api facilitating HPC on different
hardware(hardware-neutral) mobile and non-mobile.
C++ OpenCL(AMD/NVIDIA/ARM), AMP C++(MICROSOFT) are enablers within the
HSA plumbing.

HSA 10 Whitepaper Summary:
http://hsafoundation.com/publications/
http://developer.amd.com/wordpress/media/2012/10/hsa10.pdf
"HSA is a unified computing framework. It provides a single address
space accessible to both CPU and GPU (to avoid data copying), user-space
queuing (to minimize communication overhead), and preemptive context
switching (for better quality of service) across all computing  elements
in the system. HSA unifies CPUs and GPUs into a single system with
common computing concepts, allowing the developer to solve a greater
variety of complex problems more easily."

"A user process requests memory objects through the HSA runtime. The
requests get serviced by the kernel mode component, which also manages
the kernel-space buffers. Allocated buffers can be handed directly to
HSA hardware, without additional intervention from system software."

"An HSA application can access the same physical memory as existing
graphics APIs without requiring a memory copy. This allows TCU(GPU
DEVICE) devices to use graphics buffers directly, and conversely allows
graphics to display results computed on TCUs directly, with no CPU
intervention."

"The HSA architecture deals with two kinds of compute units:
•A latency compute unit (LCU) is a generalization of a CPU. An LCU
supports both its native CPU instruction set and the HSA intermediate
language (HSAIL) instruction set.
•A throughput compute unit (TCU) is a generalization of a GPU. A TCU
supports only the HSAIL instruction set. TCUs perform very efficient
parallel execution."

The powerful OpenCL library can be overwhelming because it is a flat
common-service standard-runtime-like API with lots of types and lots of
services in basically 3 categories: memory/device setup, gui, and non-gui.

The C++-based non-GUI Bolt template lib simplifies using OpenCL API, but
it's not part of HSA.  It's advantageous because it feels like STL
template usage and takes care of the memory setup and device usage.


On 12/07/2013 03:17 PM, David Marceau wrote:
> I am aware that Nexus 4 has opencl capability.
> http://code.google.com/p/aopencl/
> Android OpenCL examples
> 
> OpenCL info for Nexus-4 phones
> http://aopencl.googlecode.com/files/clinfo-debug.apk
http://aopencl.googlecode.com/files/aparapi-debug.apk
http://forum.jogamp.org/OpenCL-on-mobile-devices-td4028411.html
http://jogamp.org/deployment/jogamp-current/apk/
http://www.browndeertechnology.com/coprthr_clete.htm
http://jogamp.org/deployment/jogamp-current/jar/

> 
> OpenCL without any other libs:
> https://bitbucket.org/codedivine/testcln10/src
> 
> HSA:
> http://hsafoundation.com/hsa-developer-tools/
> 
> Bolt C++ Template library:
> https://github.com/HSA-Libraries/Bolt
> 
> Has there been any work to integrate this into ubuntu phone yet?
> 
> Thanks.
> 
> Cheers,
> David Marceau
> 
All these are Google Nexus 4 phone-specific because it uses the
Qualcomm Snapdragon S4 Pro APQ8064 System-On-Chip(SOC):
-4 Qualcomm Krait Harvard Superscalar processor CPU cores
-Adreno 320 GPU inside the Qualcomm S4 Pro & Prime Series, with unified
shader architecture and dual channel memory. It supports Direct3D
feature level 9_3 in addition to OpenGL ES 3.0, OpenGL ES 2.0, OpenGL ES
1.1, OpenVG 1.1, EGL 1.4, Direct3D Mobile, SVGT 1.2 [4]

There are many phones out there that use the same APQ8064 SOC:
http://pdadb.net/index.php?m=pdamaster&posted=1&cpu=a8064
This also includes
ZTE Nubia 5 NA NX501
ZTE Grand S V988 (ZTE Athena)
Sony Xperia Z C6616 (Sony Yuga Rex)
Sony Xperia ZR M36h C5502 (Sony Dogo)
LG Optimus GJ SKT (LG Gee B)
Panasonic Eluga X P-02E (Panasonic Rupy)
SoftBank Sharp Aquos Phone Xx 203SH
Xiaomi Mi-Two CDMA / MI-2C 32GB
NEC Medias X N-04E

Not exactly the same phones but in the same family APQ8064ab SOC:
http://pdadb.net/index.php?m=pdamaster&posted=1&cpu=a8064ab
This includes the Samsung Galaxy S4 family of phones.

So the Adreno 320 contains OpenCL .so's on the Nexus 4.
I don't know if any of the below contains the OpenCL headers, but I
figure I should mention it because it's all related to the Adreno part
of the Nexus 4 SOC.  It would be nice to see some of this stuff just
become part of the ubuntu-sdk considering it's supporting the nexus 4 image.

Snapdragon SDK for Android
https://developer.qualcomm.com/mobile-development/mobile-technologies/snapdragon-sdk-android


Mobile Gaming & Graphics Optimization (Adreno) Tools and Resources
https://developer.qualcomm.com/mobile-development/mobile-technologies/gaming-graphics-optimization-adreno/tools-and-resources

Adreno SDK (v3.4) - Linux Installer
The Adreno SDK includes tools, libraries, samples, documentation, and
tutorials for working with the OpenGL ES, DirectX, OpenCL, and OpenSL
API’s. With v3.4, the Adreno SDK now includes a Linux distribution with
the OpenGL ES Emulator, Adreno Texture Tool, Texture Converter, and SDK
Samples working on Linux. Other additions in this version include a new
OpenGL ES 3.0 Quick Reference Guide, bug fixes in the OpenGL ES
Emulator, and bug fixes in the texture tools. View the full release
notes for more information.
https://developer.qualcomm.com/download/adreno-sdk-linux.tar.gz

Adreno 2xx, and 3xx User-mode Android 4.2 Jelly Bean MR1 Graphics Driver
(ARMv7) [JB_VANILLA.04.02.02.060.053]
This release contains a developer preview of the user-mode driver
binaries for Qualcomm's Adreno 3xx and 2xx GPU on Google Android 4.2
Jelly Bean MR1. It has been tested with the CAF
AU_LINUX_ANDROID_JB_VANILLA.04.02.02.060.053 and supports any Adreno 2xx
and 3xx GPU on Android 4.2 Jelly Bean MR1. This release is intended only
for developers that work on Jelly Bean MR1 bring-up work, and does not
meet our customer release quality. This release adds Adreno Profiler
support for Nexus 4 devices with factory ROM JDQ39.
https://developer.qualcomm.com/download/Adreno200-AU_LINUX_ANDROID_JB_VANILLA_04.02.02.060.053.zip

FYI NVIDIA TEGRA SOC uses MALI OPENCL SDK:
http://malideveloper.arm.com/develop-for-mali/sdk/mali-opencl-sdk/



Follow ups

References