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

Параллельная компиляция - общий случай

Одним из изделий наша компания занимается довольно много лет. Отрелизено уже с полсотни разных модификаций, ПО портировано под четыре разные платформы. Для общности используем утилиту nmake - компилируем одно и то же разными строчными C-компиляторами (BC/IAR/GCC/VC). Объемы исходников накопились относительно немаленькие, и как следствие - относительно большое время компиляции.

Есть желание это время уменьшить за счет параллельной компиляции - большую часть исходных файлов можно компилировать одновременно и независимо. Может быть кто-нибудь сможет посоветовать многопоточный аналог make/nmake? Чтобы утилита умела одновременно запускать несколько процессов одновременно? Еще интересно было бы услышать про распределенные варианты (over LAN), если такое применяется.

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


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

....Еще интересно было бы услышать про распределенные варианты (over LAN), если такое применяется.

 

 

Очень давно делал одну задачу. Выполняла кучу математики. Поиск некого значения путём лобового перебора. Для ускорения достижения результата - пришлось немного подшаманить скрипты загрузки рабочих станций на предприятии. Ну и грамотный драйв под досик - чтоб только при простое тачки пытался загружать её проц. На файловом серваке - сервер, раздавал задания клиентам. Быстро результаты получились однака :)

 

Теоретически возможно.

Риски - настройка станции, грамотное детектирование простоя станции.

Если всё официально и мона смело забирать квант времени у станции - то проблем вообще не вижу. Под форточками думаю покатит не плохо.

 

с уважением

(круглый)

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


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

Есть желание это время уменьшить за счет параллельной компиляции - большую часть исходных файлов можно компилировать одновременно и независимо. Может быть кто-нибудь сможет посоветовать многопоточный аналог make/nmake? Чтобы утилита умела одновременно запускать несколько процессов одновременно? Еще интересно было бы услышать про распределенные варианты (over LAN), если такое применяется.

GNU make, вроде, умеет запускать тулзы в разных процессах.

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


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

GNU make, вроде, умеет запускать тулзы в разных процессах.

Угу, спасибо. Сейчас посмотрел make из последнего цигвина - вроде есть ключик -j[N]. Кажись - самое оно.

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


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

Посмотрите еще на http://ccache.samba.org/ - очень помогает, когда объем кода большой.

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


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

GNU make, вроде, умеет запускать тулзы в разных процессах.

Угу, спасибо. Сейчас посмотрел make из последнего цигвина - вроде есть ключик -j[N]. Кажись - самое оно.

Если кому любопытно - есть первые результаты компиляции большого куска кода.

Исходные: Athlon X2 3800, WinXP_SP1 + Cygwin + IAR 4.12 for AVR + GNU make 3.80

58 секунд для "make -j1", загрузка процессоров 50-52%

31 секунда для "make -j2", загрузка процессоров практически 100%

О так - определенно есть смысл покупать X2 или PD :)

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


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

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

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

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

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

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

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

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

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

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