[llvm-dev] (Thin)LTO llvm build
Mehdi Amini via llvm-dev
llvm-dev at lists.llvm.org
Fri Sep 16 18:22:59 PDT 2016
> On Sep 16, 2016, at 6:17 PM, Mehdi Amini <mehdi.amini at apple.com> wrote:
>
>
>> On Sep 16, 2016, at 6:13 PM, Carsten Mattner <carstenmattner at gmail.com> wrote:
>>
>> On Sat, Sep 17, 2016 at 2:07 AM, Teresa Johnson via llvm-dev
>> <llvm-dev at lists.llvm.org> wrote:
>>
>>> Yes and to add on - the ThinLTO backend by default will
>>> kick off std::thread::hardware_concurrency # of threads, which I'm finding is
>>
>> Is it just me or does that sound not very intuitive or at least a
>> little unexpected?
I should add: this is an issue for LLVM because we link *a lot* of various binaries.
However, I don’t believe it is the case of most projects, which is why we have this default (which matches ninja’s default).
—
Mehdi
>> It's good that it uses the resources eagerly, but in terms of build systems this
>> is certainly surprising if there's no control of that parameter via
>> make/ninja/xcode.
>
> You can control the parallelism used by the linker, but the option is linker dependent
> (On MacOS: -Wl,-mllvm,-threads=1)
>
>>
>>> too much for machines with hyperthreading. If that ends up being an issue I can
>>> give you a workaround (I've been struggling to find a way that works on various
>>> OS and arches to compute the max number of physical cores to fix this in the source).
>>
>> I've been using ninja -jN so far. I suppose when building with ThinLTO I should
>> run ninja -j1. Would that
>>
>> What's the workaround?
>
> Seems like you missed my previous email: : cmake -DLLVM_PARALLEL_LINK_JOBS=1
> Also, ninja is parallel by default, so no need to pass -j.
>
> This way you get nice parallelism during the compile phase, and ninja will issue only one link job at a time.
More information about the llvm-dev
mailing list