LINUX.ORG.RU
Ответ на: комментарий от anonymous
Англоговорящему анонимусу: Я и говорю, что политика Intel по отношению к компиляторам более чем странная. Зачем выводить ICC на линукс, когда там уже есть kai, который стоит столько же, гораздо качественнее, и при этом принадлежит _им_же. Я не вижу в этом никакой логики кроме подковерных разборок в интеле. Может, они хотят затащить на линукс свой кодогенератор, который в отличие от kai умеет mmx/sse, может, хотят в будущем скрестить "оптимизатор" kai и свой кодогенератор, может, две разные команды соревнуются... Резюме -- "внешней" логике вывод этого компилятора не поддается -- смысла в нем очевидно нет.
AC ★
()
Ответ на: комментарий от mjt
Компилятор, юзающий SIMD-ы, на задачах, этого требующих, может и вовсе в разы/на порядки уделать компилятор, про SIMD-ы не знающий.
Antichrist ☆
()
Ответ на: комментарий от Antichrist
Кстати, Antichrist, расскажи, как это компилятор _C++_ может заюзать SIMD? Правда, интересно. Как он срюхнет, когда нужны соответствующие инструкции? Автоматом проанализирует циклы по массиву и разложит его по регистрам? Он же не знает ничего ни про векторы, ни про матрицы? Или SIMD будет использоваться в его реализации stl?
AC ★
()
Ответ на: комментарий от AC
Судя по всему - какой-то вумный анализ. Раскладывает dataflow в пределах функции, сортирует по независимым блокам, ищет похожие операции над разными данными - и сливает в одну SIMD. Я бы так сделал...
Antichrist ☆
()
Ответ на: комментарий от AC
Thanx. Заврался я. Не нашёл демку для спарка - и обиделся зело :(
Antichrist ☆
()
2ZhekaSmith: Ты туп, уж извини, но это факт.
"не умеющий читать по английски"
Почему-то для слащдота это нормально http://slashdot.org/developers/02/01/26/1328215.shtml
А для тебя нет. И я даже знаю почему :) Потому что ты относишся к этому как к своей личной обиде, что доказывает твой уровень развития.
"не умеющий ... писать по русски"
Уж кто-бы говорил... По-русски, по-английски пишется именно так, марш в школу, в пятый класс, до учиватся.
"Кстати, в VC есть куски кода интеловского компилятора"
И? А gcc инженеры от интеля тоже затачивали, чтоб он уж совсем отстойным не был...
Ogr ★
() автор топика
Ответ на: комментарий от Antichrist

KAI только под x86???

Ой, со зла це, ой со зла... Собственно, под x86-то как раз и промашка у них есть -- нет win32 версии. Потому и связались с Интелом.

Вчепятление: KAI правильнее во всех отношениях, но Intel -- очень-очень хорош. Хотя иногда-таки дерьмо лепит (типа Internal Compiler Error), но довольно редко и есть надежда на улучшение.

ingvarr ★
()
А где чайнику найти хорошие доки (желательно хотя бы часть на русском) про компиляцию программ под Линукс. Для меня опции gcc - это темный лес. О2 или О10 не о чем не говорят.
anonymous
()

а вот на Мипсы все болт положили :(, гады...

Вот и я говорю, нет кэя под МИПС-ы 32-р... ИСА-2... :( сиротааааа яяя... так и придётся гнуться (и они тоже положили :)), да на ассемблёре ручками разгребать... (мать... мать... мать... привычно отозвалось эхо:))
asoneofus ★
()
btw, кто там длинные строчки параметров gcc приводил, -mprentium != -march=pentium, второй вариант правильнее
anonymous
()
To Antichrist (*) (2002-01-28 23:49:16.0):

Н-да, впечатляет.

alexros ★
()

Быстрые опции GCC

2Старый пионэр: >> та же хрень. Вот так строка для gcc выглядит в последней инкарнации: >> -O20 -mpentiumpro -funroll-loops -fomit-frame-pointer -ffast-math -malign-jumps=2 -malign-loops=2

Неправильно это, тут уже написали, к тому же другие -malign могут все тормознуть (сам не раз убеждался в этом), и так, попробуй (если не влом) следующую строку и только ее: -O20 -march=pentiumpro -fomit-frame-pointer -ffast-math

>> По размеру делает icc в те же 3 раза, по скорости - примерно на ~15% (мне лично скорость более интересна, бо задача практически переборная).

По поводу размера: ты strip сделал??? strip <имя бинарника>

saper ★★★★★
()
Ogr "не умеющий ... писать по русски" Уж кто-бы говорил... По-русски, по-английски пишется именно так, марш в школу, в пятый класс,

***до учиватся.***

;)

anonymous
()

А для K7 какой он код делает?.

Господа! Какое качество кода у интеловского компилятора при оптимизации под K7 (Athlon)?
Если никакое - то нам такого "добра" задаром не нужно.
AffreuxChien ★
()
To Antichrist (*) (2002-01-28 23:49:16.0) >

Сравнения несколько, по-моему, некорректны.
У тебя для компиляции используется gcc-2.96, а вот для альфы ты юзал 2.95 ...
Однако известно, что 2.96 - сакс, который оптимизацию производит только по известным только инженерам RedHat правилам. К примеру такая библиотека как ATLAS (Automatically Tuned Linear Algebra Software)(релизация BLAS) с 2.96-м на Intel'е даёт ужасные результаты (правда на Alpha - все ок).

P.S. Несколько offtopic: Сейчас как раз занимаюсь сравнением Portland Group и GNU компайлеров. Сравниваю на LINPACK'е (точнее ScaLAPACK'е) и мерю мелкий кластер из 2-х проц. P3-1000. Так вот, gcc+g77+g++ почти всегда либо делает ЛУЧШЕ, либо так же, как и Portland Group. Вот вам и коммерческий компилятор...
Kirill ★
()
Специально для людей верующих в крутизну GCC. Только сейчас снял цифирки... платформа - Sun UltraSparcIIi 360Mhz, Solaris 8 Прога - стандартный тест FLOPS gcc - GNU CC cc - CC из Sun WorkShop gcc -DUNIX flops.c -O3 -o flops.gcc cc -DUNIX flops.c -xO5 -o flops.cc ./flops.gcc

FLOPS C Program (Double Precision), V2.0 18 Dec 1992

Module Error RunTime MFLOPS (usec) 1 2.8422e-14 0.1541 90.8722 2 2.5047e-13 0.0605 115.6129 3 -7.6605e-15 0.1450 117.2414 4 2.2771e-13 0.1661 90.3104 5 3.8858e-14 0.2418 119.9354 6 7.5495e-15 0.1845 157.2215 7 -1.1369e-13 0.2871 41.7959 8 1.2612e-13 0.2088 143.7126

Iterations = 128000000 NullTime (usec) = 0.0030 MFLOPS(1) = 116.1403 MFLOPS(2) = 74.5155 MFLOPS(3) = 105.2430 MFLOPS(4) = 129.2069 /flops.cc

FLOPS C Program (Double Precision), V2.0 18 Dec 1992

Module Error RunTime MFLOPS (usec) 1 -7.6739e-13 0.0664 210.6996 2 -5.7021e-13 0.0515 135.9636 3 -2.4314e-14 0.0492 345.6712 4 6.8501e-14 0.0464 323.2323 5 -1.6320e-14 0.1466 197.7624 6 1.3961e-13 0.1104 262.7965 7 -3.6152e-11 0.1994 60.1881 8 9.0483e-15 0.1255 239.1034

Iterations = 256000000 NullTime (usec) = 0.0000 MFLOPS(1) = 169.6012 MFLOPS(2) = 124.9462 MFLOPS(3) = 196.2716 MFLOPS(4) = 274.5875 Смотрим преимущество в процентах над GCC MFLOPS(1)= 46% MFLOPS(2)= 68% MFLOPS(3)= 87% MFLOPS(4)= 113% То есть минимальное преимущество - 46%, максимальное - 113%.

anonymous
()
BTW: Так он (Intel) как выяснилось еще и OpenMP умеет *8) !!!!

Кто нибудь сравнивал его в оном на SMP с Portland ?

2Kirill: А что твой тест юзает ? MPI ? OpenMP ?

Насколько я знаю Portland хорош для SMP+OpenMP а на "плоском" коде он проигрывает gcc PS: ... для кластера все сложнее ...

/SS

anonymous
()
2saper: да, был сделан strip -R .comment -R .note

Для полноты жизни еще отломал KAI C++ 4.0f for RedHat(e) 7.1
(вот тут лежит: http://developer.intel.com/software/products/downloads/KCC-4.0f3-i386-7.1.htm)

kfront (size 2847600)
Offset 2ad2e8, меняем первый 0 из 00 00 00 00 a0 a8 20 08 на 1
kfront-thin (size 1775660)
Offset 1ac888, меняем первый 0 из 00 00 00 00 84 5b 16 08 на 1

Есть подозрение что и под все остальные платформы весь FlexLM 7 отламывается исправлением одного бита, но мне смотреть ломы. Да и надо ли оно кому ?

Старый пионэр
anonymous
()
2AffreuxChien:
а шо, разве все пингвинофилы сидят исключит-но на камнях от AMD ? "Вам" могет это добро и не надо, а другим будет крайне полезно
ЗЫ: оптимизации для AMD at least в опциях icc не замечено ни разу

Старый пионэр
anonymous
()
To SS:

Я компилил ScaLAPACK под MPI причем без какого-либо использвоания SMP (а оно возможно, но МЕДЛЕННЕ для обоих компиляторов, чем обмен между процессорами через сетевой адаптер). НО! задача очень сильно грузит процессоры (решение систем линейных уравнений) и я, честно говоря, не понимаю почему pgi тут работает не быстрее GNU.
Kirill ★
()

.... из малоприятного наблюдается несовместимость STL от gcc и icc :(

2Kirill: А я вот не представляю как можно соптимизироваить код - написанный под MPI когда там уже все разложено _руками_ ... там же вся синхронизация фактически выполняется вручную ...

BTW: А как был сделан вывод о более медленном исполнении в SMP ? Или я чего не понял насчет железяки ? У тебя N узлов по 2xPIII ? Я правильно понял ?

/SS

anonymous
()
У нас в конторе делали евалюейшн Intela на ~30 разных машин на вычислительном софте под Вынь в сравнении с MSVC. Прикольно, что было как относительное ускорение до 35% так и замедление до 10%. Машины не самые старые, памяти много, и интелы и амд. По данным углядеть хоть какие-то закономерности мне не удалось. Впрочем ускорение было на большинстве машин.
anonymous
()
Ответ на: комментарий от anonymous
>Прикольно, что было как >относительное ускорение до 35% так и замедление до 10%. >Машины не самые старые, памяти много, и интелы и

Видимо первые это интель а вторые AMD

Сейчса как раз тестю icc на Athlon-ах (TB, XP)

- icc на них как раз проигрывает процентов по 10%

(а по размеру кода до 40% 8) )

Ну и еще имеется некий прикол при исполнении задачки на загруженом до LA=4 (не локально - то есть нагрузка создается мигрировавшими задачами) ноде MOSIX кластера: - задача построенная в gcc - в mtop показывает 100% загрузку процессора - та же задача построенная в icc в mtop показывает 25 % (это РЕАЛЬНАЯ доля загрузки процессора данной задачей)

Из косяков наблюдаются глюки с обработкой exception-ов ...

/SS

anonymous
()
Ogr: "Почему-то для слащдота это нормально"

А ты на слэшдот не ссылайся. У них своя башка, у тебя своя. Разницу между "делает код быстрее на 47%." и "делает код быстрее на 47% в тестах на интенсивные вычисления." понимаешь? Если нет, то и разговаривать с тобой не о чем. Если да, то признай ошибку и не пытайся скрыть за криками "ламера" свое собственное ламерство.

ZhekaSmith ★
()
Ответ на: комментарий от AC
> asoneofus, хотите решение? Переходите на другую платформу, и не мучайтесь:)
> AC (*) (2002-01-29 02:21:26.0)

На интел? Увольтессс... Нафиг с пляжа!
Сан, ХП, - вещЧи неплохие, но на них девайс не сваяешь - запчастя в розницу не продаются :) (им.вв. кирпичи)
Остаётся АРМ - но эта поделка ещё та...

Кто - нить компИлер хороший под МИПС32 ИСА-2 знает?

КАИ не в счёт, он для МИПС64 ИСА-1/2...

asoneofus ★
()
To SS:

Эта тема - offtopic. Ежели есть интерес пиши на birk_at_chat.ru
Kirill ★
()
Ответ на: комментарий от Kirill
На Byte2 - точно никакой разницы между 2.95.x, 2.96 и 3.x нет, я уже проверял. Так что корректно.

Ну а по поводу g77 - на фига он такой, если только 77? Мне 90 нужно. И HPF. Именно в разпараллеливании вся прелесть Portland-а.

Antichrist ☆
()
Ответ на: комментарий от Kirill
А я понимаю... ATLAS и без того ручками заоптимизирован до опупения, компилеру там делать нечего. ;)
Antichrist ☆
()
А почему g++

void main(){}

может, а для интеля надобно

int main() {}

Да и не дружит интель с gcc как то - инклуды ему, понимаш не те.

Да и что это за сервер регистрации такой, непонятно мне.

Можно говорить о преимуществах того или иного продукта по скорости на _отдельных_ тестах, но нет исходного кода - нет для меня и софта. Исходный код то ведь математически доказать можно, а фокусников-иллюзионистов много сейчас развилось.

NikS ★
()
2ZhekaSmith: "Разницу между"
Я же говорю - ты туп. Делает icc код быстрее? Делает? Есть еще вопросы? Ах да, он на вычислительных задачах делает, но вот бЯда, игрушки это тож вычислительные задачи, вебсервер тоже где-то там вычислительная задача... Так что иди отдохни...
Ogr ★
() автор топика
Ответ на: комментарий от Ogr
Ogr (*) (2002-01-29 20:15:51.0)

Юродивое ты наше...

> Ах да, он на вычислительных задачах делает, но вот бЯда, игрушки это тож вычислительные задачи, > вебсервер тоже где-то там вычислительная задача...

Это мог сказать только человек, не имевший дела с вычислениями.

При вычислительных штуках 1% производительности -- это экономия часов и дней. Для игрушки или вебсервера это ноль без палки.

4-7% -- недалека разница...

ingvarr ★
()
Прежде всего большое спасибо Пионэру за публикацию, как сломать icc. Этот с%ка у меня никак эту долбаную лицензию не находил и запускаться не хотел. А теперь о компиляторе. Ну, попробовал я эту штковину на своем эмулятое. На самый первый самый поверхностный взгляд а) то, что с icc размер запускаемого файла получается меньше - неправда. C gcc размер ~230к c icc - 320k. б)*очень* непорадовало одно обстоятельство : компилю с -tpp5, он мне пишет "overriding with -tpp6". Ну, и что сие значит ? То, что под P5 компилить не умеет ? Ну, во-первых, это плохо, во-вторых, в хелпе выдает, что может... Ну, машина-то у меня PIII, но на моей-то машине эмулятор и без оптимизации летает ! Мне надо скомпилить как раз под первый пенек ! А вот что=то пока не получилось. Скорость пока оценить не могу, завтра на пеньке погоняю (если запустится), о результатх напишу.
lenin ☆
()
Мля ! Народ ! Этот iсс дейсвительно rulez ! Не дожидаясь завтра, я решил посмотреть, сколько периодов тактовой частоты CPU кушают некоторые алгоритмы из моего эмулятора, при компиляции разными компиляторами. Выбрал алгоритм синтеза звука как ИМХО наиболее ресурсоемкий. Так вот, при компиляции эмулятора с помощью gcc этот алгоритм кушает ~540k периодов тактовой частоты CPU за 1/50 секунды. При компиляции с помощью icc ... 320k !!! Т.е. ускорение ~60% !!! Я блин такого не ожидал !!! Эмулятор написан на С. Плавающей запятой в этом аглоритме нет. Ключи gcc -0x, где x=2,3,20 (разницы практически никакой) От разных -mx только хуже, от разных allignов никакого эффекта. Ключи icc -ip -tpp5 -O3. А вот файлы больше получаются именно с icc. C разными ключами получается поразному, но у icc стабольно на примерно идентичных ключах ~70% побольше.
lenin ☆
()
Пора Огру еще прлюсик к хардлинкам записать. Он, оказывается, не знает еще что есть вычислительные задачи. Для него везде, где есть хоть одно вычислительное действие (например, a[2]) - вычислительная задача. LOL.
anonymous
()
2 lenin:
Ну раз даже ленин из мавзолея поднялся чтобы зарулезить новый компилер - значит он и правда рулез :-D lol

eXOR ★★★★★
()
2Ogr: меня мягко говоря поразило ваше представление о "вычислительных задачах" - похоже что вы несколько не рубите в данном вопросе. А сказать чего-нть непеременно хочется, да ? Большинство приведенных примеров целесообразнее писать вообще на скриптовых языках (вроде Perl & Python), а на C/C++ писать только действительно resource consuming вещи (SWIG rulez, очень рекомендую)

2lenin: KAI кстати на моей задачке тоже генерит код меньше чем gcc - уж и не знаю, чем это объясняется (скорее всего тем что gcc вставляет кучу мусора в init код, вроде инициализации системы ввода-вывода и проч. shit). Но KAI сосет по скорости по сравнению с icc.

Неприятно поразило следующее - большинство GNU софта настолько кривы и убоги и так заточены под кривой и убогий же gcc, что ничем другим просто не хочут собираться (для тех кто захочет обвинить меня в ереси и злобных нападках на любимого пингвинячьего бога c предложением сжечь на костре святой инквизиции - ну пересобирите хотя бы binutils на чем-либо отличном от GCC. Тогда и поговорим аргументированно. Я уже просто молчу про ваш главный фетиш Linux kernel). Есть повод задуматься...

2all: я тут еще отломал за компанию PGroup C++ 3.3-2 - надо кому ? Оно шо-то тоже не поражает воображение (код медленный и размерчик приличный у выходных файлов получается)

Старый пионэр
anonymous
()
Ответ на: комментарий от anonymous
А мне кажется, что ничего удивительного в том, что коммерческий компилятор, да еще от производителя процессора генерирует код под этот процессор лучше, чем бесплатный и разработанный под тучу платформ. Странно, если было бы наоборот. И очень хорошо, что, в целом, gcc генерирует сравнимый код - по крайней мере всегда есть выбор.
anonymous
()
>>>Я уже просто молчу про ваш главный фетиш Linux kernel

Уже не молчишь... Но причина - в истории вопроса. Заточка кода кернела именно под gcc _сознательный_выбор_ тов. Линуса. Обоснование - давайте не будем писать код портабельно под РАЗНЫЕ компиляторы, а будем писать код под ОДИН, но многоплатформенный компилятор. Практика все же говорит о том, что он похоже был прав - кто не согласен, пусть попробует сделать иначе. Давно пора.

anonymous
()
Простите, может быть я что нибудь недопонимаю, но для меня переносимость и открытость кода важнейшие критерии.

Я лучше куплю себе машину, работающую побыстрее, нежели откажусь от этих критериев.

Если бы не AT&T UNIX+C, то сейчас бы и писали на ассемблере, да на Фортранах, что конечно бы было бы хорошо, но дороговато.

NikS ★
()
Из косяков icc замечено:

SIGSEGV в exit(status)

#include <iostream.h> int main( int argc, char **argv ) { cout << "Test\n"; exit(-1); return 0; }

При status != 0 ... интересно почему ?

/SS

anonymous
()
На том же самом flops.c результаты которого на спарке были, на интеле под Linux было проведено сравнение gcc и icc. Результат аналогичный - выигрыш от 50% до 100%.
anonymous
()
2Ogr: "Number crunching" и "numerically intense" в оригинальной статье означают определенный тип задач. Это - расчетные задачи (погоды, атомных взрывов), мультимедиа (включая обработку изображений) и цифровая сигнальная обработка (DSP). Такие задачи характеризуются тем, что хорошо подходят для векторной архитектуры - в них много одинаковых операций над векторами (массивами) данных. Если использовать SIMD (Single Instruction Multiple Data) расширения, такие как MMX/SSE, можно добиться ускорения в несколько раз. При необходимости такие задачи оптимизируют вручную (для интела на ассемблере), т.е. хороший компилятор помогает, но ручная оптимизация может добавить еще немало скорости.

Веб-серверы, ядра, перл, офисы и прочее к таким задачам не относятся. Вообще. Игрушки относятся, но, сюрприз, критические участки тоже оптимизируют вручную.

ZhekaSmith ★
()
2ZhekaSmith: Теоретик ты наш... Помолчал бы, а?
"хороший компилятор помогает, но ручная оптимизация может добавить еще немало скорости"
Тебе дать url с документацией по процессору и попросить тебя ею воспользоватся при оптимизации руками? :) Или сам уже понял какую чушь сказал? Оптимизация асемблера руками это критинизм достойный студента первого курса заборостроительного техникума.
Ogr ★
() автор топика
Для тех кто говорил про работу на AMD http://rsdn.ru/article/?devtools/perftest.xml довольно интересное чтение.
2ZhekaSmith: А Вам в обязательном порядке прочитать вот эту часть http://rsdn.ru/article/?devtools/perftest.xml#IDAYQR2JB надеюсь что после это перед произнесением слова уже будет думать.
Ogr ★
() автор топика
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.