Taczka ciut opóźniona (fwd)
Tomasz Kłoczko
kloczek w rudy.mif.pg.gda.pl
Czw, 29 Kwi 1999, 17:37:05 CEST
Forward wypowiedzi Maćka Różyckiego dotyczący uwag optymalizacji. W razie
gdyby ktoś miał jakieś uwagi co do tego co Maciek napisał to jego adres
to:
Maciej W. Rozycki <macro w amg.gda.pl>
----------
> Jakiś czas temu po różnych eksperymentach zdecydowaliśmy się na używanie
> _tylko_ egcs-a. Po natepnej serii testów przeszły opcje -O2 -mpentium. tak
> czy inaczej nie jest to ważne gdyż _regółą_ jest to, że wszystkie pakiety
> są przystosowane do użyywania $RPM_OPT_FLAGS i przestawić na inne opcje to
> jest zmiana w ~/.rpmrc i przekompilowanie całości jednym poleceniem.
> jak na razie z -O2 -mpentium nie ma _najmnijszeg_ (podkreślam to mocno)
> kłopotu. Oczywiście mow o pakietach oprogramowanie. Dystrybuowany kernel
> ma być raczej kompilowany raczj z opcjami jakie są orginalnie w
> źródłach.
Chyba sie nie zrozumielismy. Jesli zrobisz taki pakiet glibc-devel z
opcjami "-O2 -mpentium", to dostaniesz hybryde. Dlaczego? Ano dlatego,
ze RPM podstawi za %{buildarch} "i386". Czyli dostaniesz pakiet z
binariami bibliotek optymalizowanymi na i586, ale skompilowanymi z
naglowkami dla i386 i w takiez naglowki wyposazony. A naglowki na
poszczegolne modele zawieraja rozne makrodefinicje z wstawkami
asemblerowymi. Np. niektore makra uzywaja rozkazow "cmovxx", jesli sa
kompilowane na i686, inne zas uzywaja roznych algorytmow dla roznych
modeli (np. makra definiowane w <string.h> dla i386 sa zupelnie inne niz
dla innych modeli).
Pakiet wynikowy oczywiscie jest poprawny z funkcjonalnego punktu
widzenia, ale jest niespojny pod wzgledem optymalizacji.
> > Takie podejscie wynika chyba z zaszlosci, tradycji, czy czego tam
> > jeszcze i niebawem zamierzam to przekonfigurowac, tzn. budowac pakiety
> > prawdopodobnie *.i486.rpm.
>
> Tak czy inaczej pakiety kompilowane z -O2 -mpentium chodzą także na
> czystym 386. Różnice prędkości są na tyle mało istotne (od 1 do 4-5 % z
> tego co mieżyliśmy) że w obecnym stanie można to pominąć IMHO.
Akurat jesli chodzi o operacje definiowane w <string.h>, to roznica w
szybkosci jest znaczna (a sa tam definowane m.in. takie operacje, jak
bzero, czy memcpy, ktore niejednokrotnie operuja na duzych blokach
danych).
-----------
Przypomnę, że używanie jakiś czas temu nie jawnie w pakietach jakie
generowałem architektóry i686 było powodem tego, że częć z tych pakietów
nie chodziła na starszych maszynkach. Przy generowaniu pakietów w
dwuch lub trzech typach powinniśmy tego uniknąc mając jednocześnie
pewność, że mamy pogenerowany optymanie kod pod posczególne typy x86.
kloczek
--
-----------------------------------------------------------
*Ludzie nie mają problemów, tylko sobie sami je stwarzają*
-----------------------------------------------------------
Tomasz Kłoczko, sys adm @zie.pg.gda.pl|*e-mail: kloczek w rudy.mif.pg.gda.pl*
Więcej informacji o liście dyskusyjnej pld-devel-pl