LINUX.ORG.RU

GCC vs Intel C++


0

0
Услышал я тут что Intel C++ может генерить более оптимальный код, и
 решил попробовать. Установил себе триальную версию 9.0. Заменил в makefile 
g++ на icpc, добавил в опции компилятора -O2 и -static (тесты проводятся
 на машине где нет icc и без -static он ругается на отсутствие 
динамических библиотек), пересобрал, запустил и тихо офигел.
Вместо полутора минут на gcc-3.3.3, получилось 12!!! замеры проводились 
обычным  time.


Что я неправильно сделал? могло повлиять на быстродействие использование -static ?

Еще, при компиляции icpc выдал кучу remark в основном на тему:

remark #981: operands are evaluated in unspecified order
remark #383: value copied to temporary, reference to temporary used

Может ли это влиять на скорость?

Есть ли вобще какие-нибудь рекомендации по переводу проекта с gcc на Intel C++?


★★
Попробуй gcc 4.1.0 еще больше удивишься. Говрят, что время компиляции уменьшилось на 20 процентов.
anonymous
()
Ответ на: комментарий от anonymous
12 минут - это не время компиляции. это время работы приложения собраного icpc.
Vinick ★★
() автор топика
Странно, может быть, что бинарный файл получился огромный, и во время работы, возникает необходимость много использовать swap. А бинарник, собранный gcc, он тоже был собран с --static?
phrm ★★
()
Ответ на: комментарий от grob
> 3.4.6 и 4.1.0
В четверке больше бъются за перфоманс С++
aton
()
Ответ на: комментарий от phrm
>Странно, может быть, что бинарный файл получился огромный, и во время >работы, возникает необходимость много использовать swap. А бинарник, >собранный gcc, он тоже был собран с --static?

Бинарник получается в районе 5 метров, на машине 2 гига памяти и в момент тестов свободно больше половины. При выполнении свободная память не кончалась, так что я думаю своп тут не причем. Для gcc тоже собрал с -static, бинарник получился на 200 килобайт меньше, но результаты по скорости остались те же. GCC - около 1 минуты, Intel - около 12 минут.

Vinick ★★
() автор топика
Ответ на: комментарий от Pi
>дык процессор АМД наверное ;)

Даже если и AMD это еще не повод тормозить в 12 раз.

К тому же у меня не AMD, а самый что ни на есть Intel Xeon.

Vinick ★★
() автор топика
Ответ на: комментарий от anonymous
>А что делает программа, если не секрет ?

вобще секрет конечно... но так уж и быть... :) программа занимается прогнозом курсов акций.

Intel принципиально не оптимизирует такие типы приложений? :))

Vinick ★★
() автор топика
Ответ на: комментарий от Vinick
да: это определённый риск для экономики США :)
Pi ★★★★★
()
Все ждал, пока кто по существу чего скажет...

Короче, мне сказать почти нечего. На моих примерах icc выигрывает у gcc от 10 до 30 процентов (нга Итанике). На плюсах не пробовал.

Еше одно наблюдение -- icc инлайнит существенно лучше, чем gcc: многие функци,которые gcc инлайнить отказался, icc благополучно сынлайнил.

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard
Хм, интересно ещё было бы потестировать icc и gcc на генерацию кода доступа к элементам массивов (одномерных, двумерных). Пожалуй, icc должен лучше справляться со свёртками и оптимизацией сложных режимов адресации.
jek_
()
Ответ на: комментарий от Vinick
Судя по предметной области и месту ее обсуждения, в программе используется плавающая точка. Это так?
anonymous
()
Ответ на: комментарий от anonymous
>Судя по предметной области и месту ее обсуждения, в программе используется плавающая точка. Это так?

Вы совершенно правы. Используется и плавающая точка и матричные вычисления (тут используется самописная библиотека).

Кстати, с опцией -fast проект перестал собираться. Валится при линковке. Буду с этим разбираться. Может быть тут собака порылась.

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