LINUX.ORG.RU
ФорумTalks

gcc vs icc


0

0

Проблемы у abbyy при портировании ядра распознавалки на иные платформы:

Речь шла вот о чем. При переносе FREngine на другие платформы( Linux, FreeBSD, MacOS X ) мы столкнулись с тем, что код откомпилированный gcc медленнее до 35-40%. Именно из-за этого у нас начались эксперименты с icc. Из фазы эксперимента это не пока вышло, но результаты обнадеживают.

http://www.abbyy.ru/finereader/forum/actualthread.aspx?bid=12&tid=527&pg=2

Почему так сейчас, если было время gcc генерировал хороший код?

★★★★★

А как там поживают Graphite и OpenMP из GCC-4.4 на многопроцессорных системах? У меня подозрение, что на 12 ядрах оно будет так работать, что большего не захочется. Ну, хотяб первое время :)

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

> А как там поживают Graphite и OpenMP из GCC-4.4 на многопроцессорных системах? У меня подозрение, что на 12 ядрах оно будет так работать, что большего не захочется. Ну, хотяб первое время :)

ты идиот, зачем 12 ядер для файнридера ?

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

Правильно! Криворукие быдлокодеры с пропропиетарным глюкоподелием не нужны! Так... а о чём это я?..

wyldrodney
()
Ответ на: комментарий от dimon555

> может у них просто код такой?

Не верю, что они специально так писали, чтобы быстрее работало в MVC++ и icc и плохо в gcc. У них самих проблемы, что gcc дает медленный результат.

praseodim ★★★★★
() автор топика

ICC отличается крайне агрессивным инлайнингом кода и специфичным для intel выравниванием.
Мне интересно, на каком процессоре они все это дело тестировали..

devl547 ★★★★★
()

>код откомпилированный gcc медленнее до 35-40%

вероятно не осилили флажки выставить получше?
Хотя ICC на математике libgmp опережает Gcc на 17-25%
Так что вполне возможно, если у них такой специфичный код ICC будет и лучше

>Почему так сейчас, если было время gcc генерировал хороший код?


GCC генерирует хороший код, просто ICC имеет свою изюминку и в отдельных случаях проявляет себя гораздо лучше для оптимизации некоторого кода.

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

>А как там поживают Graphite и OpenMP из GCC-4.4 на многопроцессорных системах?

OpenMP требует усилий программистов по распаралелливанию, а вот ICC умеет эвристически распаралелливать код ( флажок -parallel ) , вот только практического эффекта с ускорением я пока не наблюдала от этого

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

>OpenMP требует усилий программистов по распаралелливанию

Не думал что ты настолько хорошо это изучишь )) Подскажи ссылки на документацию, тесты, если не сложно.

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

исключительно в интеллектуальном плане.

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

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

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

GCC сейчас полное говнище по сравнению с icc и msvc8-9. Непотяно, чего ты так рьяно пытаешься отстоять его честь.

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

>GCC генерирует хороший код, просто ICC имеет свою изюминку и в отдельных случаях проявляет себя гораздо лучше для оптимизации некоторого кода.

Скорее наоборот: gcc генерирует хороший код для _некоторых_ случаев (там работа с матрицами и мат. выражениями), но во всем остальном сливает где только может - по мелочам конечно, но в итоге из этих мелочей и накапливается 30-40% проигрыша.

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

на маке же есть искод. зачем они использовали ггц?

anon111
()

Реквестирую тест GCC vs ICC на процессорах amd. Ни про какие 40% там даже речи идти не будет.

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

Будет, если пропатчить бинарник, сделанный ICC, чтобы он не проверял производителя процессора.

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

>хорошо, выдайте другой , желательно свободный , компилятор для *nix
>есть альтернативы? то-то же


отсутствие свободных альтернатив - не оправдание GCC и не повод, чтобы фанатично доказывать на всех форумах, что "это просто код у вас неправильный" (типа товарища zlobnyi uzer)

frame ★★★
()

с того форума

>Код идентичен, версия icc 11. разрядность платформы 32. настройки gcc -03 для большей части файлов, у интела - дефолтные, пока с ним только играемся.



нда, хоть бы -march=pentium3 -mfpmath=sse -fomit-frame-pointer добавили, а то просто -O3 с -march по умолчанию (386 / 486) и математикой 387

* pentium3 - используется ICC by default

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

> хорошо, выдайте другой , желательно свободный , компилятор для *nix
> есть альтернативы? то-то же


Свободный - лишние условие. Взрослые люди не фапают на открытые исходники. Важен результат.

codeine-man
()

Столлмана на вас нет...

trusted trust

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

>Реквестирую тест GCC vs ICC на процессорах amd

я тестировал из любопытства на одной своей программке на амд 2600. при аналогичной оптимизации код icc был на пару процентов быстрее. на бенчмарк конечно не претендую

stormy
()
Ответ на: комментарий от frame

> Ололо, сразу так переход на личности/офтопик =) Слив защитан.

Трололо, твоя опера чем откомпилена?

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

> У меня подозрение, что на 12 ядрах оно будет так работать, что большего не захочется. Ну, хотяб первое время :)

Само оно работать не начнет под openmp код надо затачивать. Если делать в тупую, то оно может начать жрать все 4 ядра, а работать при этом медленнее.

Reset ★★★★★
()

>было время gcc генерировал хороший код?
Кто тебе сказал, что оно было? АФАИК gcc всегда сливал icc по оптимизации.

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

Ясно. Спасибо. Подождём несколько лет, пока многоядерные системы распространятся :)

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

А если найду? =)

Компиляторов СИ хоть жопой жуй. От маленьких типа tcc, до таких как ack, которым афаик миникс собирается. С си++ сложнее - есть tendra, но "C++ support is extremely limited in this release". Ну и есть gcc-llvm и clang.

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

Ты забыл форк части GCC для нужд ядра. Недавно в рассылке это извращение попалось. Хотя там больше препроцессор хотят переписать...

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

Врядли. Этому уже не первый год пошёл, а обсуждение новое. Ну, если я ничего не напутал :)

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

gcc-llvm это тот же самый gcc, но он генерит код для llvm

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

ищите, только чтобы это был действительно компилятор способный собрать чуть больше пакетов чем только себя и с хоть какими-то возможностями для оптимизации, боюсь не найдете...
Ну и в основном многое очень делают для GCC, я вот в другом треде aria2 для теста пыталась собрать ICC - не вышло.

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

> А как там поживают Graphite и OpenMP из GCC-4.4 на многопроцессорных системах? У меня подозрение, что на 12 ядрах оно будет так работать, что большего не захочется.

OpenMP - расширение языка(pragma), отвечающее за возможность сказать компилятору что, где и как параллелить. В особо очевидных случаях некоторые компиляторы (Intel, и похоже gcc 4.4) научились сами вставлять те же инструкции, но это нужно очень большое везение чтобы так распаралеленная прога нормально использовала хотябы 2 ядра. Руками нужно писать...

P.S. Год назад пробовал собрать свой проет по работе(область - CFD HPC) на intel - получил примерно тот же уровень производительности что и gcc -O2. На этом и забил.

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

> Ну и в основном многое очень делают для GCC

Что есть плохо.

Ruth ★★
()

Вот кстати benchmark-и нескольких версий gcc и intel 11 на матричных операциях(судя по числам - матрицы плотные): http://eigen.tuxfamily.org/index.php?title=Eigen2_benchmark_Intel . Intel там далеко не всегда так уж и жжот. Так что imho в каждом отдельном случае нужно смотреть кто быстрее а не молиться на intel/ms/ibm/sun/etc. ожидая от них гарантированного выигрыша.

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

>а не молиться на intel/ms/ibm/sun/etc. ожидая от них гарантированного выигрыша.
для этого знания нужны, легче верить и чтобы все другие тоже верели, а не gcc использовали ;)

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