[Beignet] [hpc12/tools] build of 'sum' on 'Intel(R) HD Graphics IvyBridge M GT2' failed
David Liebman
david.c.liebman at gmail.com
Sat Aug 30 10:13:30 PDT 2014
maybe there's a change that you made that somehow didn't show up in the
patch? An edited header file or another c file??? You obviously have a
working copy. Your output is right. (!!)
On 08/30/2014 10:25 AM, David Liebman wrote:
>
> today I removed the beignet package from my system and downloaded the
> beignet source from this location:
> git://anongit.freedesktop.org/beignet
> I applied the patch cleanly and built/installed the package.
> Everything went well while building it. Unfortunately the PyOpenCL
> program doesn't work any better with the patched version of Beignet.
>
> ('a', array([ 0.], dtype=float32))
> ('b', array([ 0.], dtype=float32))
> ('c', array([ 0.], dtype=float32))
> 1 0.010353
> ('a', array([ 0., 1.], dtype=float32))
> ('b', array([ 0., 1.], dtype=float32))
> ('c', array([ 0., 0.], dtype=float32))
> 2 0.002883
> ('a', array([ 0., 1., 2.], dtype=float32))
> ('b', array([ 0., 1., 2.], dtype=float32))
> ('c', array([ 0., 0., 0.], dtype=float32))
> 3 0.002828
>
> I'm still getting zeros for 'c'. I recompiled PyOpenCL and tried
> again. No luck.
>
> On 08/30/2014 09:17 AM, Zhigang Gong wrote:
>> This should be a generic requirement for some applications and I think
>> PyOpenCL should be supported by
>> beignet. This patch should be pushed into the upstream repo after got
>> reviewed. And if you can test it locally
>> and let us know whether it fix your issue. It will be helpful.
>>
>> As to whether this could be merged into the fedora 21 release, I think
>> Igor may have official answer.
>> BTW, we are going to release a new fix version 0.9.3 in the coming
>> week after LLVM 3.5 released.
>> This patch should be included in 0.9.3.
>>
>> Igor, is it possible to get the 0.9.3 into the Fedora 21 release?
>>
>> Thanks,
>> Zhigang Gong
>>
>>
>> On Sat, Aug 30, 2014 at 8:46 PM, David Liebman
>> <david.c.liebman at gmail.com> wrote:
>>> On 08/30/2014 04:47 AM, Zhigang Gong wrote:
>>>> Just got some time to try you example with PyOpenCL. And it seems that
>>>> PyOpenCL depends on
>>>> a function which we haven't implemented. After apply the following
>>>> patch, I can run your example
>>>> correctly. The output is as below:
>>>> gongzg at gongzg-MBA:~/Downloads$ python test.py
>>>> ('a', array([ 0.], dtype=float32))
>>>> ('b', array([ 0.], dtype=float32))
>>>> ('c', array([ 0.], dtype=float32))
>>>> 1 0.010514
>>>> ('a', array([ 0., 1.], dtype=float32))
>>>> ('b', array([ 0., 1.], dtype=float32))
>>>> ('c', array([ 0., 2.], dtype=float32))
>>>> 2 0.004235
>>>> ('a', array([ 0., 1., 2.], dtype=float32))
>>>> ('b', array([ 0., 1., 2.], dtype=float32))
>>>> ('c', array([ 0., 2., 4.], dtype=float32))
>>>> 3 0.004166
>>>>
>>>>
>>>> From 81c9e5cf70ec01197833f8722f6aa16632a5f1a4 Mon Sep 17 00:00:00
>>>> 2001
>>>> From: Zhigang Gong <zhigang.gong at linux.intel.com>
>>>> Date: Sat, 30 Aug 2014 16:34:44 +0800
>>>> Subject: [PATCH] Runtime: Implement
>>>> clGetExtensionFunctionAddressForPlatform.
>>>>
>>>> It seems that this function is required for PyOpenCL.
>>>>
>>>> Signed-off-by: Zhigang Gong <zhigang.gong at linux.intel.com>
>>>> ---
>>>> src/cl_api.c | 19 +++++++++++++++++--
>>>> src/cl_khr_icd.c | 2 +-
>>>> 2 files changed, 18 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/src/cl_api.c b/src/cl_api.c
>>>> index 177a7e8..b463128 100644
>>>> --- a/src/cl_api.c
>>>> +++ b/src/cl_api.c
>>>> @@ -3156,8 +3156,8 @@ error:
>>>> if (strcmp(#x, func_name) == 0) \
>>>> return (void *)x;
>>>>
>>>> -void*
>>>> -clGetExtensionFunctionAddress(const char *func_name)
>>>> +static void*
>>>> +internal_clGetExtensionFunctionAddress(const char *func_name)
>>>> {
>>>> if (func_name == NULL)
>>>> return NULL;
>>>> @@ -3180,6 +3180,21 @@ clGetExtensionFunctionAddress(const char
>>>> *func_name)
>>>> return NULL;
>>>> }
>>>>
>>>> +void*
>>>> +clGetExtensionFunctionAddress(const char *func_name)
>>>> +{
>>>> + return internal_clGetExtensionFunctionAddress(func_name);
>>>> +}
>>>> +
>>>> +void*
>>>> +clGetExtensionFunctionAddressForPlatform(cl_platform_id platform,
>>>> + const char *func_name)
>>>> +{
>>>> + if (UNLIKELY(platform != NULL && platform != intel_platform))
>>>> + return NULL;
>>>> + return internal_clGetExtensionFunctionAddress(func_name);
>>>> +}
>>>> +
>>>> #undef EXTFUNC
>>>>
>>>> cl_int
>>>> diff --git a/src/cl_khr_icd.c b/src/cl_khr_icd.c
>>>> index 6d49db0..50a0898 100644
>>>> --- a/src/cl_khr_icd.c
>>>> +++ b/src/cl_khr_icd.c
>>>> @@ -154,7 +154,7 @@ struct _cl_icd_dispatch const
>>>> cl_khr_icd_dispatch = {
>>>> clEnqueueMigrateMemObjects,
>>>> clEnqueueMarkerWithWaitList,
>>>> clEnqueueBarrierWithWaitList,
>>>> - CL_1_2_NOTYET(clGetExtensionFunctionAddressForPlatform),
>>>> + clGetExtensionFunctionAddressForPlatform,
>>>> CL_GL_INTEROP(clCreateFromGLTexture),
>>>> (void *) NULL,
>>>> (void *) NULL,
>>> This is great. Thank you greatly for the patch. Now, should I be
>>> waiting for
>>> a new beignet package from fedora, or should I 'roll my own' and start
>>> compiling from source, adding the patch myself? I would love this to
>>> make it
>>> to the fedora 21 release, but I don't know what that would take.
>>> What is
>>> normal procedure? Is there a need for this method in the general
>>> community,
>>> or am I the only one who's interested in this feature?
>>>
>>> -Dave L.
>
More information about the Beignet
mailing list