@Kryspin013: nie, nie zmniejsza bezpieczeństwa systemu, może nawet minimalnie zwiększyć (tak skompilowane programy dalece trudniej się debuguje, trudniejsze są też niektóre typy ataków — przy czym różnica nie musi zajść, a jeśli już zajdzie, to będzie pomijalna). Może mieć to sens, ale nie musi, gdyż wcale nie jest pewne, że te optymalizacje faktycznie coś przyspieszą (np. -funroll-loops omija instrukcje skoku, ale tworzy dalece dłuższy kod, który może np. przestać mieścić
@Althorion: ma to jakiś sens z punktu widzenia bezpieczeństwa? wiem, że w grach to ma znaczenie, im wyższa flaga tym bardziej monotonne/rozmyte kolory.
@Althorion: Dzięki za odpowiedź. Buduję system z apt-build world bo zależy mi chociaż minimalnie na zwiększeniu wydajności na netbooku z atomem. Na razie buduje na -03 -march=native. Zobaczymy co z tego wyjdzie, najwyżej przebuduję z -o2.
@Kryspin013: -O3 to jeszcze bezpieczna flaga (tzn. jedyna sytuacja, w której program z nią skompilowany może zacząć działać niepoprawnie, zachodzi wtedy, gdy jest napisany niezgodnie ze standardem — w szczególności gdy polega na konkretnym rozwiązaniu UB). Włącza ona natomiast optymalizacje przyspieszające wykonanie kosztem większej ilości generowanego kodu, co może paradoksalnie spowolnić działanie programu, bo wymaga większej liczby operacji na pamięci. Dlatego nie sposób z góry orzec, czy faktycznie da to
@Althorion: Wiem, chciałem zbudować przez aptu-build repo na innym pc, które bym sobie wrzucił na netbooka po prostu ale apt-build ma tylko opcję budowy z instalacją i nie wiem jak to pominąć. Swoją drogą to narzędzie nie wydaje się też jakoś działać szczególnie dobrze.
@Kryspin013: oczywiście, to był jeden z głównych powodów powstania tych flag. Kolory/barwy i ruchy są reprezentowane w float/double. Podniesienie flagi optymalizacji ucina mantysę liczb zmiennoprzecinkowych przez to ruchy stają się bardziej liniowe, barwy się monotonizują.
@Kryspin013: tak, szukam właśnie, czytałem o tym pare lat temu jak ktoś pokazywał że zmiana optymalizacji flagi z O1 na O3 zmieniła kolory w grze na tyle że różnica była widoczna okiem.
Kolory/barwy i ruchy są reprezentowane w float/double. Podniesienie flagi optymalizacji ucina mantysę liczb zmiennoprzecinkowych przez to ruchy stają się bardziej liniowe, barwy się monotonizują.
@interface: nawet nie wiem, gdzie zacząć… 1. Kolory bardzo rzadko są trzymane w liczbach zmiennoprzecinkowych, niemal zawsze to trójka charów/intów prezentująca rozkład RGB. 2. Podniesienie flagi optymalizacji nie wpływa na realizację operacji zmiennoprzecinkowych aż do -Ofast, które włącza -ffast-math. 3. Nawet -ffast-math nie wpływa na typ zmiennych zmiennoprzecinkowych, więc w
@interface: Kolejna sprawa, to rozmawiamy o optymalizacji systemu nie gier. Nie będę kompilować gier. Chyba że miałeś na myśli biblioteki graficzne i te typowo do gier.
@interface: nie no, jak się dziwnie programuje i wykorzystuje undefined behaviour, to różne rzeczy mogą się dziać. Z tym, że każdy poprawnie napisany (tzn. zgodnie ze standardem) kod musi mieć takie same efekty kompilowany na -O1 jak i na -O3 (i na -O0, i na -O2, i na…). Więc jeśli tak było, to wina konkretnego kodu, a nie ogólna zasada działania kompilatora.
At this point, the two numbers are equivalent when converted to the "float" type. But that equivalence is not maintained when backlerp is used in a calculation. The small difference is propagated, and becomes significant enough to produce a different result:
@Althorion: @Kryspin013: kurde to nie ten artykuł... tamten o którym mówię miał z 10lat co najmniej, opisywał w sumie to samo. Pokazywał screenshota z lotu pocisku że na O3 ślad pocisku był bardziej prosty, a na 01 był wznoszący i opadający ślad (
1. Kolory bardzo rzadko są trzymane w liczbach zmiennoprzecinkowych, niemal zawsze to trójka charów/intów prezentująca rozkład RGB.
@Althorion: to prawda, ale potem te kolory trzeba jakoś przetwarzać w grach - OGL przyjmuje do shaderów w sensie dalszych przekształceń m.in.floaty, pochodzenie szybkiej odwrotności pierwiastka też sugeruje, że zmienny przecinek w grach jest często wykorzystywany.
Fakt faktem że to pewnie była kwestia jakości kodu w aplikacji o której @interface wspomina w
#linux #debian
-funroll-loops
omija instrukcje skoku, ale tworzy dalece dłuższy kod, który może np. przestać mieścićRaczej nie. Umiem sobie wyobrazić jakiś skrajny przypadek, żeby miało, ale wątpię w to, by zachodził kiedykolwiek w praktyce.
Eeeee, co? Nie… To nie ma z drugim nic wspólnego…
@interface:
Że co? xD
-O3
to jeszcze bezpieczna flaga (tzn. jedyna sytuacja, w której program z nią skompilowany może zacząć działać niepoprawnie, zachodzi wtedy, gdy jest napisany niezgodnie ze standardem — w szczególności gdy polega na konkretnym rozwiązaniu UB). Włącza ona natomiast optymalizacje przyspieszające wykonanie kosztem większej ilości generowanego kodu, co może paradoksalnie spowolnić działanie programu, bo wymaga większej liczby operacji na pamięci. Dlatego nie sposób z góry orzec, czy faktycznie da to@Kryspin013: oczywiście, to był jeden z głównych powodów powstania tych flag. Kolory/barwy i ruchy są reprezentowane w float/double. Podniesienie flagi optymalizacji ucina mantysę liczb zmiennoprzecinkowych przez to ruchy stają się bardziej liniowe, barwy się monotonizują.
@interface: nawet nie wiem, gdzie zacząć…
1. Kolory bardzo rzadko są trzymane w liczbach zmiennoprzecinkowych, niemal zawsze to trójka charów/intów prezentująca rozkład RGB.
2. Podniesienie flagi optymalizacji nie wpływa na realizację operacji zmiennoprzecinkowych aż do
-Ofast
, które włącza-ffast-math
.3. Nawet
-ffast-math
nie wpływa na typ zmiennych zmiennoprzecinkowych, więc w-O1
jak i na-O3
(i na-O0
, i na-O2
, i na…). Więc jeśli tak było, to wina konkretnego kodu, a nie ogólna zasada działania kompilatora.At this point, the two numbers are equivalent when converted to the "float" type. But that equivalence is not maintained when backlerp is used in a calculation. The small difference is propagated, and becomes significant enough to produce a different result:
optimised cl.vieworg[0] = -18.1849995
@Althorion: to prawda, ale potem te kolory trzeba jakoś przetwarzać w grach - OGL przyjmuje do shaderów w sensie dalszych przekształceń m.in.floaty, pochodzenie szybkiej odwrotności pierwiastka też sugeruje, że zmienny przecinek w grach jest często wykorzystywany.
Fakt faktem że to pewnie była kwestia jakości kodu w aplikacji o której @interface wspomina w