Sun Studio 12 - по-бързо и за без пари
Поредната приятна изненада от страна на Sun Microsystems. След като преди време отвориха софтуерната си кутия и пуснаха за свободно ползване без ограничения компилаторите си, първо за Solaris, след това и за Linux, с огромен интерес следя развитието им, главно като основен конкурент на Intel в качествените средстава за разработка, достъпни за бедната ни академична институция, именувана Физически Факултет на СУ. Естествено, тези на Intel печелеха като производителност – все пак и техни са железата, на които се изпълняват програмите, те си ги познават по-добре, а и за без пари – толкова от Sun. Главният недостатък (един вид) на компилаторите на Intel – безплатният им лиценз за Linux е приложим само за индивидуално ползване. Недостатък, защото не можем да си позволим да си купим пакета компилатори, дори след невероятните отстъпки за академиите.
Първата (ми) изнендата дойде с FreeBSD-MD5 модула на JtR, написан изцяло на C и не използващ аритметика с плаваща запетая (обикновено силната страна на Intel XYZ Compiler), където Intel C Compiler v10.0 се провали с гръм и трясък, изоставайки дори от GCC 4.0 на Debian, въпреки нечовешките опити за оптимизация от страна на компилатора. За съжаление резултатите от тогавашния тест, проведен на машина с два Xeon E5335 заминаха с базата данни на сайта и вече не са налични, а ме мързи да ги повтарям, но тогава Sun Studio 12 (200705) убедително поведе класацията.
Другата ми изненада дойде днес, т.е. вече вчера. Имам си аз една боза програма, разработена в Единбург през далечната 2003-та година, когато бях млад, зелен и за първи път писах някакъв научен код.
От тогава насам е претърпяла някои малки промени, главно в смяна на броя интервали в отстъпа на блоковите конструкции, но основното изчислително ядро си остава същото – няколко хиляди реда нечетлив код на FORTRAN 77, който (чудващо) се компилира с g77 (GNU), ifort (Intel) и f90 (Sun, на какъвто и беше разработен всъщност).
Програмата представлява симулатор на системи от въглеродни атоми, използващ метода на молекулната динамика за решаване на уравненията на движение на отделните атоми в системата.
Потенциалната функция е многочастична и трудна за ръчна оптимизация, но включва множество цикли, които подлежат на векторизация на съвременните микропроцесори със SSE2, SSE3 и пр. SIMD инструкции, включващи много букви “S” в началото и разни цифри в края на абревеатурата си.
Та въпросната програма често пъти я прекомпилирам с всички налични ми средства за разработка на FORTRAN и сравнявам времето, необходимо за пресмятане на 10 хиляди времеви стъпки на стандартна система – въглеродна нанотръба от 1200 атома.
Днес беше поредното сравнение, не особено учудващо (времената са при изпълнение върху Intel Xeon E5335 в 64-битов режим):
- Intel Fortran Compiler v10.0 (
-O3 -xT -ipo
) – 33,6 s - Sun Forte 200705 (
-fast -xarch=sse3 -xchip=pentium4 -xvector=simd
) – 38,7 s
Изненадата дойде, след като преодолях мързела си и деинсталирах всички пакети на Sun Studio 12, защото по една или друга причина APT на Scientific Linux смяташе 3 пакета за счупени и трябваше да ги махам преди и инсталирам обратно след всяко обновяване на системата. След като доизтрих останалите непакетни части, инсталирах от tarball обновената версия 200709. Естествено за 4 месеца едва ли нещо се е променило, но въпреки това още една прекомпилация и измерване на времето няма да навреди. И тогава…
- Sun Forte 200709 (
-fast -xarch=sse3 -xchip=pentium4 -xvector=simd
) – 28,1 s
WTF?!
Трябва да е грешка на time
.
Повторно пускане и повторение на времето.
Прекомпилация и ново повторение.
Прекомпилация с Intel-ския компилатор – отново 33,6 s.
Резултатите – съвпадат (т.е. никой не лъже с плаващата аритметика или поне и двата компилатора лъжат по един и същ начин).
Този път без фанфари, за разлика от традиционните “Sun <някакъв модел> + Solaris 10 + Sun Studio 12 счупи рекорда на <някакъв тест>” реклами, Sun са вкарали поредната оптимизация, която драматично променя съотношението на силите в бизнеса с плаваща запетая. Така че, поне според мен, повече разработчици следва да обърнат внимание на прекрасния продукт, наречен Sun Studio 12. Освен това от Sun обещават, че на Solaris програмите врървят по-добре ;)
П.П. А отвън духа ураганен вятър…