[Beignet] [PATCH v4] Utests: Allow testing cl_intel_accelerator via ICD

Yang, Rong R rong.r.yang at intel.com
Thu Oct 20 05:24:56 UTC 2016


OK, Your patchset also LGTM, will push them later, thanks.

> -----Original Message-----
> From: Weng, Chuanbo
> Sent: Thursday, October 13, 2016 17:22
> To: Rebecca N. Palmer <rebecca_palmer at zoho.com>;
> beignet at lists.freedesktop.org; Yang, Rong R <rong.r.yang at intel.com>
> Subject: RE: [Beignet] [PATCH v4] Utests: Allow testing cl_intel_accelerator
> via ICD
> 
> This version LGTM. Thanks for your patch, Rebecca.
> Rong, I've also sent out a patchset to fix the problem I mentioned in previous
> e-mail:
> 
> > There is a bug in Beignet: cl_intel_motion_estimation is supported by
> > IVB only, but all devices show string cl_intel_motion_estimation in their
> CL_DEVICE_EXTENSIONS. I'll work out a patch to fix this problem.
> 
> Patchset here:
> 	https://lists.freedesktop.org/archives/beignet/2016-
> October/008123.html
> 	https://lists.freedesktop.org/archives/beignet/2016-
> October/008124.html
> 
> Please push my patchset at first and then push Rebecca's patch. Otherwise
> there will be FAIL on non-IVB platform.
> 
> Thanks,
> Chuanbo Weng
> 
> 
> -----Original Message-----
> From: Rebecca N. Palmer [mailto:rebecca_palmer at zoho.com]
> Sent: Thursday, October 13, 2016 6:38 AM
> To: Weng, Chuanbo <chuanbo.weng at intel.com>;
> beignet at lists.freedesktop.org
> Subject: Re: [Beignet] [PATCH v4] Utests: Allow testing cl_intel_accelerator
> via ICD
> 
> v3: Use extension check, not beignet check.  Treat claiming to have the
> extension but not having the kernel as a failure.
> v4: Make extension check a function, use stderr.
> ---
> > There is a bug in Beignet: cl_intel_motion_estimation is supported by
> > IVB only, but all devices show string cl_intel_motion_estimation in their
> CL_DEVICE_EXTENSIONS. I'll work out a patch to fix this problem.
> src/cl_extensions.c:72 - all Intel extensions are always "available", whether
> or not they work on the current device.
> 
> --- a/utests/builtin_kernel_block_motion_estimate_intel.cpp
> +++ b/utests/builtin_kernel_block_motion_estimate_intel.cpp
> @@ -8,6 +8,9 @@ OCLRELEASEACCELERATORINTEL * oclReleaseA
> 
>  void builtin_kernel_block_motion_estimate_intel(void)
>  {
> +  if (!cl_check_motion_estimation()) {
> +    return;
> +  }
>    char* built_in_kernel_names;
>    size_t built_in_kernels_size;
>    cl_int err = CL_SUCCESS;
> @@ -21,7 +24,8 @@ void builtin_kernel_block_motion_estimat
>    if (strstr(built_in_kernel_names, "block_motion_estimate_intel") == NULL)
>    {
>          free(built_in_kernel_names);
> -        return;
> +        fprintf(stderr, "Can't find block_motion_estimate_intel built-in kernel");
> +        OCL_ASSERT(0);
>    }
> 
>    cl_program built_in_prog = clCreateProgramWithBuiltInKernels(ctx, 1,
> &device, built_in_kernel_names, &err);
> --- a/utests/CMakeLists.txt
> +++ b/utests/CMakeLists.txt
> @@ -287,7 +287,8 @@ set (utests_sources
>    multi_queue_events.cpp
>    compiler_mix.cpp
>    compiler_math_3op.cpp
> -  compiler_bsort.cpp)
> +  compiler_bsort.cpp
> +  builtin_kernel_block_motion_estimate_intel.cpp)
> 
>  if (LLVM_VERSION_NODOT VERSION_GREATER 34)
>    SET(utests_sources
> @@ -328,7 +329,6 @@ else(GEN_PCI_ID)
>  endif(GEN_PCI_ID)
> 
>  if (NOT_BUILD_STAND_ALONE_UTEST)
> -  SET(utests_sources ${utests_sources}
> builtin_kernel_block_motion_estimate_intel.cpp)
>    ADD_CUSTOM_TARGET(kernel_bin.bin DEPENDS ${kernel_bin}.bin)  endif
> (NOT_BUILD_STAND_ALONE_UTEST)
> 
> --- a/utests/utest_helper.cpp
> +++ b/utests/utest_helper.cpp
> @@ -875,6 +875,24 @@ int cl_check_beignet(void)
>    return 1;
>  }
> 
> +int cl_check_motion_estimation(void)
> +{
> +  std::string extStr;
> +  size_t param_value_size;
> +  OCL_CALL(clGetDeviceInfo, device, CL_DEVICE_EXTENSIONS, 0, 0,
> +&param_value_size);
> +  std::vector<char> param_value(param_value_size);
> +  OCL_CALL(clGetDeviceInfo, device, CL_DEVICE_EXTENSIONS,
> param_value_size,
> +           param_value.empty() ? NULL : &param_value.front(),
> +&param_value_size);
> +  if (!param_value.empty())
> +    extStr = std::string(&param_value.front(), param_value_size-1);
> +
> +  if (std::strstr(extStr.c_str(), "cl_intel_motion_estimation") == NULL) {
> +    printf("No cl_intel_motion_estimation, Skip!");
> +    return 0;
> +  }
> +  return 1;
> +}
> +
>  int cl_check_subgroups(void)
>  {
>    std::string extStr;
> --- a/utests/utest_helper.hpp
> +++ b/utests/utest_helper.hpp
> @@ -307,6 +307,9 @@ typedef cl_int(clGetKernelSubGroupInfoKH
>                                                size_t *);  extern clGetKernelSubGroupInfoKHR_cb*
> utestclGetKernelSubGroupInfoKHR;
> 
> +/* Check if cl_intel_motion_estimation enabled. */ extern int
> +cl_check_motion_estimation(void);
> +
>  /* Check is cl version 2.0. */
>  extern int cl_check_ocl20(void);
> 



More information about the Beignet mailing list