URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 45403
[ Назад ]

Исходное сообщение
"Реализация оптимизации для GCC, учитывающей связь между файлами сборки"

Отправлено opennews , 21-Ноя-08 15:15 
Разработчики компании Google представили (http://google-opensource.blogspot.com/2008/11/whopr-scalable...) начальную реализацию нового механизма оптимизации для набора компиляторов GCC - WHOPR (http://gcc.gnu.org/wiki/whopr) (WHOle Program optimizeR). Традиционная реализация GCC оперирует только единичными файлами, компиляция которых производится независимо друг от друга, после чего производится связывание готовых объектных файлов в единый исполняемый файл. Данный подход имеет преимущество в том, что процесс сборки легко может быть распараллелен в несколько потоков, одновременно могут компилироваться несколько файлов. Но метод раздельной сборки имеет проблемы в плане оптимизации использования функций, которые, в случае определения в другом файле исходных текстов, не могут быть оптимизированы в зависимости от текущих условий их вызова.


Проект WHOPR реализует альтернативную схему LTO (Link-Time Optimization) оптимизации для GCC, не требующую в отличии от LTO...

URL: http://google-opensource.blogspot.com/2008/11/whopr-scalable...
Новость: https://www.opennet.ru/opennews/art.shtml?num=19027


Содержание

Сообщения в этом обсуждении
"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено sndev , 21-Ноя-08 15:15 
useful

"Реализация оптимизации для GCC, учитывающей связь между файлами сборки"
Отправлено pavlinux , 21-Ноя-08 15:23 
Что-то это напоминает :  

1. этап
# gcc -fprofile-generate -o hello hello.c
2. этап
# sh ./hello  

3 этап
# gcc -fprofile-use

:)


И в чём отличие?!



"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено const , 21-Ноя-08 15:55 
На правах бреда:

-fprofile-use не даёт возможности компилятору, например, подставить функцию из другого модуля в место вызова (inline) или "сократить" какие-нибудь ненужные параметры...

LTO в общем виде позволяет это сделать. Например, так делают icc с ключиком -ipo и llvm. Делает ли подобные фокусы gcc с гуглевскими патчами - вопрос. Надо идти по ссылке ;)


"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено pavlinux , 21-Ноя-08 16:06 
extern inline int блах-блах-блах(){;}

"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено Алексей , 21-Ноя-08 16:19 
И так для всех функций. Прогрессивный подход.

"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено const , 21-Ноя-08 16:55 
Правильно, в проекте куча хедеров и один main.c. Только вот тут как раз компилятору будет требоваться куча памяти, а в топике сказано, что вроде как от этого избавились.

"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено pavlinux , 21-Ноя-08 18:09 
А Вы пробовали Linpak для Cell собрать
На самом дохлом Cell ( на 5.7GHz и 16Gb RAM) занимает около 12 часов.

http://www.netlib.org/benchmark/hpl/IBM_README.txt
> Note: the "make" takes a *long* time! (e.g. 12 hours)

Сколько время займет на Google GCC, и возможно ли это вообще.  


"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено Алексей , 21-Ноя-08 19:04 
Ну возьмите и проверьте :) А то странное какое-то замечание. Вообще я подозреваю, что эту фичу лучше юзать для релизов, а при разработки собирать обычной версией GCC.

"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено const , 21-Ноя-08 19:18 
Может, это целл такой волшебный, но у меня на amd64 атлас-3.8 собирается 3 часа, а атлас-3.9 - полчаса. И у него там внутри свои очень суровые оптимизации, так что вряд ли от смены компилятора можно получить выигрыш.

"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено User294 , 21-Ноя-08 21:27 
> Может, это целл такой волшебный

Запросто - он как процессор приложений ничего такого крутого из себя не представляет.Если не используются SPE (а gcc когда-то умел ими пользоваться?) - ничего интересного Cell не продемонстрирует.Резонно слив обычным многоядерникам.А вот если софт SPE юзать будет - ну удачи его обогнать, ага.


"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено pavlinux , 21-Ноя-08 23:08 
Обсобенно круть, когда пароли подбирает :)

8 потоков, да на 5.7GHz  \m/

Кстати, кто надумает в компаниях брать, а может и домой :), - действительно распиареная штука,
без полной переделки софта пока бесполезная трата денег.

КПД наверно больше у CUDA + Gforce 8800 GTX


"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено vitek , 22-Ноя-08 19:13 
>КПД наверно больше у CUDA + Gforce 8800 GTX

а тут переделка софта не требуется? :-D
поживём-увидим... как только nvidia "подарит" сии возможности gcc ;-)


"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено pavlinux , 22-Ноя-08 20:15 
>>КПД наверно больше у CUDA + Gforce 8800 GTX
>
>а тут переделка софта не требуется? :-D
>поживём-увидим... как только nvidia "подарит" сии возможности gcc ;-)

Да, но сколько стоит GF8800  и скока Целлка


"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено User294 , 22-Ноя-08 21:28 
>8 потоков, да на 5.7GHz  \m/

Да, какойнить MD5 на таком брутить - одно удовольствие и никакой 4-ядерник его пожалуй не натянет в этом вопросе.

>без полной переделки софта пока бесполезная трата денег.

Стопроцентно.Но у айбиэма грамотные доки на этот счет есть и софт есть (gcc и для основного ядра и для SPE).Так что в некоторых случаях при способности грамотно накодить - оно очень даже вариант.Скажем я могу себе представить как оно заменит ОДНИМ процом горку Xeon-ов кодировавших\декодировавших\шифровавших\расшифровавших видеопоток например.

>КПД наверно больше у CUDA + Gforce 8800 GTX

Без понятия - мне железки от нвидия неинтересны как класс.Извиняюсь, но закрытый блоб как драйвер для "процессора" - это на мое имхо более чем просто маразм.Может еще интель и амд для работы своих процов закрытые дрова будут делать?Наф-наф-наф такое "счастье" =).Я вообще в последнее время политику нвидии не понимаю.


"Реализация оптимизации для GCC, учитывающей связь между файл"
Отправлено izard , 24-Ноя-08 05:47 
В терминах компилятора Интел - различие между IPO и PGO

"Реализация оптимизации для GCC, учитывающей связь между файлами сборки"
Отправлено pavlinux , 21-Ноя-08 19:38 
А где скачать-то, не найду никак....