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