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/ -- Mailing list: https://launchpad.net/~ubuntu-phone Post to : ubuntu-phone@lists.launchpad.net Unsubscribe : https://launchpad.net/~ubuntu-phone More help : https://help.launchpad.net/ListHelp