Hi. I am wondering if Adreno 320 GPU will support OpenCL on Android? While I know that the hardware is capable of doing OpenCL, I am wondering if:
1. End-user devices like smartphones and tablets that have the Adreno 320 GPU will come with working drivers?
2. Will an SDK (preferably free) be available to third-party developers to use OpenCL on such devices?
Yes, and yes. Look for OpenCL support to start appearing in the Adreno SDK and our other tools by the end of the year.
When are device drivers with support for OpenGL ES 3 and OpenCL going to be rolling out to devices that have the Snapdragon S4 pro in them?
OpenCL support was added to Adreno Profiler last month, although using it requires driver updates that will take a while to propogate to commercial devices. We will be releasing an update to the SDK either late this week or early next week that will have a few OpenCL samples. They will also require a device that has OpenCL support.
I can't provide any specific information on if or when OpenCL support will be available in commercial devices, since the decision to expose OpenCL to end developers - either at launch or via OTA updates - is made by handset manufacturers and carriers.
Thanks for the update. Looks like Qualcomm's OpenCL implementation work is going fine.
Will OpenCL drivers be available to the APQ8064 MDP tablets?
I have been working on several OpenCL projects, one of which (http://www.raijincl.org) is an open-source autotuning GEMM (matrix multiply) implementation which is already showing very good results on AMD and Nvidia hardware. Hoping to bring all of my projects over to Qualcomm products as soon as I can get a device with OpenCL drivers.
I have pinged LG developer forums to ask specifically about the Nexus 4 support there. If anyone is interested in seeing OpenCL on the Nexus 4, please raise your voice on the LG forums. http://developer.lge.com/community/forums/RetrieveForumList.dev?prodType...
I am also looking forward to OpenCL SDK availability for a Qualcomm platform.
Let's cross the fingers it will be there by the end of this year, as Dave posted previously :)
So the 3.1 SDK is out and has OpenCL examples and even a APK in it for trying things out.
Is there any news on when support is coming from anyone? I really want OpenCL and OpenGL ES 3 interop before christmas time
Looks like Qualcomm submitted OpenCL drivers to Khronos for certification. Waiting for OpenCL-enabled drivers to ship on consumer devices :)
Wondering if there are any developments on the availability of consumer devices with installed OpenCL drivers yet?
It appears that the Nexus 10 is shipping with undocumented OpenCL drivers. http://forum.beyond3d.com/showthread.php?t=63071
HTC One was announced recently and it is powered by a Snapdragon 600. Wondering where should I ask to confirm whether OpenCL drivers will be available for it?
I was talking with Rob Clark, who is working on the open source Adreno driver, and he is playing with the OpenCL compiler on his Nexus 4.
Apparently the video driver, libllvm-a3xx.so, has OpenCL things compiled in to it, so you may be able to take advantage of it directly.
That's very interesting! Thanks! Will look into it!
I found the file "/system/lib/libOpenCL.so" on my Nexus 4 (Android 4.2.2) and tested it:
I have tried creating a test APK. I do not have a device, so not sure if it will work or not. But if someone with a Nexus 4 could try it, that would be great :)
http://www.rgbench.com/testCL4.apk
Disregard previous APK. Corrected a few bugs. Would be great if someone could test this:
http://www.rgbench.com/testCL5.apk
@ rahul_garg:
screenshot http://goo.gl/7iB50
looks like OpenCL library aint loaded (i checked it's at the aforementioned location)
I/ActivityManager(472): Start proc org.codedivine.testcln10 for activity org.codedivine.testcln10/.MainActivity: pid=6530 uid=10139 gids={50139, 1028}
D/libEGL(6530): loaded /system/lib/egl/libEGL_adreno200.so
D/libEGL(6530): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
D/libEGL(6530): loaded /system/lib/egl/libGLESv2_adreno200.so
I/Adreno200-EGL(6530): <eglInitialize:269>: EGL 1.4 QUALCOMM build: Nondeterministic AU_full_mako_PARTNER-ANDROID/JB-MR1-DEV_CL2961380_release_AU (CL2961380)
I/Adreno200-EGL(6530): Build Date: 12/10/12 Mon
I/Adreno200-EGL(6530): Local Branch:
I/Adreno200-EGL(6530): Remote Branch: m/partner-android/jb-mr1-dev
I/Adreno200-EGL(6530): Local Patches: NONE
I/Adreno200-EGL(6530): Reconstruct Branch: NOTHING
D/OpenGLRenderer(6530): Enabling debug mode 0
I/ActivityManager(472): Displayed org.codedivine.testcln10/.MainActivity: +283ms
@erwincoumans
I get a blcack screen, but the logcat looks OK
clGetPlatformIDs succeed: platformID: de763ed3 found
Platform: QUALCOMM found
clGetDeviceIDs succeed: deviceID: 71ec3d50 found
Selected device is:
GPU
Device: QUALCOMM Adreno(TM) found
clCreateContext succeed: contextID: 7311fcb0
clCreateCommandQueue succeed: commandqueueID: 72b839a0
clCreateBuffer [0] succeed: bufferID: 72b83a10
clCreateBuffer [1] succeed: bufferID: 729c7ac8
clCreateProgramWithSource succeed: programID: 729c7b70
clBuildProgram succeed
clCreateKernel succeed: kernelID: 73a2bf28
clSetKernelArg succeed
clEnqueueWriteBuffer succeed
clEnqueueNDRangeKernel succeed
Output verification succeed
Hello CL finished successfully
clGetPlatformIDs succeed: platformID: de763ed3 found
Platform: QUALCOMM found
clGetDeviceIDs succeed: deviceID: 71ec3d50 found
Selected device is:
GPU
Device: QUALCOMM Adreno(TM) found
clCreateContext succeed: contextID: 73680198
clCreateCommandQueue succeed: commandqueueID: 72af3708
clCreateBuffer [0] succeed: bufferID: 72b839a0
clCreateBuffer [1] succeed: bufferID: 72b83a48
clCreateProgramWithSource succeed: programID: 73a2bf28
clBuildProgram succeed
clCreateKernel succeed: kernelID: 73680130
clSetKernelArg succeed
clEnqueueWriteBuffer succeed
clEnqueueNDRangeKernel succeed
Output verification succeed
Hello CL finished successfully
Unfortunately, the situation with OpenCL support on commercial devices is complicated. Although we provide a driver to our customers, it's up to them and Google to expose the APIs to third party developers. I can't comment on any specific plans they might have in this area, since at this point, it's really up to them.
@ rahul_garg:
hyperlink for screenshot above is messed up, try this instead http://goo.gl/8OdSW
@Dave Astle : it looks like some devices such as Nexus 10 and Nexus 4 already support OpenCL, although as a hidden easter egg in the OpenGL ES driver.
@Stefan_MW : so it looks like OpenCL works on both CPU and GPU. Perhaps that demo is supposed to be black, it is just an OpenCL demo and not a graphics demo?
@rahul_garg : can you share the source code of that demo, and detailed instructions how you compiled it?
The precompiled binary link is broken, can you re-upload it somewhere else?
You can find his work here.
http://www.anandtech.com/show/6804/opencl-drivers-discovered-on-nexus-4-...
https://bitbucket.org/codedivine/testcln10/src
My Xperia Z is updating now, I will try that on it next. Looking forward testing OpenCL on it if possible.
I can confirm from the source that this is the correct ouput.
I have build the code from the source and tried it on the XPeria Z and it gives me the same output.
I will play with it a bit to output more details next week and share the code with rahul_garg.
Well after looking at the source I would say that we cannot confirm that all the API is available yet.
The code is just testing a few functions and the result displayed is a bit strange. I was expecting to see the version (1.1 or 1.2) displayed from what the code is doing but nothing like that appears.
Here is what is reported by my XPeria Z (Adreno 320)
Platform Name : QUALCOMM Snapdragon(TM) (23)
Version : (0)
CL_DEVICE_TYPE : GPU
CL_DEVICE_VENDOR_ID : 3209509963
CL_DEVICE_MAX_COMPUTE_UNITS : 4
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS : 3
CL_DEVICE_MAX_WORK_GROUP_SIZE : 256
CL_DEVICE_MAX_WORK_ITEM_SIZES : 256 256 256
CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR : 1
CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT : 1
CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT : 1
CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG : 1
CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT : 1
CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE : 0
CL_DEVICE_MAX_CLOCK_FREQUENCY : 325
CL_DEVICE_ADDRESS_BITS : 32
CL_DEVICE_MAX_READ_IMAGE_ARGS : 12
CL_DEVICE_MAX_WRITE_IMAGE_ARGS : 4
CL_DEVICE_IMAGE2D_MAX_WIDTH : 8191
CL_DEVICE_IMAGE2D_MAX_HEIGHT : 8191
CL_DEVICE_IMAGE3D_MAX_WIDTH : 8191
CL_DEVICE_IMAGE3D_MAX_HEIGHT : 8191
CL_DEVICE_IMAGE3D_MAX_DEPTH : 512
CL_DEVICE_IMAGE_SUPPORT : TRUE
CL_DEVICE_MAX_PARAMETER_SIZE : 256
CL_DEVICE_MAX_SAMPLERS : 16
CL_DEVICE_MEM_BASE_ADDR_ALIGN : 512
CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE : 64
CL_DEVICE_SINGLE_FP_CONFIG : 1A
CL_DEVICE_GLOBAL_MEM_CACHE_TYPE : 2
CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE : 16
CL_DEVICE_GLOBAL_MEM_CACHE_SIZE : 8000
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE : 4096
CL_DEVICE_MAX_CONSTANT_ARGS : 8
CL_DEVICE_LOCAL_MEM_TYPE : 1
CL_DEVICE_ERROR_CORRECTION_SUPPORT : FALSE
CL_DEVICE_PROFILING_TIMER_RESOLUTION : 1000
CL_DEVICE_ENDIAN_LITTLE : TRUE
CL_DEVICE_AVAILABLE : TRUE
CL_DEVICE_COMPILER_AVAILABLE : FALSE
CL_DEVICE_EXECUTION_CAPABILITIES : 1
CL_DEVICE_QUEUE_PROPERTIES : 3
CL_DEVICE_NAME : QUALCOMM Adreno(TM)
CL_DEVICE_VENDOR : QUALCOMM
CL_DRIVER_VERSION : build:CL3050818
CL_DEVICE_PROFILE : EMBEDDED_PROFILE
CL_DEVICE_VERSION : OpenCL 1.1 Adreno(TM) 320
CL_DEVICE_EXTENSIONS : cl_khr_byte_addressable_store cl_khr_fp16 cl_khr_gl_sharing cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_qcom_default_relaxed_math cl_qcom_perf_monitor
CL_DEVICE_PLATFORM : DE763ED3
CL_DEVICE_DOUBLE_FP_CONFIG : 0
CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF : 1
CL_DEVICE_HOST_UNIFIED_MEMORY : TRUE
CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR : 1
CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT : 1
CL_DEVICE_NATIVE_VECTOR_WIDTH_INT : 1
CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG : 0
CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT : 1
CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE : 0
CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF : 1
CL_DEVICE_OPENCL_C_VERSION : OpenCL C 1.1 Adreno(TM) 320
CL_DEVICE_LINKER_AVAILABLE : FALSE
CL_DEVICE_BUILT_IN_KERNELS :
CL_DEVICE_IMAGE_MAX_BUFFER_SIZE : 0
CL_DEVICE_IMAGE_MAX_ARRAY_SIZE : 0
CL_DEVICE_PARENT_DEVICE : 0
CL_DEVICE_PARTITION_MAX_SUB_DEVICES : 0
CL_DEVICE_PARTITION_PROPERTIES :
CL_DEVICE_PARTITION_AFFINITY_DOMAIN : 0
CL_DEVICE_PARTITION_TYPE : 0
CL_DEVICE_REFERENCE_COUNT : 0
CL_DEVICE_PREFERRED_INTEROP_USER_SYNC : FALSE
CL_DEVICE_TYPE : CPU
CL_DEVICE_VENDOR_ID : 3209509963
CL_DEVICE_MAX_COMPUTE_UNITS : 4
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS : 3
CL_DEVICE_MAX_WORK_GROUP_SIZE : 1
CL_DEVICE_MAX_WORK_ITEM_SIZES : 1 1 1
CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR : 16
CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT : 16
CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT : 16
CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG : 1
CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT : 16
CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE : 0
CL_DEVICE_MAX_CLOCK_FREQUENCY : 1500
CL_DEVICE_ADDRESS_BITS : 32
CL_DEVICE_MAX_READ_IMAGE_ARGS : 128
CL_DEVICE_MAX_WRITE_IMAGE_ARGS : 8
CL_DEVICE_IMAGE2D_MAX_WIDTH : 8192
CL_DEVICE_IMAGE2D_MAX_HEIGHT : 8192
CL_DEVICE_IMAGE3D_MAX_WIDTH : 2048
CL_DEVICE_IMAGE3D_MAX_HEIGHT : 2048
CL_DEVICE_IMAGE3D_MAX_DEPTH : 2048
CL_DEVICE_IMAGE_SUPPORT : TRUE
CL_DEVICE_MAX_PARAMETER_SIZE : 256
CL_DEVICE_MAX_SAMPLERS : 16
CL_DEVICE_MEM_BASE_ADDR_ALIGN : 1024
CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE : 128
CL_DEVICE_SINGLE_FP_CONFIG : 3E
CL_DEVICE_GLOBAL_MEM_CACHE_TYPE : 2
CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE : 64
CL_DEVICE_GLOBAL_MEM_CACHE_SIZE : 100000
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE : 65536
CL_DEVICE_MAX_CONSTANT_ARGS : 8
CL_DEVICE_LOCAL_MEM_TYPE : 2
CL_DEVICE_ERROR_CORRECTION_SUPPORT : FALSE
CL_DEVICE_PROFILING_TIMER_RESOLUTION : 0
CL_DEVICE_ENDIAN_LITTLE : TRUE
CL_DEVICE_AVAILABLE : TRUE
CL_DEVICE_COMPILER_AVAILABLE : TRUE
CL_DEVICE_EXECUTION_CAPABILITIES : 3
CL_DEVICE_QUEUE_PROPERTIES : 3
CL_DEVICE_NAME : QUALCOMM Krait(TM)
CL_DEVICE_VENDOR : QUALCOMM
CL_DRIVER_VERSION : build:CL3050818
CL_DEVICE_PROFILE : EMBEDDED_PROFILE
CL_DEVICE_VERSION : OpenCL 1.1 Krait(TM)
CL_DEVICE_EXTENSIONS : cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cles_khr_int64 cl_khr_fp16
CL_DEVICE_PLATFORM : DE763ED3
CL_DEVICE_DOUBLE_FP_CONFIG : 0
CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF : 16
CL_DEVICE_HOST_UNIFIED_MEMORY : TRUE
CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR : 16
CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT : 8
CL_DEVICE_NATIVE_VECTOR_WIDTH_INT : 4
CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG : 1
CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT : 4
CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE : 0
CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF : 8
CL_DEVICE_OPENCL_C_VERSION : OpenCL C 1.1 Krait(TM)
CL_DEVICE_LINKER_AVAILABLE : FALSE
CL_DEVICE_BUILT_IN_KERNELS :
CL_DEVICE_IMAGE_MAX_BUFFER_SIZE : 0
CL_DEVICE_IMAGE_MAX_ARRAY_SIZE : 0
CL_DEVICE_PARENT_DEVICE : 0
CL_DEVICE_PARTITION_MAX_SUB_DEVICES : 0
CL_DEVICE_PARTITION_PROPERTIES :
CL_DEVICE_PARTITION_AFFINITY_DOMAIN : 0
CL_DEVICE_PARTITION_TYPE : 0
CL_DEVICE_REFERENCE_COUNT : 0
CL_DEVICE_PREFERRED_INTEROP_USER_SYNC : FALSE
Promising certainly.
And for more details here is the list of supported 2D and 3D textures.
I am always amazed by how so few formats can be supported on CPU... Sure I understand that to optimize all formats it is a lot of work but a default implementation for all existing format even if slow should be the minimum for the CPU.
No single or dual channel format supported at all on CPU. No 8bit single or dual channel on GPU either.
This is clearly the point I hate the most in OpenCL. It is supposed to be portable but how can you port something when the Image format are mostly optional and vary so much from one platform to another.
The textures format I was hoping to use are not available on the Adreno 320 or the CPU, what a surprise...
Rant over :)
Well I have also written the full wrapper now but I have not tested any kernel yet.
Laurent.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Platform Name : QUALCOMM Snapdragon(TM) (23)
Version : (0)
CL_DEVICE_NAME : QUALCOMM Adreno(TM)
CL_DEVICE_VENDOR : QUALCOMM
CL_DEVICE_VERSION : OpenCL 1.1 Adreno(TM) 320
CL_DEVICE_OPENCL_C_VERSION : OpenCL C 1.1 Adreno(TM) 320
Format for 2D Images
Format 0: CL_RGBA, CL_UNORM_INT8
Format 1: CL_RGBA, CL_UNORM_INT16
Format 2: CL_RGBA, CL_SIGNED_INT8
Format 3: CL_RGBA, CL_SIGNED_INT16
Format 4: CL_RGBA, CL_SIGNED_INT32
Format 5: CL_RGBA, CL_UNSIGNED_INT8
Format 6: CL_RGBA, CL_UNSIGNED_INT16
Format 7: CL_RGBA, CL_UNSIGNED_INT32
Format 8: CL_RGBA, CL_HALF_FLOAT
Format 9: CL_RGBA, CL_FLOAT
Format 10: CL_BGRA, CL_UNORM_INT8
Format 11: CL_BGRA, CL_UNORM_INT16
Format 12: CL_BGRA, CL_SIGNED_INT8
Format 13: CL_BGRA, CL_SIGNED_INT16
Format 14: CL_BGRA, CL_SIGNED_INT32
Format 15: CL_BGRA, CL_UNSIGNED_INT8
Format 16: CL_BGRA, CL_UNSIGNED_INT16
Format 17: CL_BGRA, CL_UNSIGNED_INT32
Format 18: CL_BGRA, CL_HALF_FLOAT
Format 19: CL_BGRA, CL_FLOAT
Format 20: CL_R, CL_UNORM_INT16
Format 21: CL_R, CL_SIGNED_INT16
Format 22: CL_R, CL_SIGNED_INT32
Format 23: CL_R, CL_UNSIGNED_INT16
Format 24: CL_R, CL_UNSIGNED_INT32
Format 25: CL_R, CL_HALF_FLOAT
Format 26: CL_R, CL_FLOAT
Format for 3D Images
Format 0: CL_RGBA, CL_UNORM_INT8
Format 1: CL_RGBA, CL_UNORM_INT16
Format 2: CL_RGBA, CL_SIGNED_INT8
Format 3: CL_RGBA, CL_SIGNED_INT16
Format 4: CL_RGBA, CL_SIGNED_INT32
Format 5: CL_RGBA, CL_UNSIGNED_INT8
Format 6: CL_RGBA, CL_UNSIGNED_INT16
Format 7: CL_RGBA, CL_UNSIGNED_INT32
Format 8: CL_RGBA, CL_HALF_FLOAT
Format 9: CL_RGBA, CL_FLOAT
Format 10: CL_BGRA, CL_UNORM_INT8
Format 11: CL_BGRA, CL_UNORM_INT16
Format 12: CL_BGRA, CL_SIGNED_INT8
Format 13: CL_BGRA, CL_SIGNED_INT16
Format 14: CL_BGRA, CL_SIGNED_INT32
Format 15: CL_BGRA, CL_UNSIGNED_INT8
Format 16: CL_BGRA, CL_UNSIGNED_INT16
Format 17: CL_BGRA, CL_UNSIGNED_INT32
Format 18: CL_BGRA, CL_HALF_FLOAT
Format 19: CL_BGRA, CL_FLOAT
Format 20: CL_R, CL_UNORM_INT16
Format 21: CL_R, CL_SIGNED_INT16
Format 22: CL_R, CL_SIGNED_INT32
Format 23: CL_R, CL_UNSIGNED_INT16
Format 24: CL_R, CL_UNSIGNED_INT32
Format 25: CL_R, CL_HALF_FLOAT
Format 26: CL_R, CL_FLOAT
CL_DEVICE_NAME : QUALCOMM Krait(TM)
CL_DEVICE_VENDOR : QUALCOMM
CL_DEVICE_VERSION : OpenCL 1.1 Krait(TM)
CL_DEVICE_OPENCL_C_VERSION : OpenCL C 1.1 Krait(TM)
Format for 2D Images
Format 0: CL_RGBA, CL_UNORM_INT8
Format 1: CL_RGBA, CL_UNORM_INT16
Format 2: CL_RGBA, CL_SIGNED_INT8
Format 3: CL_RGBA, CL_SIGNED_INT16
Format 4: CL_RGBA, CL_SIGNED_INT32
Format 5: CL_RGBA, CL_UNSIGNED_INT8
Format 6: CL_RGBA, CL_UNSIGNED_INT16
Format 7: CL_RGBA, CL_UNSIGNED_INT32
Format 8: CL_RGBA, CL_HALF_FLOAT
Format 9: CL_RGBA, CL_FLOAT
Format 10: CL_BGRA, CL_UNORM_INT8
Format 11: CL_BGRA, CL_UNORM_INT16
Format 12: CL_BGRA, CL_SIGNED_INT8
Format 13: CL_BGRA, CL_SIGNED_INT16
Format 14: CL_BGRA, CL_SIGNED_INT32
Format 15: CL_BGRA, CL_UNSIGNED_INT8
Format 16: CL_BGRA, CL_UNSIGNED_INT16
Format 17: CL_BGRA, CL_UNSIGNED_INT32
Format 18: CL_BGRA, CL_HALF_FLOAT
Format 19: CL_BGRA, CL_FLOAT
Format for 3D Images
Format 0: CL_RGBA, CL_UNORM_INT8
Format 1: CL_RGBA, CL_UNORM_INT16
Format 2: CL_RGBA, CL_SIGNED_INT8
Format 3: CL_RGBA, CL_SIGNED_INT16
Format 4: CL_RGBA, CL_SIGNED_INT32
Format 5: CL_RGBA, CL_UNSIGNED_INT8
Format 6: CL_RGBA, CL_UNSIGNED_INT16
Format 7: CL_RGBA, CL_UNSIGNED_INT32
Format 8: CL_RGBA, CL_HALF_FLOAT
Format 9: CL_RGBA, CL_FLOAT
Format 10: CL_BGRA, CL_UNORM_INT8
Format 11: CL_BGRA, CL_UNORM_INT16
Format 12: CL_BGRA, CL_SIGNED_INT8
Format 13: CL_BGRA, CL_SIGNED_INT16
Format 14: CL_BGRA, CL_SIGNED_INT32
Format 15: CL_BGRA, CL_UNSIGNED_INT8
Format 16: CL_BGRA, CL_UNSIGNED_INT16
Format 17: CL_BGRA, CL_UNSIGNED_INT32
Format 18: CL_BGRA, CL_HALF_FLOAT
Format 19: CL_BGRA, CL_FLOAT
The biggest let down here is probably the fact that it is an Embedded Profile too, compared to the Full Profile provided by the Mali T604.
I hope that Qualcomm will strive to support as much as possible of the Full Profile though.
Kishonti (the folks behind CLBenchmark) posted this about the Xperia Z:
https://clbenchmark.com/device-info.jsp?config=14950526&test=CLB10101
Interesting. I guess this is really just the beginning of OpenCL on mobile phone.
Comparison with the T604 is not too bad when taking into account the difference in clock speed but the fluid simulation number is really bad.
I mean 40 times faster that is a lot... I guess anything more than image filters is almost out of the question right now...
It would be interesting to see what the kernel is doing for the fluid simulation to understand what is so slow.
Hi,
Made progress in Nexus 4 phone for using OpenCL in java & also made it to work with aparapi framework , so one can write pure java applications (using GPGPU & OpenCL) on the Nexus 4 devices. IMHO same approach can be used for any other future Android phones with proper OpenCL.so libraries deployed in the phones (without HW/SW vendor's SDKs).
Please find code at google-code.
Thanks & regards,
mahadevan
@ mahadevan
your precompiled APK works fine
i noticed one issue:
I/CLInfo(3007): Error:CL_DRIVER_VERSION:-30
logcat here http://goo.gl/mN5Pg
Stefan,
Thanks you very much for trying out the clinfo on android on Nexus 4.
I too found out same -30 error for OpenCL Driver Version -- it is documented at my blog
It is error I got from OpenCL.so (which is supplied by QualComm).
Thanks & regards,
mahadevan
Hi, I use hello_cl_sdk_example project in adreno sdk to build opencl code. But It comes out errors:
Hi everyone. I found this upcoming developer board for $149 : http://www.inforcecomputing.com/product/moreinfo/ifc6410.html based upon the APQ8064 (quad-core Krait with Adreno 320). The board supports Android 4.1.2 and vendors have confirmed that they will provide OpenCL drivers. Just thought people might be interested :)
I was able to run OpenCL on my HTC Butterfly. It even does better than the Nexus 4 I have, as the Nexus 4 tends to crash after a few interations. It seems that not many people mentioned this phone anywhere.
What's the status of HTC One? Does it come with preloaded OpenCL libs? Have anyone tried to run OpenCL on it?
The HTC One has the same drivers as the HTC Droid DNA, so it has the OpenCL library already.
Bump!
I have same problem as chen20062308.
ld.exe : cannot find -lOpenCL
Hey Mr. Chen. How did you solve this issue?
Can anyone summarize the OpenCL tools supported by the Adreno SDK, and describe where they run and how?
For example, the profiler runs the GUI under Windows only (what flavors?) but the executable runs on the SnapDragon.
There is an emulator for Windows. There is a plugin for Eclipse. Is this for Eclipse running under Ubuntu? On an Android system? What does the plugin enable? Can you interactively debug a kernel running on the GPU and set breakpoints? Ditto on the CPU? Does printf() work from inside a kernel?
Where does the offline compiler run? On Android? On Windows? can it run under a Linux distro like Ubuntu?
Any idea about what source code compatability issues arise with respect to other OpenCL implementations, particularly Mac?
thanks
I think Android 4.3 update for Nexus 10 is removing proper OpenCL support. Kishonti report that kernels no longer compile under 4.3. I think Google likely forced ARM to do so, given that they control the firmware for nexus devices. Can anyone confirm the status of Nexus 4. Google's behavior of actively opposing an open standard is really disappointing.
Can anyone confirm which Qualcomm device comes with official OpenCL drivers with support? I think Qualcomm's MDP (mobile development platform) devices likely support OpenCL "officially".
Yes. I have observed that when I manually updated my Nexus-4 with Android 4.3, no /system/lib/libOpenCL.so is available. I thought that when they do OTA update they (Google/LG) will include the OpenCL support. More in my blog about Nexus-4 manual update.
If this is the case, then it would problematic for me -- I bought Nexus-4 as it has OpenCL and BT 4.0.
Let me wait for OTA update and report back.
I grabbed libOpenCL.so from April's driver pack on this site and pushed it into JB4.3 system/lib
Works with CLInfo
SDK sample fails with
W/Adreno200-GSL(7104): <ioctl_kgsl_sharedmem_free:1486>: kgsl_sharedmem_free: munmap failed: errno 22 Invalid argument
On the other hand i noticed 3 other files in system/lib/ that smell like OpenCL
libclcore_debug.bc
libclcore_neon.bc
libclcore.bc
Any info on those?
Hi Stefan,
I am not aware of those files in Android 4.3. If they are not .so file, most probably we might not be able to load via dynamic-loading. May be we can force them. But I am not sure.
I had a backup file of working libOpenCL.so, I could not copy as I have not rooted my phone (deliberatly). I will keep informed here, if I have any progress on this. One way I can see to use my backed-so-file is to give explicit path for loading -- But I am not sure whether this works with 4.3 (as some of the compiler version/etc changes), it may not work.
AFAIK libclcore.bc is not for OpenCL, it is part of the Renderscript runtime.
See for example: https://events.linuxfoundation.org/slides/2011/lfcs/lfcs2011_llvm_liao.pdf
Thanks for the heads-up
Today i tried to compile the samples from new Adreno SDK 3.3.3
I executed build_common.bat
Then i tried e.g "install_android DeviceQuery" which gives me this error
Android NDK: WARNING:C:/AdrenoSDK/Development/Samples/OpenCL/DeviceQuery/Android//jni/Android.mk:DeviceQuery: non-system libraries in linker flags: -lOpenCL
Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK: current module
Clean: DeviceQuery [armeabi-v7a]
Clean: android_native_app_glue [armeabi-v7a]
Clean: gnustl_shared [armeabi-v7a]
Clean: gnustl_static [armeabi-v7a]
What am i doing wrong?
I get the GUI, but then it crashes on hitting a button
screenshot http://goo.gl/As35ir
I've run OpenCL Device Test app on HTC One 32Gb (aNDROID 4.2.2) and it report no OpenCL found. It seems OpenCL driver is not preinstalled.
Maybe interesting. Oliver Reiche put this comment on http://www.youtube.com/all_comments?v=uQ5NumRfHN4 :
Its LLVM bytecode containing the RenderScript API implementation.
llvm-dis system/lib/libclcore.bc -o dump; cat dump
Hey,
I am also interested to know which commercial smartphone having Adreno 320 supports OpenCL.
If they dont ship OpenCL -- Can I atleast load OpenCL libraries (say hopefully from Adreno SDK) onto the phone and work?
Thanks for any help,
Best regards,
Monkey
Pages