[llvm-dev] MCJit Runtine Performance

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Thu Feb 4 19:35:49 PST 2016


----- Original Message -----
> From: "Morten Brodersen via llvm-dev" <llvm-dev at lists.llvm.org>
> To: "llvm-dev" <llvm-dev at lists.llvm.org>
> Sent: Thursday, February 4, 2016 9:26:51 PM
> Subject: Re: [llvm-dev] MCJit Runtine Performance
> 
> Hi Hal,
> 
> We are using the default register allocator. I assume the greedy one
> is
> default?
> 
> As for other target machine optimizations:
> 
> I have tried:
> 
> llvm::TargetMachine* tm = ...;
> 
> tm->setOptLevel(llvm::CodeGenOpt::Aggressive);
> 
> And it doesn't make much of a difference.
> 
> And also:
> 
> tm->setFastISel(true);
> 
> (previous email).
> 
> Is there anything else I can try?

>From your previous e-mail, it seems like this is a case of too little optimization, not too much, right?

Are you creating a TargetTransformInfo object for your target?

CodeGenPasses->add(
          createTargetTransformInfoWrapperPass(TM->getTargetIRAnalysis())

I assume you're dominated by integer computation, not floating-point, is that correct?

 -Hal

> 
> On 05/02/16 11:16, Hal Finkel wrote:
> > ----- Original Message -----
> >> From: "Keno Fischer via llvm-dev" <llvm-dev at lists.llvm.org>
> >> To: "Morten Brodersen" <Morten.Brodersen at constrainttec.com>
> >> Cc: "llvm-dev" <llvm-dev at lists.llvm.org>
> >> Sent: Thursday, February 4, 2016 6:05:29 PM
> >> Subject: Re: [llvm-dev] MCJit Runtine Performance
> >>
> >>
> >>
> >> Yes, unfortunately, this is very much known. Over in the julia
> >> project, we've recently gone through this and taken the hit (after
> >> doing some work to fix the very extreme corner cases that we were
> >> hitting). We're not entirely sure why the slowdown is this
> >> noticable, but at least in our case, profiling didn't reveal any
> >> remaining low hanging fruits that are responsible. One thing you
> >> can
> >> potentially try if you haven't yet is to enable fast ISel and see
> >> if
> >> that brings you closer to the old runtimes.
> > And maybe the register allocator? Are you using the greedy one or
> > the linear one? Are there any other MI-level optimizations
> > running?
> >
> >   -Hal
> >
> >>
> >> On Thu, Feb 4, 2016 at 7:00 PM, Morten Brodersen via llvm-dev <
> >> llvm-dev at lists.llvm.org > wrote:
> >>
> >>
> >> Hi All,
> >>
> >> We recently upgraded a number of applications from LLVM 3.5.2 (old
> >> JIT) to LLVM 3.7.1 (MCJit).
> >>
> >> We made the minimum changes needed for the switch (no changes to
> >> the
> >> IR generated or the IR optimizations applied).
> >>
> >> The resulting code pass all tests (8000+).
> >>
> >> However the runtime performance dropped significantly: 30% to 40%
> >> for
> >> all applications.
> >>
> >> The applications I am talking about optimize airline rosters and
> >> pairings. LLVM is used for compiling high level business rules to
> >> efficient machine code.
> >>
> >> A typical optimization run takes 6 to 8 hours. So a 30% to 40%
> >> reduction in speed has real impact (=> we can't upgrade from
> >> 3.5.2).
> >>
> >> We have triple checked and reviewed the changes we made from old
> >> JIT
> >> to MCJIt. We also tried different ways to optimize the IR.
> >>
> >> However all results indicate that the performance drop happens in
> >> the
> >> (black box) IR to machine code stage.
> >>
> >> So my question is if the runtime performance reduction is
> >> known/expected for MCJit vs. old JIT? Or if we might be doing
> >> something wrong?
> >>
> >> If you need more information, in order to understand the issue,
> >> please tell us so that we can provide you with more details.
> >>
> >> Thanks
> >> Morten
> >>
> >> _______________________________________________
> >> LLVM Developers mailing list
> >> llvm-dev at lists.llvm.org
> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> >>
> >>
> >> _______________________________________________
> >> LLVM Developers mailing list
> >> llvm-dev at lists.llvm.org
> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> >>
> 
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory


More information about the llvm-dev mailing list