[llvm-dev] LLVM build performance with LLVM

David Blaikie via llvm-dev llvm-dev at lists.llvm.org
Sun Jan 5 15:33:54 PST 2020


On Sun, Jan 5, 2020 at 3:28 PM Itaru Kitayama <itaru.kitayama at gmail.com>
wrote:

> I guess I like what you described, but that's also beyond my toolchain
> build skills.
>

I'd suggest looking at how the OMP program is linked - probably some linker
verbose flags would tell you exactly which library it is that is being
linked into your binary (maybe inspecting the debug info would lead you to
this too) & take the library from a debug build and copy it over into the
release installation.


> All,
> Is it thought as acceptable for a user seeing 40 minutes of app build time
> if he is using
> a "Debug" Clang? While, with a "Release" Clang, it just finishes within a
> minute.
>

Yep, an unoptimized Clang will be really slow, that's not surprising/a bug,
as such - it's necessarily unoptimized, which is slow. It's possible that
there are opportunities for performance improvement there (without hurting
code quality, making the changes hard to easily regress, etc). You could
potentially do RelWithDebInfo - no idea if that'd make the OMP library hard
to debug or not (optimized code/debug info is not as easy to work with).


>
>
> On Mon, Jan 6, 2020 at 5:15 AM David Blaikie <dblaikie at gmail.com> wrote:
>
>> Ah, OK, sounds lik LIBOMPTARGET_ENABLE_DEBUG doesn't have anything to do
>> with your problem, then. Bit of a red herring.
>>
>> If the LLVM build doesn't support /just/ building the runtime with debug
>> info (if this is a normal/common scenario, to need to debug into the
>> runtime library, perhaps it should - but I Have no idea if that's a normal
>> use case), then you can probably mix-and-match between two builds. Build
>> the runtime with debug info and drop it into an installation of the
>> compiler built in release mode?
>>
>> On Sun, Jan 5, 2020 at 11:39 AM Itaru Kitayama <itaru.kitayama at gmail.com>
>> wrote:
>>
>>> Yes, exactly.
>>>
>>> On Sun, Jan 5, 2020 at 23:43 Mehdi AMINI <joker.eph at gmail.com> wrote:
>>>
>>>>
>>>>
>>>> On Fri, Jan 3, 2020 at 8:58 PM Itaru Kitayama via llvm-dev <
>>>> llvm-dev at lists.llvm.org> wrote:
>>>>
>>>>> I have just tried a Release build of LLVM but
>>>>> with
>>>>> LIBOMPTARGET_ENABLE_DEBUG enabled. The app build became super fast,
>>>>> but I can not obtain debugging information that I need at runtime.
>>>>>
>>>>
>>>> The description for this flag seems to be: LIBOMPTARGET_ENABLE_DEBUG
>>>> "Allow debug output with the environment variable LIBOMPTARGET_DEBUG=1"
>>>>
>>>> Is this what you are looking for? Or are you looking into getting debug
>>>> info (Dwarf) for the OpenMP runtime itself?
>>>>
>>>> --
>>>> Mehdi
>>>>
>>>>
>>>>
>>>>>
>>>>> On Sat, Jan 4, 2020 at 5:03 David Blaikie <dblaikie at gmail.com> wrote:
>>>>>
>>>>>> I'm still confused by that - whether or not the LLVM you built has
>>>>>> debug info in it shouldn't at all change what goes into the binaries that
>>>>>> LLVM produces (modulo a few bugs, but nothing that'd produce drastic
>>>>>> performance swings). You mention in the bug that it's
>>>>>> specifically LIBOMPTARGET_ENABLE_DEBUG that is slowing down your
>>>>>> compilation time? Not the use of a Debug build of LLVM? Have you tried a
>>>>>> Release build of LLVM but with LIBOMPTARGET_ENABLE_DEBUG enabled?
>>>>>>
>>>>>> On Fri, Jan 3, 2020 at 11:58 AM Itaru Kitayama <
>>>>>> itaru.kitayama at gmail.com> wrote:
>>>>>>
>>>>>>> At least, to obtain enough information from libomptarget while
>>>>>>> running my offloading app on GPU capable environment, I have to build it
>>>>>>> with an LLVM which was built in Debug mode.
>>>>>>>
>>>>>>> On Sat, Jan 4, 2020 at 4:34 David Blaikie <dblaikie at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Jan 2, 2020 at 10:55 PM Itaru Kitayama <
>>>>>>>> itaru.kitayama at gmail.com> wrote:
>>>>>>>>
>>>>>>>>> As I am facing the serious super slow down:
>>>>>>>>> https://bugs.llvm.org/show_bug.cgi?id=44407 , I'd like to
>>>>>>>>> learn more about how it can be minimized. When debugging an app,
>>>>>>>>> there are times building it with a
>>>>>>>>> Debug build LLVM can not be avoided, but a situation like 40 times
>>>>>>>>> time increase (40 minutes) is hard
>>>>>>>>> to work with.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Not sure I follow - you shouldn't need a debug build of clang to
>>>>>>>> debug an application built with clang. You'd use a release build of clang
>>>>>>>> to build your application with debug info (by passing -g).
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Fri, Jan 3, 2020 at 11:14 AM David Blaikie <dblaikie at gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Thu, Jan 2, 2020 at 6:09 PM Itaru Kitayama <
>>>>>>>>>> itaru.kitayama at gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> David,
>>>>>>>>>>> Yes, I was indeed trying to build LLVM with a Debug build. I'll
>>>>>>>>>>> stop doing that from now on.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> I mean, you can - it's just going to be super slow & mostly not
>>>>>>>>>> what you want, unless you're trying to debug that building process. Usually
>>>>>>>>>> you'd want to isolate one particular test case, maybe even reduce it,
>>>>>>>>>> before running it with a debug build of LLVM which will be quite slow
>>>>>>>>>> (because it's not optimized at all).
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> I am on JSC's JURON machine which has 251 GB of memory on the
>>>>>>>>>>> login node, that's more than sufficient
>>>>>>>>>>> to do a build, I suppose, and the linker is LLD as LLVM has a
>>>>>>>>>>> CMake variable to select the linker.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Yep, sounds like you're just tripping over the fact that an
>>>>>>>>>> unoptimized/debug build of LLVM is very slow. *thumbs up*
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Jan 3, 2020 at 11:02 AM David Blaikie <
>>>>>>>>>>> dblaikie at gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Were you trying to use a Debug build to build LLVM? Yes, that
>>>>>>>>>>>> would be very slow.
>>>>>>>>>>>>
>>>>>>>>>>>> If you mean you were using a release build of LLVM to build a
>>>>>>>>>>>> Debug build of LLVM - yeah, that's generally going to be recommended. Did
>>>>>>>>>>>> this get slower/change significantly in performance? Many people have
>>>>>>>>>>>> trouble with building Debug builds (no matter the host compiler) especially
>>>>>>>>>>>> if they're using bfd-ld, since it's quite slow/uses a lot of memory. There
>>>>>>>>>>>> are a few other issues to do with memory usage (do you have less than about
>>>>>>>>>>>> a GB of RAM per CPU? Then you'll probably hit swapping by default & have a
>>>>>>>>>>>> bad time - there are ways around that)
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Thu, Jan 2, 2020 at 5:42 PM Itaru Kitayama via llvm-dev <
>>>>>>>>>>>> llvm-dev at lists.llvm.org> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>> When building LLVM, is it always recommended to do it with the
>>>>>>>>>>>>> latest official release, currently, it is 9.0.1? I ask because
>>>>>>>>>>>>> when I tried
>>>>>>>>>>>>> it with a Debug build, it took an enormous amount of time on
>>>>>>>>>>>>> POWER8.
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> LLVM Developers mailing list
>>>>>>>>>>>>> llvm-dev at lists.llvm.org
>>>>>>>>>>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>> LLVM Developers mailing list
>>>>> llvm-dev at lists.llvm.org
>>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>>>
>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200105/13a5744a/attachment.html>


More information about the llvm-dev mailing list