[Beignet] Program compilation crash on Ivy Bridge

Nicolas Bourdaud nicolas.bourdaud at gmail.com
Tue Dec 2 03:40:07 PST 2014


Surprisingly none provide more log. I have attached the results of the
two command one running with OCL_OUTPUT_LLVM_AFTER_LINK=1 set and the
other with OCL_OUTPUT_LLVM_BEFORE_LINK=1.

When using on haswell, I have proper log.


On 12/02/2014 11:36 AM, Zhigang Gong wrote:
> Just tried your test program on my IVB machine, and it works fine as below:
> 
>   gongzg at ivb-gt2-rev4:/tmp/testclbug$ ./testclbug
>   OpenCL platform name: Intel Gen OCL Driver
>   OpenCL version: OpenCL 1.2 beignet 1.0 (git-07809dc)
>   OpenCL device: Intel(R) HD Graphics IvyBridge GT2
>   going to compile CL prog
>   prog compiled
>   gongzg at ivb-gt2-rev4:/tmp/testclbug$ llvm-config --version
>   3.5.0
> 
> As the error message is definitely from LLVM internal, I doubt there is still something
> wrong with your LLVM installation. It may be helpful if you can share the llvm ir output.
> 
> You can try as below:
> 
> # export OCL_OUTPUT_LLVM_AFTER_LINK=1
> # ./testclbug > llvm.log 2>&1
> 
> If you can't get any llvm ir by this method, you can try:
> # export OCL_OUTPUT_LLVM_BEFORE_LINK=1
> # ./testclbug > llvm.log 2>&1
> 
>> -----Original Message-----
>> From: Nicolas Bourdaud [mailto:nicolas.bourdaud at gmail.com]
>> Sent: Tuesday, December 2, 2014 6:11 PM
>> To: Song, Ruiling; Zhigang Gong; beignet at lists.freedesktop.org
>> Subject: Re: [Beignet] Program compilation crash on Ivy Bridge
>>
>> Thanks for your answer.
>>
>> I am using the attached file version. I have retried (recompiled beignet 1.0,
>> install and rerun the test) making sure that there is absolutely only llvm/clang
>> 3.5 on the system and I still get the same on IvyBridge:
>>
>>> OpenCL platform name: Intel Gen OCL Driver OpenCL version: OpenCL 1.2
>>> beignet 1.0.0 OpenCL device: Intel(R) HD Graphics IvyBridge GT2 going
>>> to compile CL prog Call parameter type does not match function
>>> signature!
>>> i128 8404990
>>>  float  %8 = call i32 @_Z6islessff(float %7, i128 8404990) #3 Both
>>> operands to a binary operator are not of the same type!
>>>   %18 = fmul ppc_fp128 0xM0000000000FF40060000000000000000,
>> float %17
>>> Invalid insertelement operands!
>>>   %20 = insertelement <4 x float> %19, ppc_fp128 %18, i32 1 Invalid
>>> insertelement operands!
>>>   %26 = insertelement <4 x float> %25, ppc_fp128
>>> 0xM00000000000000000000000000000000, i32 3 LLVM ERROR: Broken
>> function found, compilation aborted!
>>
>> I don't whether it can help but I have provided the full test program (opencl + C)
>> in attachment (testclbug.tar.gz).
>>
>> I am than willing to share any build log, intermediate file, or information about
>> the problematic systems that could help to understand the issue. I just don't
>> know which one could be relevant and helpful.
>>
>> Cheers,
>>
>> Nicolas
>>
>>
>> On 12/02/2014 02:52 AM, Song, Ruiling wrote:
>>> It is really strange, I tried you kernel on my Ivybridge machine. With beignet
>> 1.0 and LLVM/clang 3.5 It compiled successfully.
>>> Did you uninstall llvm/clang 3.4 before you install llvm/clang 3.5?
>>> Also you need to make sure you really use the attached file version.
>>>
>>> From your attached kernel code (isless(C, 0.5f);), it only could generate below
>> call instruction.
>>> %call = call i32 @_Z6islessff(float %4, float 5.000000e-01) But you
>>> get below call instruction, which is obviously wrong.
>>> float  %8 = call i32 @_Z6islessff(float %7, i128 8404990)
>>>
>>>> -----Original Message-----
>>>> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On
>>>> Behalf Of Nicolas Bourdaud
>>>> Sent: Tuesday, December 02, 2014 2:17 AM
>>>> To: Zhigang Gong; beignet at lists.freedesktop.org
>>>> Subject: Re: [Beignet] Program compilation crash on Ivy Bridge
>>>>
>>>> Hi!
>>>>
>>>> Two weeks ago, I mentioned a problem of OpenCL program crashing
>>>> during compilation on IvyBridge while compiling fine on Haswell. I
>>>> have been advised to test using llvm/clang 3.5. So I have compiled
>>>> beignet 1.0.0 using llvm/clang 3.5 but it turns out that I still get
>>>> the same problem on IvyBridge (Haswell still works):
>>>>
>>>>> OpenCL platform name: Intel Gen OCL Driver OpenCL version: OpenCL
>>>>> 1.2 beignet 1.0.0 OpenCL device: Intel(R) HD Graphics IvyBridge GT2
>>>>> Running OpenCL 1.2 version going to compile CL prog Call parameter
>>>>> type does not match function signature!
>>>>> i128 8404990
>>>>>  float  %8 = call i32 @_Z6islessff(float %7, i128 8404990) #3 Both
>>>>> operands to a binary operator are not of the same type!
>>>>>   %18 = fmul ppc_fp128 0xM0000000000FF40060000000000000000,
>>>> float %17
>>>>> Invalid insertelement operands!
>>>>>   %20 = insertelement <4 x float> %19, ppc_fp128 %18, i32 1 Invalid
>>>>> insertelement operands!
>>>>>   %26 = insertelement <4 x float> %25, ppc_fp128
>>>>> 0xM00000000000000000000000000000000, i32 3 LLVM ERROR: Broken
>>>> function found, compilation aborted!
>>>>
>>>>
>>>> I don't know what I could check. So any lead is welcome. For
>>>> reference the offending CPUs are:
>>>>  - Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
>>>>  - Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz I have put the program
>>>> provoking the crash in attachment (test.cl)
>>>>
>>>> Thanks in advance to anyone who could shed some light on these issues.
>>>>
>>>> Cheers,
>>>>
>>>> Nicolas
>>>>
>>>>
>>>> On 11/18/2014 10:00 AM, Nicolas Bourdaud wrote:
>>>>> Thanks! I will try this
>>>>>
>>>>> Nicolas
>>>>>
>>>>> On 18/11/2014 02:52, Zhigang Gong wrote:
>>>>>> The following error log is from LLVM internal. It's likely a
>>>>>> llvm/clang 3.4's
>>>> bug.
>>>>>> The kernel works fine with both beignet 0.9.3 and 1.0.0 by using
>>>> llvm/clang 3.5.
>>>>>> The recommended llvm version for beignet is LLVM 3.5.
>>>>>>
>>>>>> OpenCL platform name: Intel Gen OCL Driver OpenCL version: OpenCL
>>>>>> 1.2 beignet 0.9.3 OpenCL device: Intel(R) HD Graphics IvyBridge GT2
>>>>>> Running OpenCL 1.2 version going to compile CL prog Call parameter
>>>>>> type does not match function signature!
>>>>>> i128 8404990
>>>>>>  float  %8 = call i32 @_Z6islessff(float %7, i128 8404990) #7 Both
>>>>>> operands to a binary operator are not of the same type!
>>>>>>   %18 = fmul ppc_fp128 0xM0000000000FF40060000000000000000,
>>>> float %17
>>>>>> Invalid insertelement operands!
>>>>>>   %20 = insertelement <4 x float> %19, ppc_fp128 %18, i32 1 Invalid
>>>>>> insertelement operands!
>>>>>>   %26 = insertelement <4 x float> %25, ppc_fp128
>>>>>> 0xM00000000000000000000000000000000, i32 3 Broken module found,
>>>> compilation aborted!
>>>>>> Aborted
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On
>>>>>>> Behalf Of Nicolas Bourdaud
>>>>>>> Sent: Monday, November 17, 2014 7:27 PM
>>>>>>> To: beignet at lists.freedesktop.org
>>>>>>> Subject: [Beignet] Program compilation crash on Ivy Bridge
>>>>>>>
>>>>>>> Hi!
>>>>>>>
>>>>>>> In beignet 0.9.3, beignet aborts in the middle on compilation with
>>>>>>> compiling for ivybridge microarchitecture, while it compiles and
>>>>>>> runs
>>>> fine on Haswell.
>>>>>>>
>>>>>>> I have provided a test program (test.cl) that shows the problem
>>>>>>> and the generate log on haswell (haswell.log) and ivybridge
>>>>>>> (ivybridge.log). I have tested on different ivybridge CPU
>>>>>>> (HD4000,
>>>>>>> HD2500) and the issue is the same. I have also tested on different
>>>>>>> haswell CPU (only HD4600) and it always goes fine.
>>>>>>>
>>>>>>> For information beignet has been tested for:
>>>>>>>  - ivybridge using linux 3.14 compiled with llvm 3.4.
>>>>>>>  - haswell using linux 3.14 compiled with llvm 3.4.
>>>>>>>  - haswell using linux 3.16 compiled with llvm 3.5 In all case,
>>>>>>> the program compiled and runs correctly with haswell, not with
>> ivybridge.
>>>>>>>
>>>>>>> I could give a try with beignet 1.0.0, but maybe you the problem
>>>>>>> would be obvious to you.
>>>>>>>
>>>>>>> Any idea about the problem?
>>>>>>>
>>>>>>> Cheers,
>>>>>>>
>>>>>>> Nicolas Bourdaud
>>>>>>
>>>>>
>>>>>
>>>
>>> _______________________________________________
>>> Beignet mailing list
>>> Beignet at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/beignet
>>>
> 
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm_after_link.log
Type: text/x-log
Size: 692 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/beignet/attachments/20141202/6be2f3ee/attachment-0002.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm_before_link.log
Type: text/x-log
Size: 692 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/beignet/attachments/20141202/6be2f3ee/attachment-0003.bin>


More information about the Beignet mailing list