LINUX.ORG.RU

Сравнение компиляторов GCC3, GCC4 и Sun Studio

 , , sunstudio


0

0

По просьбе корпорации Sun, аналитики Phoronix.com провели сравнение эффективности работы компиляторов GCC 3.4.3, GCC 4.0.2, и Sun Studio 12. В тестах обе версии gcc вели себя схоже. Результаты измерений Sun Studio и скомпилированного ею кода по отношению к GCC:

  • PHP собирается из исходников быстрее в 1,7 раза.
  • LAME MP3 конвертирует wav -> mp3 в три раза дольше, а oggenc жмёт медленнее только на четверть.
  • Все сборки GnuPG шифруют на примерно одинаковой скорости. С SQLite ситуация аналогичная.
  • GraphicsMagick, собранный Sun Studio, работает в 2-4 раза быстрее, чем сборки от GCC.

Sun Studio - это набор компиляторов от Sun под ОС Linux и OpenSolaris для языков C, C++ и Fortran. Компиляторы владеют различными оптимизациями, в т.ч. OpenMP. Сравнение проходило на четырехядерном x86_64-процессоре под ОС OpenSolaris.

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Ответ на: комментарий от Gorthauer

>А как врубается и зачем, если не секрет (гуглить лень)? :)
CFLAGS = "-O2 -march=native -mtune=native -pipe -fomit-frame-pointer -ftree-vectorize"
Дает вот такую милую штуку
http://gcc.gnu.org/projects/tree-ssa/vectorization.html#vectorizab
Полезно при работе с массивами

Gorthauer ★★★★★
()
Ответ на: комментарий от Gorthauer

>фейл только с сборкой OOO если форсировать
ээээ вродь 3ий собрался у меня с таким набором флагов. Хотя я не смотрел, можт портаж сам убирает флаги с которыми проги всёравно не соберутся

Gorthauer ★★★★★
()
Ответ на: комментарий от Sylvia

>-mfpmath=sse
еще хорошо бы, хотя возможно оно включится по -march=native

Я помню была команда, которая выводит список флагов, которые у тя gcc при native включает

Gorthauer ★★★★★
()
Ответ на: комментарий от Gorthauer

dmake убирает флаги , там часть сборки собирается со своими, вот если и там форсировать - тогда будут глюки, у меня на .ppt файлах падает

Sylvia ★★★★★
()

>GCC 3.4.3, GCC 4.0.2

eix -e gcc
[I] sys-devel/gcc
     Available versions:  
	(2.95)	2.95.3-r9 (~)2.95.3-r10!s
	(3.1)	3.1.1-r2
	(3.2)	**3.2.2!s 3.2.3-r4
	(3.3)	(~)3.3.6-r1!s
	(3.4)	3.4.6-r2!s
	(4.0)	~*4.0.4!s
	(4.1)	4.1.2!s
	(4.2)	(~)4.2.4-r1!s
	(4.3)	**4.3.0!s (~)4.3.1!s (~)4.3.1-r1!s (~)4.3.2!s (~)4.3.2-r2!s (~)4.3.2-r3!s (~)4.3.3!s

...

4.0.2 - это, что-то типа 2005-го года? :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

да, вероятно 2005

~ :$cc3 --version
cc3 (GCC) 3.4.6
Copyright (C) 2006 Free Software Foundation, Inc.


~ :$cc41 --version
cc41 (GCC) 4.1.2
Copyright (C) 2006 Free Software Foundation, Inc.

Sylvia ★★★★★
()
Ответ на: комментарий от Gorthauer

> Я помню была команда, которая выводит список флагов, которые у тя gcc при native включает

gcc -march=native -Q --help=target
gcc -march=native -Q --help=optimizers

Deleted
()
Ответ на: комментарий от Sylvia

> ICC прекрасно знает о других процессорах, хотя расширений у AMD заметно меньше и соответственно возможности оптимизации под них тоже меньше

О каких процессорах ICC знает? О вариациях x86? Где z/Arch, ia64, Power, ARM? :)

У AMD с расширениям (кстати, что под этим подразумевается?) всё в порядке.

mv ★★★★★
()
Ответ на: комментарий от Deleted

> А как же SPARC, PPC, ARM, MIPS и кучка ещё менее популярных?

Во-во.

mv ★★★★★
()
Ответ на: комментарий от Deleted

фи.. нет, так не интересно, лучше уж задавать вручную -march
и -msse*

-march= i686
-mfpmath=
-msse [disabled]
-msse2 [disabled]
-msse3 [disabled]
-msse4 [disabled]
-msse4.1 [disabled]

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Сейчас райчас разумно сравнивать либо с генту, либо х64. В х64 по умолчанию современный набор инструкций и sse вместо убогого x87fpu, а обычные 32-битные бинарные сборки под 386 уг

madcore ★★★★★
()
Ответ на: комментарий от Gorthauer

>CFLAGS = "-O2 -march=native -mtune=native -pipe -fomit-frame-pointer -ftree-vectorize"

Скоко можно говорить:

-march=cpu-type Generate instructions for the machine type cpu-type. The choices for cpu-type are the same as for -mtune. Moreover, specifying -march=cpu-type implies -mtune=cpu-type.

Повторяю еще раз -march=cpu-type implies -mtune=cpu-type.

Sancho_s_rancho
()
Ответ на: комментарий от madcore

> и sse вместо убогого x87fpu

В убогом fpu есть 80-битные long float'ы, а в sse нет. И комбинировать пару регистров для обработки 128-битных float'ов, как у s390 или ia64, sse не умеет.

mv ★★★★★
()
Ответ на: комментарий от Sylvia

Хм. А я вот юмора с SSE3 не понимаю...

$ gcc -march=native -Q --help=target | grep k8
  -march=                               k8-sse3
  -mtune=                               k8

$ cat /proc/cpuinfo | grep sse3
$

То ли лыжи не едут, то ли в ядре sse3 не детектится...

shahid ★★★★★
() автор топика
Ответ на: комментарий от mv

>В убогом fpu есть 80-битные long float'ы, а в sse нет.

fpu в x64 просто нет, 80 бит нет, одни ссе, 128-бит, процессоры, убиццо просто.

>И комбинировать пару регистров для обработки 128-битных float'ов, как у s390 или ia64, sse не умеет.


Смишно, да?.

madcore ★★★★★
()
Ответ на: комментарий от Sylvia

> в sse2 добавили float'ы в математику, на чистом -msse да, их нет

Нет, речь про разрядность этих флоатов. sse поддерживает 32 и 64 битные флоаты, чего для серьёзных расчётов не хватает. Вот 128 - другое дело.

mv ★★★★★
()
Ответ на: комментарий от Sylvia

Он им еет ввиду точную арифметику, экспорт из сша запрещен

madcore ★★★★★
()
Ответ на: комментарий от Sancho_s_rancho

> Повторяю еще раз -march=cpu-type implies -mtune=cpu-type.

Но gcc так не считает... Выше я дал пример с -march=native.

shahid ★★★★★
() автор топика
Ответ на: комментарий от shahid

а на k8 есть sse3 ? :)

K6 3DNow, MMX, FPU, SMM, Prot, Priv All instructions available on the AMD K6 processor, including 3DNow! instructions.

Athlon, K7 SSE, 3DNow, MMX, FPU, SMM, Prot, Priv All instructions available on the AMD Athlon processor, including SSE instructions.

Hammer, Clawhammer, Opteron, Athlon64, Athlon-64 SSE2, SSE, 3DNow, MMX, FPU, SMM, Prot, Priv All instructions available on the AMD Athlon64 and Opteron processors, including SSE2 and 64-bit instructions.

K10 SSE4a, SSE3, SSE2, SSE, 3DNow, MMX, FPU, SMM, Prot, Priv All instructions available on the AMD codename K10 processor, including SSE4a instructions.

http://www.linux.org.ru/jump-message.jsp?msgid=3508439&cid=3508473

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

>ICC прекрасно знает о других процессорах, хотя расширений у AMD заметно меньше

Эти расширения, которых "заметно меньше" - в студию!:)

Led ★★★☆☆
()
Ответ на: комментарий от GAMer

В очередной раз услышал упоминание llvm и заинтересовался.

Судя по отзывам llvm позволяет ускорить скорость выполнения программ на 30% и его активно использует apple в своей операционке.

Если это так, то вроде получается почти как революция. Такого ускорения у компиляторов не было довольно давно.

sign
()
Ответ на: комментарий от Led

ссылка в после выше, возможности процессоров, сравните, линейки процессоров АМД и Интел, АМД на шаг позади и велосипеды какие-то изобретают 3dnow, sse4a

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

icc уже перестало сегфолтиться на ровном месте?
А то могу дать сцылку на собирание ведра icc польскими студентами...

madcore ★★★★★
()
Ответ на: комментарий от mv

AMD introduced a subset of SSE3 in revision E (Venice and San Diego)

k8-sse3 = Venice ?

Sylvia ★★★★★
()
Ответ на: комментарий от mv

>И комбинировать пару регистров для обработки 128-битных float'ов, как у s390 или ia64, sse не умеет.

Barcelona/Phenom умеет нативные 128-битные float

Led ★★★☆☆
()
Ответ на: комментарий от Sylvia

> а на k8 есть sse3 ? :)

man gcc намекает, что k8 бывает разный:

k8, opteron, athlon64, athlon-fx
    AMD K8 core based CPUs with x86-64 instruction set support.  
    (This supersets MMX, SSE, SSE2, 3dNOW!, enhanced 3dNOW! and 64-bit 
    instruction set extensions.)

k8-sse3, opteron-sse3, athlon64-sse3
    Improved versions of k8, opteron and athlon64 with SSE3 instruction
    set support.

Я потому и в ступоре немножко...

shahid ★★★★★
() автор топика
Ответ на: комментарий от madcore

отдельные вещи ICC собирает вполне прилично, а вот отдельные..... нет

так что ведро пусть собирают польские студенты, а я подожду пока ICC хотя бы соберет прилично... ну например Фаерфокс

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

>а на k8 есть sse3 ? :)

Есть. Но только в тех, которые X2

Led ★★★☆☆
()
Ответ на: комментарий от Sylvia

>АМД на шаг позади и велосипеды какие-то изобретают 3dnow, sse4a

Сударыня, вы ошибаетесь:) То, что AMD сделал в 3DNow!, Intel смог реализовать значительно позже - в SSE. x86_64 AMD тоже, вообщето, раньше реализовал:)

Что касается современных CPU, то против Intel'овских SSE4.1/SSE4.2 у AMD есть SSE4a и аппаратные 128-битные float-регистры.

Led ★★★☆☆
()
Ответ на: комментарий от Sylvia

>отдельные вещи ICC собирает вполне прилично, а вот отдельные..... нет

У меня нормально собираются erlang, x264 и ещё кое-чего. glibc ним не соберёшь, ядро - тоже (по крайней мере, без "напильника" и со всеми модулями).

Led ★★★☆☆
()
Ответ на: комментарий от Led

не буду спорить с тем что я не до конца понимаю, но вот что интересно - что оптимизация под расширения от Интел встречается гораздо чаще чем под AMD , ну разве что 3dNow! часто делают

смущает то что расширения разные, это ж и программистам и конечному пользователю не выгодно в итоге

Sylvia ★★★★★
()
Ответ на: комментарий от Led

p7zip, zlib, gzip, bz2 (bzip2 , libbz2) , libjpeg , libpng, Qt (хотя кде4.2 не понравилось что там нет -fexceptions) , xorg-server, libgmp ( которая кстати используется и в GCC),
glib2

ну и по мелочи разное

Sylvia ★★★★★
()
Ответ на: комментарий от mv

>Здорово! А speed cost какой по сравнению с обычным double?

Нет смысла сравнивать с обычным double. Сравнивать нужно long double c аппаратной поддержкой и софтовой эмуляцией (посредством двух 64-битных float).

Led ★★★☆☆
()
Ответ на: комментарий от Led

> против Intel'овских SSE4.1/SSE4.2 у AMD есть SSE4a

Intel SSE4 consists of 54 instructions. ... AMD currently only supports 4 instructions from the SSE4 instruction set, but have also added two new SSE instructions that it named SSE4a. =)

mv ★★★★★
()
Ответ на: комментарий от Led

> Сравнивать нужно long double c аппаратной поддержкой и софтовой эмуляцией (посредством двух 64-битных float).

Два 64-битных флоата не дадут один 128-битный. Читать про IEEE754.

mv ★★★★★
()
Ответ на: комментарий от Bohtvaroh

на архиваторах +20%

на xorg-server немножко снижает постоянную нагрузку на процессор
Qt вроде тоже шустрее, но только субьективно, померить нечем насколько оно быстрее

Sylvia ★★★★★
()
Ответ на: комментарий от mv

>Два 64-битных флоата не дадут один 128-битный. Читать про IEEE754.

Конечо, не дадут. Поэтому и говорилось про "софтовую эмуляцию".

Led ★★★☆☆
()
Ответ на: комментарий от Led

> Конечо, не дадут. Поэтому и говорилось про "софтовую эмуляцию".

Тогда я не понял, про что тут сказано: "и софтовой эмуляцией (посредством двух 64-битных float)."

mv ★★★★★
()
Ответ на: комментарий от Sylvia

>на xorg-server немножко снижает постоянную нагрузку на процессор

Сравнивались сборки с gcc и icc с "максимально накрученной" оптимизацией под процессор, или под generic i686/x86_64?

Led ★★★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.