Re: Clang optimiser vs preproc.c

Поиск
Список
Период
Сортировка
От Alexander Lakhin
Тема Re: Clang optimiser vs preproc.c
Дата
Msg-id d2bf3727-bae4-3aee-65f6-caec2c4ebaa8@gmail.com
обсуждение исходный текст
Ответ на Re: Clang optimiser vs preproc.c  (Thomas Munro <thomas.munro@gmail.com>)
Список pgsql-hackers
Hello Thomas,

19.12.2023 07:20, Thomas Munro wrote:
> On Tue, Dec 19, 2023 at 11:42 AM Thomas Munro <thomas.munro@gmail.com> wrote:
>> Hrmph.  Well something weird is going on, but it might indeed involve
>> me being confused about debug options of the compiler itself.  How can
>> one find out which build options were used for clang/llvm compiler +
>> libraries?  My earlier reports were from a little machine at home, so
>> let's try again on an i9-9900 CPU @ 3.10GHz (a bit snappier) running
>> Debian 12, again using packages from apt.llvm.org:
>>
>> 17 ~198s
>> 16 ~14s
>> 15 ~11s
> And on another Debian machine (this time a VM) also using apt.llvm.org
> packages, the huge ~3 minute time occurs with clang-16... hrrrnnnff...
> seems like there must be some other variable here that I haven't
> spotted yet...

Reproduced here, with clang-16 and clang-17 (on Ubuntu 22.04, on Fedora 39).
Namely, I tried on Ubuntu
clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04 and
clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04
from https://github.com/llvm/llvm-project/releases, as follows:
PATH=".../clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04/bin:$PATH" CC=clang-17 CPPFLAGS="-O2" sh -c "./configure -q 
--enable-debug --enable-cassert && time make >make.log"
and then
PATH=".../clang+llvm-17.0.6-x86_64-linux-gnu-ubuntu-22.04/bin:$PATH" sh -c "cd src/interfaces/ecpg/preproc; time 
clang-17 -v -g -I../include -I../../../../src/interfaces/ecpg/include -I. -I../../../../src/interfaces/ecpg/ecpglib 
-I../../../../src/interfaces/libpq -I../../../../src/include -O2 -D_GNU_SOURCE -c -o preproc.o preproc.c"
144.59user 0.25system 2:24.94elapsed 99%CPU (0avgtext+0avgdata 217320maxresident)k

The same is observed with clang-16 (16.0.6 20231112100510+7cbf1a259152...)
installed from http://apt.llvm.org/jammy/.
(Adding parameters -fno-slp-vectorize or -mllvm -slp-threshold=100000 or
-mllvm -slp-max-vf=3 decreases/normalizes compilation time.)

On a fresh vagrant image "fedora/39-cloud-base", I tried versions
16.0.0~rc4, 17.0.0~rc3, 17.0.6 downloaded from
https://koji.fedoraproject.org/koji/packageinfo?packageID=21848
https://koji.fedoraproject.org/koji/packageinfo?packageID=5646
All of them also give 2+ minutes for me.
But I see no slowdown with version 15.0.7 on the same VM.

Also, I see no issue with clang-18, installed on Ubuntu from apt.llvm.org.
So, as far as I can see, this anomaly started from clang-16, and ended with
clang-18.
Comparing histories of SLPVectorizer.cpp:
https://github.com/llvm/llvm-project/commits/main/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
https://github.com/llvm/llvm-project/commits/release/17.x/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
I see a commit that probably could fix the issue in the master branch (for
clang-18):
[SLP][NFC]Improve compile time by storing all nodes for the given ...

Though I still can't explain how you get ~14s with clang-16. Could you show
the exact sequence of commands you use to measure the duration?

Best regards,
Alexander



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Andres Freund
Дата:
Сообщение: ci: Build standalone INSTALL file
Следующее
От: Shlok Kyal
Дата:
Сообщение: Re: speed up a logical replica setup