clCreateKernel error while using Intel motion estimation accelerator

clCreateKernel error while using Intel motion estimation accelerator

We are using the sample program for motion estimation accelerator from the following site: http://software.intel.com/en-us/articles/intro-to-motion-estimation-extension-for-opencl

We are using a laptop with Intel(R) Core(TM) i7-4750HQ CPU @ 2.00GHz, with Intel(R) Iris(TM) Pro Graphics 5200. The system is running Windows 8.1 Professional 64-bit.

Following software is installed - Intel SDK for OpenCL Applications 2013 R2 for 64-bit, Intel HD Graphics Driver version 10.18.10.3316 (15.33.5.64.3316)

Upon querying the hardware, we get the device extension names of cl_intel_accelerator and cl_intel_motion_estimation.

After creating program context and queue, and getting pointers to the motion accelerator routines, we are able to get the name "block_motion_estimation_intel" in the list of kernel names in program.

However when we try to create a kernel using clCreateKernel(program, "block_motion_estimation_intel", &error), it returns an error INVALID_PROGRAM_EXECUTABLE.

Please let me know if there are any additional steps to successfully create the "block_motion_estimation_intel" kernel.

Regards

Murali

6 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Quote:

Murali M. wrote:
However when we try to create a kernel using clCreateKernel(program, "block_motion_estimation_intel", &error), it returns an error INVALID_PROGRAM_EXECUTABLE.

Hi, notice that kernel name is "block_motion_estimate_intel", not "block_motion_estimation_intel".  Please clarify if prior to calling the clCreateKernel, you issue a call to the clCreateProgramWithBuiltInKernels with this same kernel name, and it does succeed.

Hi,

Thanks a lot for quick message, will check and get back.

Regards

Murali

Hi,

Now we did try calling "block_motion_estimate_intel" only but we still end up with the error. Given below is some more details of our call sequence:

The calls were made in this sequence:

context = clCreateContext(contextProperties, deviceIdCount, deviceIds, NULL, NULL, &error); Returns SUCCESS

queue = clCreateCommandQueue(context, deviceIds[0], 0, &error); Returns SUCCESS

pfn_clCreateAcceleratorINTEL = (clCreateAcceleratorINTEL_fn)clGetExtensionFunctionAddressForPlatform(platformIds[0], "clCreateAcceleratorINTEL"); Returns SUCCESS

program = clCreateProgramWithBuiltInKernels(context,1,deviceIds,"block_motion_estimate_intel",&error); Returns SUCCESS

clGetProgramInfo(program, CL_PROGRAM_NUM_KERNELS, sizeof(cl_uint), &kernelIdCount, NULL); Returns 1 in kernelIdCount

clGetProgramInfo(program, CL_PROGRAM_KERNEL_NAMES, 500, kernelNames, &size); Returns "block_motion_estimate_intel" in kernelNames

clGetProgramBuildInfo(program,deviceIds[0],CL_PROGRAM_BUILD_STATUS,sizeof(cl_build_status),&buildStatus,&size); Returns CL_BUILD_SUCCESS

kernel = clCreateKernel(program, "block_motion_estimate_intel", &error); Returns 0x0000000

We are using Microsoft Visual Studio 2010 Professional and have added "$(INTELOCLSDKROOT)lib\x64" in the Additional Library Directories in the Linker Configuration Properties.

In the Project Properties -> Configuration Properties -> Intel SDK for OpenCL Applications -> Device, we have selected the device as GPU (-device=GPU). Also tried with selecting CPU, but there is no difference in the result.

Are there any additional settings to be done in Project Properties?

The entire code is in a single C file which includes "CL/cl.h" and "CL/cl_ext.h"

Any help on this will be greatly appreciated.

Regards

Murali

 

Hi,

setting GPU or CPU in the Intel OpenCL SDK specific project settings doesn't affect app execution, this is just a parameter for the offline compiler. Specifically, during compilation of the VS project, each cl file in the project is compiled for the specified device and the resulted status (incl warnings, errors and general hints) this is pretty useful when you develop the kernels from VS. Notice that real CL program compilation which is happening during application execution, can be actually happen for  another platform/device/command-line-args/etc (depending on your actual app logic).

Anyway, regarding your trouble with VME- there will be a release of the dedicated Intel OpenCL SDK sample about VME  soon, so please, stay tuned.

Hi,

The new release is now available at: http://software.intel.com/en-us/vcsource/tools/opencl-sdk. The new sample is also available at: Video Motion Estimation Using OpenCL*

Please upgrade your SDK and verify that you use the latest driver version 15.33.8

 

Arnon

 

Hi,

The new release is now available at: http://software.intel.com/en-us/vcsource/tools/opencl-sdk. The new sample is also available at: Video Motion Estimation Using OpenCL*

Please upgrade your SDK and verify that you use the latest driver version 15.33.8

 

Arnon

 

Leave a Comment

Please sign in to add a comment. Not a member? Join today