No to jak to jest z tą tajną bronią? Drukuj
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Patryk yarpo Jar   
sobota, 02 stycznia 2010 18:19

Można by zadać proste pytanie: jaki na prawdę pożytek przynosi dzisiaj stosowanie opcji “nieuczciwej matematyki”. W celu “obiektywnego” sprawdzenia zrobiłem mały benchmark używając prostego programu wykonującego 8 zadań numerycznych. Nie są to zadania wybitnie skomplikowane, ale są one wystarczająco zawiłe, by kompilator miał okazję pokombinować, a więc są takie “w sam raz”.

Drugim – równie ważnym – powodem do zrobienia takiego teściku jest ukazanie się nowej wersji kompilatora GCC (niecały miesiąc temu również ukazało się “rc” nowego kompilatora Sun Studio). Zatem: do dzieła ;-)

Ucziwe optymalizacje vs sztuczki

Aktualne Sun Studio, jak również GCC, nawet po zastosowaniu “sztuczek” nie powoduje wyników różnych od oczekiwanych: sztuczki, jakie by one nie były, nie wprowadzają dodatkowych błędów. To dobrze.

A jak z wydajnością? No da się odczytać z wykresu, że gcc 4.3.3, po zastosowaniu -ffast-math pozwala na wyduszenie siódmych potów ze starego Semprona. W prawie każdym teście przegania swojego młodszego brata (4.4.0), a w niektórych nawet renomowane Sun Studio używane w wielu poważnych zastosowaniach.

Zastosowanie sztuczek daje nawet do 11% wzrostu wydajności programu. To bardzo dużo :)

Użyte opcje kompilacji:

  • Dla kompilatora GCC w obu wersjach: -DUNIX -O3 -m64 -mtune=native [-ffast-math]
  • Dla kompilatora Sun Studio: -DUNIX -O5 -xvector=simd -m64 -xtarget=native -xlibmopt -xlibmil [-fsimple=2]

Nowe GCC się nie popisało, z resztą nie za bardzo miało czym: omawiany program i procesor (AMD Sempron 3000+) nie pozwoliły mu się wykazać ulepszonym wsparciem dla wielowątkowości a i technologia IRA nie zrobiła na flops.c większego wrażenia. A może po prostu gcc 4.4.0 jeszcze nie jest programem dojrzałym? Sun Studio w ogóle jakieś pokręcone sztuczki proponuje, skoro w ich efekcie program… zwalnia ;-)

Autorem artykułu jest Maciej Kamiński.