[llvm-dev] MCJit Runtine Performance

Rafael EspĂ­ndola via llvm-dev llvm-dev at lists.llvm.org
Thu Feb 4 19:28:22 PST 2016


Can you build the code with llc? Try with the large code model. I
think that is the default for MCJIT and can be less efficient.

Cheers,
Rafael


On 4 February 2016 at 22:26, Morten Brodersen via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> 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?
>
>
> 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


More information about the llvm-dev mailing list