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

 
 
 
Reply to this topicStart new topic
> Параллельная компиляция - общий случай, Компиляция С-проектов на многопроцессорных системах
VslavX
сообщение Apr 25 2006, 13:06
Сообщение #1


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Одним из изделий наша компания занимается довольно много лет. Отрелизено уже с полсотни разных модификаций, ПО портировано под четыре разные платформы. Для общности используем утилиту nmake - компилируем одно и то же разными строчными C-компиляторами (BC/IAR/GCC/VC). Объемы исходников накопились относительно немаленькие, и как следствие - относительно большое время компиляции.
Есть желание это время уменьшить за счет параллельной компиляции - большую часть исходных файлов можно компилировать одновременно и независимо. Может быть кто-нибудь сможет посоветовать многопоточный аналог make/nmake? Чтобы утилита умела одновременно запускать несколько процессов одновременно? Еще интересно было бы услышать про распределенные варианты (over LAN), если такое применяется.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Apr 25 2006, 13:37
Сообщение #2


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(VslavX @ Apr 25 2006, 17:06) *
....Еще интересно было бы услышать про распределенные варианты (over LAN), если такое применяется.



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

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

с уважением
(круглый)
Go to the top of the page
 
+Quote Post
Harbour
сообщение Apr 25 2006, 23:57
Сообщение #3


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



for gcc you may use distcc
Go to the top of the page
 
+Quote Post
dxp
сообщение Apr 26 2006, 05:32
Сообщение #4


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



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

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


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
VslavX
сообщение Apr 26 2006, 08:13
Сообщение #5


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(dxp @ Apr 26 2006, 08:32) *
GNU make, вроде, умеет запускать тулзы в разных процессах.

Угу, спасибо. Сейчас посмотрел make из последнего цигвина - вроде есть ключик -j[N]. Кажись - самое оно.
Go to the top of the page
 
+Quote Post
makc
сообщение Apr 26 2006, 09:02
Сообщение #6


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



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


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
VslavX
сообщение May 3 2006, 17:14
Сообщение #7


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(VslavX @ Apr 26 2006, 11:13) *
Цитата(dxp @ Apr 26 2006, 08:32) *

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 smile.gif
Go to the top of the page
 
+Quote Post

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

 


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


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