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 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.