CL_INVALID_VALUE  from clCreateKernel

cancel
Showing results for 
Search instead for 
Did you mean: 

CL_INVALID_VALUE  from clCreateKernel

1,600 Views
eladshulman
Contributor II

Hi,

 

I'm trying to use the kernel in the attached file, it is with the tiled convolution example from AMD with few minor changes (

I had to changed the use of pointers  to access vector data types. e.g. from :

 

*(__local float4*)&lclPlane[lcloffset4] = horiz_filter;

into:

= vload4(0,&lclPlane[offset4]);

 

The file get compiled ok, but I get CL_INVALID_VALUE -30 for clCreateKernel..

Couldn't figure out why the clCreateKernel fails, and I should note that it works on Intel and Nvidia OpenCL sdks.

I'm using sabre lite board with linaro-ubuntu-desktop

The opencl device:

 

DEVICE_NAME = Vivante OpenCL Device

DEVICE_VENDOR = Vivante Corporation

DEVICE_VERSION = OpenCL 1.1

DRIVER_VERSION = OpenCL 1.1

 

Will appreciate your help.

Original Attachment has been moved to: kernel.cl.zip

Labels (2)
8 Replies

213 Views
arthassin
Contributor II

You are probably out of the kernel arguments limit. I think it was 9 for vivantes opencl platform. Check it by querying device for opencl info.

0 Kudos

213 Views
eladshulman
Contributor II

There is a limit to the number of constants arguments ( CL_DEVICE_MAX_CONSTANT_ARGS ).

The example uses only 1 constant arguments so I don't think that this is the problem.

Moreover, I deleted to content of the kernel and left only its header, than I tried to call clCreateKernel for this empty kernel and it worked. This means that this issue has something to do with the kernel content.

0 Kudos

213 Views
arthassin
Contributor II

You are right. Have you checked the instruction count? Old vivante drivers supported very limited count of instructions per kernel. I dont know what they did on more recent drivers. Try seperating your kernel. And do you know the version of the ocl driver you are using?

213 Views
eladshulman
Contributor II

Thanks, I will try to seperate the kernel.

I don't know the exact number - when querying the device I only get :

DEVICE_NAME = Vivante OpenCL Device

DEVICE_VENDOR = Vivante Corporation

DEVICE_VERSION = OpenCL 1.1

DRIVER_VERSION = OpenCL 1.1

How can I tell the driver version ? and where can I found newer drivers to download ?

0 Kudos

213 Views
granttao
Contributor III

Sorry to bother you. I am new bee,  i just can not compile opencl c file on a new MX6 Q platform. my system is L3.0.35 linaro, when compiling, libopencl.so got many undefined references:

/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../../lib/libOpenCL.so: undefined reference to `gcoCL_DestroyTexture'

/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../../lib/libOpenCL.so: undefined reference to `gcInvokeThreadWalker'

/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../../lib/libOpenCL.so: undefined reference to `gcSHADER_GetConstantMemorySize'

/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../../lib/libOpenCL.so: undefined reference to `gcSHADER_GetUniform'

/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../../lib/libOpenCL.so: undefined reference to `gcoOS_DeleteMutex'


I have got gpu-viv-bin-mx6q_1.1.0-1_armel.deb installed, there must be something with wrong configuration.

Could you help me?

thanks in advance!

0 Kudos

213 Views
eladshulman
Contributor II

Try to add -lGAL to your linker line

0 Kudos

213 Views
granttao
Contributor III

thanks a lot!

But i got a segmentation fault when running, do you know the reason?

0 Kudos

213 Views
eladshulman
Contributor II

Sorry, I can't tell without looking at your code.

0 Kudos