реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> параллельная компиляция в EW IAR
juvf
сообщение Nov 6 2014, 16:29
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



вопрос в теме. как настроить эту фичу в IDE EW IAR? для gcc нужно make -j4, а как в идэ иар это настроить? где в окошках прописать количество ядер?
Go to the top of the page
 
+Quote Post
PheeL
сообщение Nov 6 2014, 16:49
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 24-11-07
Пользователь №: 32 633



Есть галочка "C/C++ Compiler -> Language 1 -> Multi-file Compilation", но она точно не использует все ядра и применение у неё немного другое. Не уверен, что у IAR компилятор многопоточность поддерживает.


--------------------
Если друг оказался вдруг и не друг и не враг, а - JTAG.
Go to the top of the page
 
+Quote Post
juvf
сообщение Nov 6 2014, 17:55
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



это не то
Цитата
Multi-file Compilation
Enables multi-file compilation from the group of project files that you have selected in
the workspace window.
You can use this option for the entire project or for individual groups of files. All C/C++
source files in such a group are compiled together using one invocation of the compiler.
This means that all files included in the selected group are compiled using the compiler
options which have been set on the group or nearest higher enclosing node which has
any options set. Any overriding compiler options on one or more files are ignored when
building, because a group compilation must use exactly one set of options.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Nov 6 2014, 18:51
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



А зачем вообще компилировать параллельно? sm.gif
Пусть бы даже у процессора было 100 ядер. Что мешает компилировать задачи/потоки для каждого ядра последовательно? Ведь компиляция это не исполнение, требующее одновременной работы ядер, в всего лишь превращение текста на языке программирования в загрузочный код.
Go to the top of the page
 
+Quote Post
juvf
сообщение Nov 6 2014, 20:07
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата
А зачем вообще компилировать параллельно?
чтоб время копиляции сократить.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 6 2014, 20:30
Сообщение #6


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(juvf @ Nov 6 2014, 22:07) *
чтоб время копиляции сократить.


У IAR автоматом происходит распараллеливание.
Более того он даже индексацию исходников делает в параллельных процессах и делает ее постоянно в фоне.

Так что не надо даже парится с какими-то опциями. Все уже турбировано. wink.gif
Go to the top of the page
 
+Quote Post
juvf
сообщение Nov 7 2014, 03:43
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(AlexandrY @ Nov 7 2014, 01:30) *
У IAR автоматом происходит распараллеливание.
Более того он даже индексацию исходников делает в параллельных процессах и делает ее постоянно в фоне.

Так что не надо даже парится с какими-то опциями. Все уже турбировано. wink.gif

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

в QtCreator также всё компилиться, на глаз, по очереди. Но включая распаралеливание видно как по 4 файла за раз компиляться и выхлоп компилятора бешенный... текст только мелькает, не успеваю даже прочитать даже слово.... по времени примерно в 4 раза быстрее на всех ядрах чем на 1.

а от куда инфа, что в иаре всё распараллелено? пруф? может в какойнить последней версии это уже встроенно....


ps проэксперементировал ..... ноут 4-х ядерный, винда кажет 8 ядер.
запускаю компиляцию на разном кол-ве ядер....
на 1 ядре время компиляции проекта 25 сек.
на 2-х время 25 сек.
4 - 15 сек,
6 - 15 сек,
8 - 15 сек

чегото не очен уж турбированно
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 7 2014, 07:39
Сообщение #8


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(juvf @ Nov 7 2014, 05:43) *
в QtCreator также всё компилиться, на глаз, по очереди. Но включая распаралеливание видно как по 4 файла за раз компиляться и выхлоп компилятора бешенный... текст только мелькает, не успеваю даже прочитать даже слово.... по времени примерно в 4 раза быстрее на всех ядрах чем на 1.


Не успеваете прочитать потому что, по видимому, пустые файлы компилируете.

Уберите массовые инклуды из файлов, сделайте уровень оптимизации у IAR как у GCC и он также быстро будет компилировать. wink.gif

У меня компиляция занимает считанные проценты процессорного времени.
На кой спрашивается это распараллеливать если даже один процессор не загружается полностью?

Все время уходит видимо на перемалывание файлов.
Go to the top of the page
 
+Quote Post
juvf
сообщение Nov 7 2014, 11:29
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(AlexandrY @ Nov 7 2014, 12:39) *
Не успеваете прочитать потому что, по видимому, пустые файлы компилируете.

не пустые... да даже если и пустые.... на одном ядре успеваю прочитать... тотже проект на 4-х не успеваю..... да и время компиляции на 4-х ядрах (с опцией -j) в креаторе 17 секунд, на одном ядре тотже проект в креаторе с темиже уровнями оптимизации (только без опции -j) 55 секунд.
давайте не будем спорить что make -j работает или не работает в креаторе. у make есть такая опция.
Цитата
-j [jobs], --jobs[=jobs]
Specifies the number of jobs (commands) to run simultaneously. If there is more than one -j option, the last one is effective. If the -j option is given without an argument, make will not limit the number of jobs that can run simultaneously.
вопрос - есть ли у иара такая опция?

я не хочу чтоб иар компилял также быстро как gcc, я хочу чтоб иар параллельно компилял задействовав все ядра процессора.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 7 2014, 11:37
Сообщение #10


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(juvf @ Nov 7 2014, 16:29) *
я не хочу чтоб иар компилял также быстро как gcc, я хочу чтоб иар параллельно компилял задействовав все ядра процессора.

Напишите makefile для иара, и будет параллельно.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Aner
сообщение Nov 7 2014, 11:39
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Думается что на ваше ХОЧУ ... чтоб иар параллельно компилил задействовав все ядра процессора. IARу нужно "пояснять" как это делать. И порой это проблема пользования IAR на процах с несколькими ядрами. Чаще под много ядерные процы пишут и отлаживаются на ОС, нежели на компиляторах.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Nov 7 2014, 12:08
Сообщение #12


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Интересно, если IAR станет параллельно несколько модулей компилить, то варнинги в перемешку будут сыпаться? sm.gif
Go to the top of the page
 
+Quote Post
juvf
сообщение Nov 7 2014, 12:21
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Aner @ Nov 7 2014, 16:39) *
Думается что на ваше ХОЧУ ... чтоб иар параллельно компилил задействовав все ядра процессора. IARу нужно "пояснять" как это делать.

почему такая агрессия? в make 100 лет уж как распараллелили компиляцию. и я им ни чего не "пояснял". у иара есть такое или нет?

Цитата
И порой это проблема пользования IAR на процах с несколькими ядрами. Чаще под много ядерные процы пишут и отлаживаются на ОС, нежели на компиляторах.
чего? ........ хотите сказать что это ос должна распаралелить компиляцию? возможно и так. но если в иар одном потоке компилит все исходники поочереди, то врятли ос чегото распаралелит. если компилить исходники в разных потоках, то тут ос может рапаралелить..... имхо. но кабы не было в make это включается и отключается. и это заметно. в иаре.... как-то не заметно. вот я и спросил - как это включается в иаре? что тут криминального?

Цитата
Напишите makefile для иара, и будет параллельно.
а разве у иара есть мэйкфайл? на сколько мне известно makefile — сценарий сборки для процедуры make, являющейся неотъемлемой частью любого GCC-тулчейна.



ps ну что за народ? ну если кто знает что ТАКОЕ есть а иаре, скажите - "нужно галочку там то поставить". Если кто-то ТОЧНО знает что такого нет, скажите - такого нет. Ну почему нужно на пустом месте холивар устроить, нужно ТС показать что ТС есть чмо, раз такие вопросы задает, а мы, "модераторы" и атцы форума есть боги. И что ТС нисшая форма. Вот по теме не знают.... но надо что-то же ляпнуть....

Цитата(Xenia @ Nov 7 2014, 17:08) *
Интересно, если IAR станет параллельно несколько модулей компилить, то варнинги в перемешку будут сыпаться? sm.gif

ну это не моя фантастическая идея. в gcc же это есть. был бы я автором компилятора, а бы копилировал один исходник.... и собирал бы весь вывод в std::string. после окончания компиляции захавтывал бы мютекс на cout, делал бы вывод и освобождал бы мютекс. варнинги и ошибки высапятся вперемешку... но сгруперованы от каждого файла вместе. это имхо.

как это делают в make - не знаю, но они это делают.
Go to the top of the page
 
+Quote Post
scifi
сообщение Nov 7 2014, 12:22
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(juvf @ Nov 7 2014, 15:16) *
а разве у иара есть мэйкфайл? на сколько мне известно makefile — сценарий сборки для процедуры make, являющейся неотъемлемой частью любого GCC-тулчейна.

А кто мешает сделать make неотъемлемой частью яровского тулчейна? :-)
Опять же появится гибкость в процессе сборки, что зачастую полезно.
Кстати, я бы на месте этих яров не изобретал велосипед, а просто незаметно вызывал бы make.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 7 2014, 12:35
Сообщение #15


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(juvf @ Nov 7 2014, 17:21) *
а разве у иара есть мэйкфайл? на сколько мне известно makefile — сценарий сборки для процедуры make, являющейся неотъемлемой частью любого GCC-тулчейна.

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


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 19:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01481 секунд с 7
ELECTRONIX ©2004-2016