Многоядероность, многопроцессорность
От: snaphold  
Дата: 27.04.13 07:09
Оценка:
Привет
Что то не до конца понимаю разницу.
Насколько я понимаю сейчас разница только в том, что в случае многопроцессорности, кэш процессора не будет делиться и это плюс многопроцессорности.
Есть еще разница?

Вопрос 2. Какие плюсы/минусы имеет Многоядероность и многопроцессорность с точки зрения разработки?
Re: Многоядероность, многопроцессорность
От: Doom100500 Израиль  
Дата: 28.04.13 05:46
Оценка:
Здравствуйте, snaphold, Вы писали:

S>Привет

S>Что то не до конца понимаю разницу.
S>Насколько я понимаю сейчас разница только в том, что в случае многопроцессорности, кэш процессора не будет делиться и это плюс многопроцессорности.
S>Есть еще разница?

S>Вопрос 2. Какие плюсы/минусы имеет Многоядероность и многопроцессорность с точки зрения разработки?


По-моему, эти понятия к программированию не имеют вообще никакого отношения. Как там делится кеш между процессорами или ядрами — вопрос только производителя железа.
Спасибо за внимание
Re[2]: Многоядероность, многопроцессорность
От: dilmah США  
Дата: 28.04.13 05:56
Оценка: 1 (1)
S>>Вопрос 2. Какие плюсы/минусы имеет Многоядероность и многопроцессорность с точки зрения разработки?

D>По-моему, эти понятия к программированию не имеют вообще никакого отношения. Как там делится кеш между процессорами или ядрами — вопрос только производителя железа.


ну почему? для разработчика какой-нибудь высокопроизводительной математической библиотеки это может означать разницу на каком уровне нет смысла паралеллить операции.
Re[3]: Многоядероность, многопроцессорность
От: Doom100500 Израиль  
Дата: 28.04.13 06:01
Оценка:
Здравствуйте, dilmah, Вы писали:


D>ну почему? для разработчика какой-нибудь высокопроизводительной математической библиотеки это может означать разницу на каком уровне нет смысла паралеллить операции.


Походу эти разработчики пишут только под конкретное железо. Тогда опять — же проблема больше железячная, из мира Embedded, а не програмисткая, где важнее гибкость и минимум зависимостей, в том числе и от железа. Не?
Спасибо за внимание
Re[4]: Многоядероность, многопроцессорность
От: dilmah США  
Дата: 28.04.13 06:14
Оценка:
D>>ну почему? для разработчика какой-нибудь высокопроизводительной математической библиотеки это может означать разницу на каком уровне нет смысла паралеллить операции.

D>Походу эти разработчики пишут только под конкретное железо. Тогда опять — же проблема больше железячная, из мира Embedded, а не програмисткая, где важнее гибкость и минимум зависимостей, в том числе и от железа. Не?


люди разрабатывавшие IPP library все-таки скорее программисты, чем железячники
Re[5]: Многоядероность, многопроцессорность
От: Doom100500 Израиль  
Дата: 28.04.13 06:21
Оценка:
Здравствуйте, dilmah, Вы писали:

D>>>ну почему? для разработчика какой-нибудь высокопроизводительной математической библиотеки это может означать разницу на каком уровне нет смысла паралеллить операции.


D>>Походу эти разработчики пишут только под конкретное железо. Тогда опять — же проблема больше железячная, из мира Embedded, а не програмисткая, где важнее гибкость и минимум зависимостей, в том числе и от железа. Не?


D>люди разрабатывавшие IPP library все-таки скорее программисты, чем железячники


И что, есть разные сборки под разные материнские платы? Кстати, IPP — интеловская либа вроде.
Спасибо за внимание
Re: Многоядероность, многопроцессорность
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 28.04.13 06:27
Оценка: 2 (1) +1
Здравствуйте, snaphold, Вы писали:

S>Привет

S>Что то не до конца понимаю разницу.
S>Насколько я понимаю сейчас разница только в том, что в случае многопроцессорности, кэш процессора не будет делиться и это плюс многопроцессорности.

Есть реализации с раздельным кэшом (более того, L1 предпочитают делать персональным для каждого ядра).

Но многопроцессорность требует поддержки в чипсете, а сейчас это сильно дороже, чем в процессоре. Поэтому её очень мало. Предпочитают держать один процессор, но расширять его общение с системой.

S>Есть еще разница?

S>Вопрос 2. Какие плюсы/минусы имеет Многоядероность и многопроцессорность с точки зрения разработки?

Плюсы — что можно в случае нескольких задач, каждая из которых критична к использованию кэшей, разделить их по ядрам (процессорам). Минусы — это всё параллельность, которую сложнее реализовывать, чем последовательное исполнение.

Но, учитывая, что даже для дешёвых домашних систем процы в основном по 2 ядра, первый ряд граблей уже пройден.
The God is real, unless declared integer.
Re[6]: Многоядероность, многопроцессорность
От: dilmah США  
Дата: 28.04.13 06:36
Оценка:
D>>люди разрабатывавшие IPP library все-таки скорее программисты, чем железячники

D>И что, есть разные сборки под разные материнские платы?


не разные сборки, а в зависимости от процессоров и кэшей:
(1) принимаются решения какую ветвь кода выполнять
(2) настраиваются константы и может выполняется та или иная ветвь

D> Кстати, IPP — интеловская либа вроде.


Apple, (ex-)SUN и IBM это тоже железячные компании в своем ядре. Ты хочешь сказать, что там мало программистов? Или может быть виртуальную машину Java не программисты делали?
Re: Многоядероность, многопроцессорность
От: LaptevVV Россия  
Дата: 28.04.13 06:48
Оценка:
Здравствуйте, snaphold, Вы писали:

S>Привет

S>Что то не до конца понимаю разницу.
S>Насколько я понимаю сейчас разница только в том, что в случае многопроцессорности, кэш процессора не будет делиться и это плюс многопроцессорности.
S>Есть еще разница?
S>Вопрос 2. Какие плюсы/минусы имеет Многоядероность и многопроцессорность с точки зрения разработки?
Вот в этой книжке: http://www.ozon.ru/context/detail/id/5137578/
прекрасно все изложено.
Много чего практически интересного о параллельном программировании тоже приводится.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Многоядероность, многопроцессорность
От: snaphold  
Дата: 28.04.13 07:49
Оценка:
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, snaphold, Вы писали:


S>>Привет

S>>Что то не до конца понимаю разницу.
S>>Насколько я понимаю сейчас разница только в том, что в случае многопроцессорности, кэш процессора не будет делиться и это плюс многопроцессорности.

N>Есть реализации с раздельным кэшом (более того, L1 предпочитают делать персональным для каждого ядра).


N>Но многопроцессорность требует поддержки в чипсете, а сейчас это сильно дороже, чем в процессоре. Поэтому её очень мало. Предпочитают держать один процессор, но расширять его общение с системой.



т.е. разницы между многопроцессорностью и многоядерностью почти нет, кроме кэша?
Re[2]: Многоядероность, многопроцессорность
От: snaphold  
Дата: 28.04.13 07:50
Оценка:
Здравствуйте, Doom100500, Вы писали:

D>Здравствуйте, snaphold, Вы писали:


S>>Привет

S>>Что то не до конца понимаю разницу.
S>>Насколько я понимаю сейчас разница только в том, что в случае многопроцессорности, кэш процессора не будет делиться и это плюс многопроцессорности.
S>>Есть еще разница?

S>>Вопрос 2. Какие плюсы/минусы имеет Многоядероность и многопроцессорность с точки зрения разработки?


D>По-моему, эти понятия к программированию не имеют вообще никакого отношения.


Хорошо. Поставлю вопрос так: какая разница между многопроцессорностью и многоядерностью с точки зрения программирования?
Re[3]: Многоядероность, многопроцессорность
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 28.04.13 07:55
Оценка:
Здравствуйте, snaphold, Вы писали:

S>т.е. разницы между многопроцессорностью и многоядерностью почти нет, кроме кэша?


Для прикладного софта — именно так.
Для системного — иное управление, отличия политики шедулинга.
The God is real, unless declared integer.
Re[4]: Многоядероность, многопроцессорность
От: snaphold  
Дата: 28.04.13 08:44
Оценка:
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, snaphold, Вы писали:


S>>т.е. разницы между многопроцессорностью и многоядерностью почти нет, кроме кэша?


N>Для прикладного софта — именно так.


а разве у многопроцессорности нет своей шины с перефирией? т.е. в многоядерности, по моим представлениям всё может упираться в то, что шина будет тормозом
а вот в случае многопроцессорности задачи реально параллеляться.

зы. хочу понять просто что лучше

N>Для системного — иное управление, отличия политики шедулинга.


а для чайников можно объянсить
Re[5]: Многоядероность, многопроцессорность
От: Doom100500 Израиль  
Дата: 28.04.13 09:02
Оценка: +1 -1
Здравствуйте, snaphold, Вы писали:

N>>Для системного — иное управление, отличия политики шедулинга.


S>а для чайников можно объянсить


Я думаю, что имелось в виду следующее:

Для прикладных программистов уже существуют разработанные примитивы для распаралеривания задач в самом языке ( например asyn/await в C# ) или библиотеках ( упомянутая выше ipp ). Прикладной программист просто будет оперировать тасками, создавать их, ожидать, раздавать приоритеты ( может быть ). И не задумываться ни о кеше, ни о шине ни, даже о количестве процессоров, и уж , тем более, ни о том разные это процессоры или разные ядра.

Ну а если ты хочешь предоставить эти примитивы, то тогда уже интересуйся железными технологиями и предусмотри все возможные варианты.

Сдаётся, мне вопрос не филосовский. На высоком уровне программисту не надо знать ничего о внутреннем устройстве железа. Низкий уровень тоже к философии программирования не имеет отношения.
Спасибо за внимание
Re: Многоядероность, многопроцессорность
От: watch-maker  
Дата: 28.04.13 09:42
Оценка: 83 (4)
Здравствуйте, snaphold, Вы писали:

S>Привет

S>Что то не до конца понимаю разницу.
S>Насколько я понимаю сейчас разница только в том, что в случае многопроцессорности, кэш процессора не будет делиться и это плюс многопроцессорности.
S>Есть еще разница?
Современный многопроцессорный компьютер вероятно построен по NUMA архитектуре. Это и даёт главную особенность таких компьютеров — доступ к большей части памяти нелокальный, то есть осуществляется заметно медленнее чем к собственной памяти процессора (пример как это выглядит).

S>Вопрос 2. Какие плюсы/минусы имеет Многоядероность и многопроцессорность с точки зрения разработки?

Для прикладного программирования поддерживать многопроцессорность сложнее. Сложность не в правильности работы программы — любая параллельная программа без проблем запустится и на NUMA-компьютере. Сложность заключается в сохранении скорости работы — если некоторые потоки будут запущенны на удалённых NUMA-узлах, то они будут работать медленнее при попытке доступа к уже нелокальной для них памяти. То есть для многопроцессорного компьютера мало распараллелить работу над задачей, нужно ещё организовать потоки таким образом, чтобы они как можно реже обращались к другим NUMA-узлам.
В случае одного многоядерного процессора всё проще — память однородна. Главное в чужой кэш не писать, а читать быстро можно откуда угодно.

Собственно, дальше проблему "многоядероность vs. многопроцессорность" можешь рассматривать как "SMP vs. NUMA". Конечно, раньше SMP были многопроцессорными, и этот термин придуман не для многоядерности, но если смотреть на современные процессоры, то будет примерно так.
Re[2]: Многоядероность, многопроцессорность
От: snaphold  
Дата: 28.04.13 12:03
Оценка:
Здравствуйте, watch-maker, Вы писали:

WM>Здравствуйте, snaphold, Вы писали:



WM>В случае одного многоядерного процессора всё проще — память однородна. Главное в чужой кэш не писать, а читать быстро можно откуда угодно.


а если рассматривать 2 процессора по 2 ядра каждый на одной материнке?
в чем будет разница по сравнению с одним 4-х ядерным процессором?
Re[3]: Многоядероность, многопроцессорность
От: Doom100500 Израиль  
Дата: 28.04.13 12:10
Оценка:
Здравствуйте, snaphold, Вы писали:

S>Здравствуйте, watch-maker, Вы писали:


WM>>Здравствуйте, snaphold, Вы писали:



WM>>В случае одного многоядерного процессора всё проще — память однородна. Главное в чужой кэш не писать, а читать быстро можно откуда угодно.


S>а если рассматривать 2 процессора по 2 ядра каждый на одной материнке?

S>в чем будет разница по сравнению с одним 4-х ядерным процессором?

И опять хочу высказать по этому поводу своё скромное мнение.
Это зависит полностью от производителя данной конкретной материнки. Сегодня мы знаем о NUMA, завтра может появиться что-то ещё. Разруливать это должны драйвера.
Спасибо за внимание
Re[3]: Многоядероность, многопроцессорность
От: rfq  
Дата: 28.04.13 12:16
Оценка:
Здравствуйте, snaphold, Вы писали:
S>Хорошо. Поставлю вопрос так: какая разница между многопроцессорностью и многоядерностью с точки зрения программирования?

В первом приближении никакой разницы. Каждое ядро считается отдельным процессором. Так, в java вызов Runtime.availableProcessors() дает число ядер.
В следующем приближении можно заметить, что у ядер общий кэш и это снижает производительность. С этим можно бороться с помощью Processor_affinity.
Re[2]: Многоядероность, многопроцессорность
От: ML380 Земля  
Дата: 28.04.13 12:17
Оценка: 17 (2)
Здравствуйте, Doom100500, Вы писали:

D>По-моему, эти понятия к программированию не имеют вообще никакого отношения. Как там делится кеш между процессорами или ядрами — вопрос только производителя железа.


тынц
Re[3]: Многоядероность, многопроцессорность
От: Doom100500 Израиль  
Дата: 28.04.13 12:36
Оценка: +1
Здравствуйте, ML380, Вы писали:

ML>Здравствуйте, Doom100500, Вы писали:


D>>По-моему, эти понятия к программированию не имеют вообще никакого отношения. Как там делится кеш между процессорами или ядрами — вопрос только производителя железа.


ML>тынц


А кто с этим спорит? Если топик в философии, то я озвучиваю свои хотелки. А мне, решающему, в большинстве случаев, прикладные задачи хотелось бы, чтобы мой new , вызванный в контексте определённого потока пришёл в VirtualAlloc, в случае с NUMA. Я, как прикладной программист не хочу устанавливать AffinityMask. Создать группу различных тасков, вызвать их параллельно и получить уведомление об их завершении. Я хочу писать parallel_foreach и не заниматься разбором сколько у меня сейчас процессоров и на какой шине лежит его память. И даже не хочу задумываться о том, как мне придётся менять свой код, когда появится многопроцессорная материнка без NUMA, а с чем-нибудь другим, новым и передовым. Интуитивный интерфейс для моей прикладной задачи должен предоставить разработчик этого нового и передового. А мне только останется вызвать new.
Спасибо за внимание
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.