Перейти к содержанию
    

параллельная компиляция в EW IAR

да и время компиляции на 4-х ядрах (с опцией -j) в креаторе 17 секунд, на одном ядре тотже проект в креаторе с темиже уровнями оптимизации (только без опции -j) 55 секунд.

 

Я думаю вам надо разобраться в собственном проекте 'в креаторе'.

Что это за креатор, сколько у вас там файлов, сколько либ, что за оптимизация, какая линковка и проч.

 

Хотите подробных ответов задавайте подробные вопросы.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Компилятор iar - это точто такая же утилита командной строки, как и компилятор gcc. Так что всё очень просто - напишите мейкфайл, который вызывает нужный вам компилятор. Кстати, где-то в форуме такие проскакивали.

Проблема будет только в том, что IDE IAR-а не умеет запускать make. Так что придётся как-то выкручиваться. Например, эклипсой.

ээээ.... ну чото костыльный метод какойто... может оно и взлетит... но думаю овчинка не стоит выделки. Если нет такой опции в иаре, то и не надо.

 

Я думаю вам надо разобраться в собственном проекте 'в креаторе'.

Что это за креатор, сколько у вас там файлов, сколько либ, что за оптимизация, какая линковка и проч.

зачем разбираться в проекте? у меня нет проблемы в кривом прокте, я просто хочу распаралелить компиляцию. Вы мой проект не видели - уже окрестили что в нём что-то не так. 55 секунд на одном ядре - что тут не так? OpenOficce компилялся помню на одном ядре пару дней.

Вот допустим есть у вас проект. Вы соптимизировали исходники, настроили оптимизацию, выжили из всего этого максимум. Код получился труъ! В учебники его. Такой код компиляется к примеру 1 день/час/минуту. Какойнить нуб написал бы подобный код который компилялся бы 1,5 дня/часа/минут. Вы молодец!!! Но, можно ещё ускорить процесс компиляции, можно заставить параллельно компилировать сразу несколько исходников на разных ядрах процессора, тем самым сократив время компиляции и ваш труъ-проект скомпиляться на этом же компе например за 0,3 дня/часа/минут.

 

в make такая фича есть. вот и был вопрос - есть ли такая фича в иаре?

 

Что это за креатор
такой

 

Хотите подробных ответов задавайте подробные вопросы.
какие подобные? чем мой вопрос не устроил? Спросил колегу "Ты не помнишь как распараллелить компиляцию в gcc?", в ответ "Эээээ.... вроде в -j в мэйке". Про иар спросил на форуме... что не так?

 

 

2Xeniaкстати.... можно компилировать не то что параллельно на всех ядрах процессора, но и параллельно на нескольких компах в локальной сети. Канеш иару это точно не нужно, но запараллелить на одном камне былобы неплохо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ээээ.... ну чото костыльный метод какойто... может оно и взлетит... но думаю овчинка не стоит выделки.

В каком смысле "может взлетит"? У меня давным-давно летает. Овчинка выделки стоит. Но это зависит от овчинки, конечно, я с вашей не знаком.

 

в make такая фича есть. вот и был вопрос - есть ли такая фича в иаре?

Нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

c эклипсом? или пуре иар?

У меня давно сложилась привычка сборку делать через make + [некий компилятор], редактирование исходников через Source Insight (шикарный редактор, яровский - унылое гамно), отладку - тем, что удобнее (яр, кейл). Компилятор обычно gcc или яр.

Кстати, у яровского комилятора есть ключик для генерации файла зависимостей, что явно заточено под make.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня давно сложилась привычка сборку делать через make + [некий компилятор], редактирование исходников через Source Insight

У меня то же самое, но редактирование через Eclipse :)

Кстати, вот же, например, тема про IAR + makefile.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но, можно ещё ускорить процесс компиляции, можно заставить параллельно компилировать сразу несколько исходников на разных ядрах процессора, тем самым сократив время компиляции и ваш труъ-проект скомпиляться на этом же компе например за 0,3 дня/часа/минут.

 

в make такая фича есть. вот и был вопрос - есть ли такая фича в иаре?

 

Так крутой сжатый код с перекретно-модульной отимизацией и получается после мультифайловой компиляции.

C make это не получится. По крайней мере в эклипсе (где по видимому используется make) у IAR-а не получилось.

 

Так что надо думать быстрота компиляции оборачивается неоптимальностью кода в результате.

 

Потом все таки надо корректно сравнивать.

Сравнивать надо по времени весь процесс сборки и для длинных процессов раз уж заговорили о длинных компиляциях.

А то может быть и линковка очень длинной.

 

Скажем так: 584 файла IAR собираются в один HEX за 1 мин 30 сек без включенной оптимизации.

Сколько времени make c GCC потратит на приблизительно такое же количество файлов?

 

То что IAR делает многопоточную компиляцию можете увидеть в любом логе процессов.

В том же Total Commander.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так что надо думать быстрота компиляции оборачивается неоптимальностью кода в результате.
бред! Скомпилируйте один и тотже проект с одинаковыми настройками проект на компе с процессором i7 и на компе с Athlon 2000+, который работает с сетевым диском через на GPRS-е...... На i7 время может составить 30 секунд, а на атлоне 30 минут. Время разное, но в результате исполняемый код получиться 1в1.

 

Вы вообще понимаете о чем речь в этом посте? О параллельной компиляции! Причем тут оптимизация компилятора и разбор в собственном проeкте?

 

спешал4ю, напальцах....

 

Допустим есть проект из 4-х исходных файлов. время компиляции каждого файла на отдельно взятой машине будет

file1.cpp - 17 сек

file2.cpp - 21 сек

file3.cpp - 15 сек

file4.cpp - 19 сек

время линковки 10 сек.

Если компилировать на 1 ядре общее время компиляции будет 17+21+15+19+10=72

 

если заставить компилятор компилить на 2-х ядрах параллельно, то одновременно будут компилироваться файлы file1.cpp и file2.cpp, затем file3.cpp и file4.cpp, после линковка. Итого общее время сборки будет 21+19+10=50 сек.

если заставить компилятор компилить на 4-х ядрах, то одновременно будут компилироваться сразу 4 файла, после линкока. Итого общее время сборки будет 21+10=31 сек. PROFIT 41 секунда

в з-х случаях разная скорость компиляции. Как скорость компиляции повлияет на результат, на конечный исполняемый файл? Как параллельная компиляция обернётся неоптимальностью кода в результате?

 

Скажем так: 584 файла IAR собираются в один HEX за 1 мин 30 сек без включенной оптимизации.

Сколько времени make c GCC потратит на приблизительно такое же количество файлов?

почему вы пытаетесь сравнить скорость сборки гсс против иар? Зачем? Откройте отдельную тему IAR vs GCC мерийтесь писка.... я говорю что make может распаралелить компиляцию, а как это в иаре сделать? может ли такое иар? Да - да, нет - нет.

 

То что IAR делает многопоточную компиляцию можете увидеть в любом логе процессов.

В том же Total Commander.

Нету тотала. в виндовом диспетчере задач с иаром это не видно, с make и gcc это видно.

Да и отключения ядер от иара особо не влияет на скорость: 2, 3 или 4 ядра - время одинаковое. А в диспетчере задач появляется только один процесс iccarm.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Допустим есть проект из 4-х исходных файлов. время компиляции каждого файла на отдельно взятой машине будет

file1.cpp - 17 сек

file2.cpp - 21 сек

file3.cpp - 15 сек

file4.cpp - 19 сек

время линковки 10 сек.

Если компилировать на 1 ядре общее время компиляции будет 17+21+15+19+10=72

 

Вот оно: "время линковки 10 сек."

А в IAR-е после 500 файлов линковка длится менее секунды. Поймете почему, может поймете и остальное.

 

Штатный менеджер процессов слишком медленный, используйте тулз сохраняющий историю процессов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот оно: "время линковки 10 сек."

А в IAR-е после 500 файлов линковка длится менее секунды. Поймете почему, может поймете и остальное.

 

Штатный менеджер процессов слишком медленный, используйте тулз сохраняющий историю процессов.

да гонишь что ли? :biggrin: я же говорю ДОПУСТИМ, я просто объяснил принцип приимущества параллельной компиляции....

ну давайте по другому.....

ДОПУСТИМ есть проект из 4-х исходных файлов. время компиляции каждого файла на отдельно взятой машине будет

file1.cpp - 17 условных интервалов времени

file2.cpp - 21

file3.cpp - 15

file4.cpp - 19

время линковки 10 условных интервалов времени.

Если компилировать на 1 ядре общее время компиляции будет 17+21+15+19+10=72 условных интервалов времени. И?

Реальный проект далеко не из 4-х файлов, и имена у них не file*.cpp. Про реальный проект я писал... 17 против 55 секунд.

 

а если так... ДОПУСТИМ проект из 400 файлов. время компиляции первой сотни фалов 17, второй сотни 21, 3-ей 15 и четвертой 19 условных ед. времени. линковка длиться 1 условный интервал времени (не условных ед времени, а условный интервал). .... Да и вообще, выкиньте линковку из этого примера.... при паралельной компиляции выйгриш от компиляции... линковка столько же будет идти.

 

используйте тулз сохраняющий историю процессов.
да и причем процессы? почему в иаре на 2-х ядрах проект собирается 15 сек, а на 4-х ядрах 15 сек? это без всяких тулз видно.

 

Поймете почему, может поймете и остальное.
Что почему? Что я должен понять, и что тут понимать остальное? Я понял только одно - вы троль!!!

 

Хотите подробных ответов задавайте подробные вопросы.
какие такие? вы модер или троль? Ответьте на вопрос - что не так с моим вопросом?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вопрос в теме. как настроить эту фичу...

 

кстати вопрос не совсем коррктен. есть паралельная компиляция файлов и параллельная сборка солюшена (если брать терминологию мелкомягких).

 

полный профит и то и то заюзать. у мелкомягких именно такой подход...

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

https://youtu.be/I5w3YyERbWg - "Using pararell build in IAR Embedded Workbench". Похоже что появилась возможность распараллелить компиляцию

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

https://youtu.be/I5w3YyERbWg - "Using pararell build in IAR Embedded Workbench". Похоже что появилась возможность распараллелить компиляцию

Таки да. Работает. Подсунул иаровскому мейку V7.2.1.3693 ключик -parallel 4 (все 8 ядер не стал) - пресборка проекта в разы ускорилась. Компиляция с генерацией полных листингов и ASM файлов.

Правда весь проект пересобирать постоянно ни нафиг нет дурной привычки, но пусть будет...

Мультифайловая компиляция не использовалась. Если активировать мультифайловую, то традиционная сборка в одном потоке ломается (знаю почему, так и должно быть), а в 4 потоках, о чудо, проходит. Но нафиг-нафиг такие "чудеса"!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поэтому все, кто тут охал ахал про отсутсвие выигрыша, а также зачем это вообще надо вед это "всего лишь превращение текста на языке программирования в загрузочный код", нещадно тролили автора тoпика 2 страницы.

 

До этого я пользовался make'ом. Ну а сейчас уже получается - без надобности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...