Hello,
we want to test i.MX6Q GPU, we followed the document: i.MX Graphics User’s Guide and used clpeak to test it.
The following is the test log:
root@imx6qsabresd:/usr# ./clpeak
Platform: Vivante OpenCL Platform
Device: Vivante OpenCL Device GC2000.5108.0000
Driver version : OpenCL 1.1 V6.2.4.p1.150331 (Linux ARM)
Compute units : 4
Clock frequency : 500 MHzGlobal memory bandwidth (GBPS)
float : 0.54
float2 : 0.93
float4 : 1.90
float8 : 0.98
float16 : 0.49Single-precision compute (GFLOPS)
clCreateKernel (-5)
Tests skippedNo half precision support! Skipped
No double precision support! Skipped
Integer compute (GIOPS)
clCreateKernel (-5)
Tests skippedTransfer bandwidth (GBPS)
enqueueWriteBuffer : 0.71
enqueueReadBuffer : 0.16
enqueueMapBuffer(for read) : 40.02
memcpy from mapped ptr : 0.17
enqueueUnmap(after write) : 19.70
memcpy to mapped ptr : 0.70Kernel launch latency : 200.27 us
And we found some error in two items:
(1)Single-precision compute (GIOPS)
(2)Integer compute (GIOPS)
clCreateKernel (-5) means CL_OUT_OF_RESOURCES.
Could anybody tell what happened?
Our OpenCL version and info in GPU are as below :
root@imx6qsabresd:/usr# opencv_version --opencl
4.0.1
OpenCL Platforms:
Vivante OpenCL Platform
iGPU: Vivante OpenCL Device GC2000.5108.0000 (OpenCL 1.1 )
Current OpenCL device:
Type = iGPU
Name = Vivante OpenCL Device GC2000.5108.0000
Version = OpenCL 1.1
Driver version = OpenCL 1.1 V6.2.4.p1.150331
Address bits = 32
Compute units = 4
Max work group size = 1024
Local memory size = 1 KB
Max memory allocation size = 32 MB
Double support = No
Host unified memory = Yes
Device extensions:
cl_khr_byte_addressable_store
cl_khr_gl_sharing
Has AMD Blas = No
Has AMD Fft = No
Preferred vector width char = 4
Preferred vector width short = 4
Preferred vector width int = 4
Preferred vector width long = 0
Preferred vector width float = 4
Preferred vector width double = 0
Hi zohan
description of CL_OUT_OF_RESOURCES error can be found in
OpenCL on i.MX6 – Laanwj's blog – Randomness
also below is good overview of i.mx6 opencl
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi igor,
Thanks for your info.
I found something about i.MX6Q as below
Preferred vector width char = 4
Preferred vector width short = 4
Preferred vector width int = 4
Preferred vector width long = 0
Preferred vector width float = 4
Preferred vector width double = 0
Then I checked the clpeak source code, it tests from vector width '1' to '16',
In Single-precision compute(float) test, it could load the vector width '1', '4', and '8' program in Kernel(), but it failed to load vector width '16' program and returned clCreateKernel (-5).
In Integer compute(int) test, it could load the vector width '1' and '4' program in Kernel(), but it failed to load vector width '8' and '16' program and returned clCreateKernel (-5).
So the root cause is "Preferred vector width", right?
Thanks,
zohan