[Beignet] [Piglit] [PATCH] fix CL_KERNEL_GLOBAL_WORK_SIZE bug.
Zhigang Gong
zhigang.gong at gmail.com
Thu Sep 25 07:10:58 PDT 2014
On Thu, Sep 25, 2014 at 9:47 PM, Tom Stellard <tom at stellard.net> wrote:
> On Thu, Sep 25, 2014 at 09:18:18AM +0800, Zhigang Gong wrote:
>> On Wed, Sep 24, 2014 at 08:03:10AM -0700, Tom Stellard wrote:
>> > On Wed, Sep 24, 2014 at 01:13:18AM +0000, Luo, Xionghu wrote:
>> > > Hi Tom,
>> > > According to the opencl-1.2 spec in page 165, the option CL_KERNEL_GLOBAL_WORK_SIZE for clGetKernelWorkGroupInfo should call built in kernel or custom device.
>> > >
>> > > "This provides a mechanism for the
>> > > application to query the maximum global
>> > > size that can be used to execute a kernel
>> > > (i.e. global_work_size argument to
>> > > clEnqueueNDRangeKernel) on a custom
>> > > device given by device or a built-in kernel
>> > > on an OpenCL device given by device.
>> > > If device is not a custom device or kernel
>> > > is not a built-in kernel,
>> > > clGetKernelArgInfo returns the error
>> > > CL_INVALID_VALUE."
>> > >
>> > > And this case called dummy kernel instead of built in kernel, so the return value is not as expected, my patch could call built in kernel to test the correct return value of option CL_KERNEL_GLOBAL_WORK_SIZE.
>> > >
>> >
>> > I'm still confused by this patch, because the CL_KERNEL_GLOBAL_WORK_SIZE enum
>> > value does not appear anywhere in this patch or in the file being patched.
>> Hi Tom,
>>
>> Please check the following code in the get-kernel-work-group-info.c:
>>
>> const cl_kernel_work_group_info* kernel_work_group_infos =
>> PIGLIT_CL_ENUM_ARRAY(cl_kernel_work_group_info);
>>
>> And the cl_kernel_work_group_info is defined as below in piglit-util-cl-enum.c as below:
>>
>> PIGLIT_CL_DEFINE_ENUM_2(cl_kernel_work_group_info, 3, 5, 6) = {
>> CL_KERNEL_WORK_GROUP_SIZE,
>> CL_KERNEL_COMPILE_WORK_GROUP_SIZE,
>> CL_KERNEL_LOCAL_MEM_SIZE,
>> #ifdef CL_VERSION_1_1
>> CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE,
>> CL_KERNEL_PRIVATE_MEM_SIZE, // 5
>> #endif //CL_VERSION_1_1
>> #ifdef CL_VERSION_1_2
>> CL_KERNEL_GLOBAL_WORK_SIZE,
>> #endif //CL_VERSION_1_2
>> };
>> PIGLIT_CL_DEFINE_ENUM_PTR_2(cl_kernel_work_group_info);
>>
>> You can see the CL_KERNEL_GLOBAL_WORK_SIZE is the last element of that array when
>> CL_VERSION_1_2 is defined.
>>
>>
>
> OK, thanks for the explain. The other question I had about the patch
> is: Won't it break the test for devices without builtin kernels?
>
You are right, we should not break the test when there is no built-in
kernel available.
Xionghu, please fix this and send a new version.
Thanks,
Zhigang Gong.
More information about the Beignet
mailing list