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

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

вопрос в теме. как настроить эту фичу в IDE EW IAR? для gcc нужно make -j4, а как в идэ иар это настроить? где в окошках прописать количество ядер?

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


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

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

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


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

это не то

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.

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


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

А зачем вообще компилировать параллельно? :)

Пусть бы даже у процессора было 100 ядер. Что мешает компилировать задачи/потоки для каждого ядра последовательно? Ведь компиляция это не исполнение, требующее одновременной работы ядер, в всего лишь превращение текста на языке программирования в загрузочный код.

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


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

чтоб время копиляции сократить.

 

У IAR автоматом происходит распараллеливание.

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

 

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

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


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

У IAR автоматом происходит распараллеливание.

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

 

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

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

 

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

 

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

 

 

ps проэксперементировал ..... ноут 4-х ядерный, винда кажет 8 ядер.

запускаю компиляцию на разном кол-ве ядер....

на 1 ядре время компиляции проекта 25 сек.

на 2-х время 25 сек.

4 - 15 сек,

6 - 15 сек,

8 - 15 сек

 

чегото не очен уж турбированно

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


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

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

 

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

 

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

 

У меня компиляция занимает считанные проценты процессорного времени.

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

 

Все время уходит видимо на перемалывание файлов.

 

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


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

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

не пустые... да даже если и пустые.... на одном ядре успеваю прочитать... тотже проект на 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, я хочу чтоб иар параллельно компилял задействовав все ядра процессора.

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


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

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

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

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


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

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

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


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

Интересно, если IAR станет параллельно несколько модулей компилить, то варнинги в перемешку будут сыпаться? :)

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


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

Думается что на ваше ХОЧУ ... чтоб иар параллельно компилил задействовав все ядра процессора. IARу нужно "пояснять" как это делать.

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

 

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

 

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

 

 

 

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

 

Интересно, если IAR станет параллельно несколько модулей компилить, то варнинги в перемешку будут сыпаться? :)

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

 

как это делают в make - не знаю, но они это делают.

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


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

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

А кто мешает сделать make неотъемлемой частью яровского тулчейна? :-)

Опять же появится гибкость в процессе сборки, что зачастую полезно.

Кстати, я бы на месте этих яров не изобретал велосипед, а просто незаметно вызывал бы make.

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


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

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

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

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

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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