[Beignet] Program compilation crash on Ivy Bridge

Zhigang Gong zhigang.gong at linux.intel.com
Tue Dec 2 02:36:44 PST 2014


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
> >




More information about the Beignet mailing list