Российские распределенные вычисления на платформе BOINC
Форум участников распределённых вычислений.

Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline AlexA  
#1 Оставлено : 15 апреля 2015 г. 9:42:20(UTC)
AlexA


Статус: Administration

Медали: Переводчику: За помощь в создании сайта

Группы: Editors, Member, Administration, Russia Team Group, Moderators
Зарегистрирован: 02.10.2007(UTC)
Сообщений: 6,140
Мужчина
Российская Федерация
Откуда: "Russia Team"

Сказал «Спасибо»: 1250 раз
Поблагодарили: 1516 раз в 838 постах
Вот заинтересовал какой вопрос:
Вот у нас в КОЛОБКЕ будет 2 процессора. В каждом встроенный контроллер памяти, для каждого стоит допустим по 8 ГБ.
Как они (процессоры) используют эту память? любому ядру доступна вся память из массива 16ГБ? или только те 8, которые "прилеплены" к данному процессору?

Думаю, что суть вопроса понятна.
Offline evatutin  
#2 Оставлено : 15 апреля 2015 г. 10:46:46(UTC)
evatutin


Статус: Старожил

Медали: Первооткрывателю: Результат в проекте SAT@homeРазработчику: За организацию проекта Gerasim@home

Группы: Editors, Member
Зарегистрирован: 08.06.2010(UTC)
Сообщений: 3,640
Откуда: Russia, Kursk

Сказал(а) «Спасибо»: 1023 раз
Поблагодарили: 1827 раз в 886 постах
По классике, есть 2 типа систем: симметричные (SMP, Symmetric Multi Processing), они же с общей памятью, и NUMA (None Uniform Memory Access), они же с распределенной памятью. В первых системах память считается общей для всех ядер/процессоров, что упрощает программирование, но ухудшает масштабирование с ростом числа процессоров. Во вторых с масштабированием лучше, однако со стороны софта нужна специальная поддержка, т.к. доступ к "своей" память будет более быстрым, чем к "чужой". Насколько мне известно, Intel подобные сервера делает как SMP, соответственно память будет общая и работающая приблизительно с одинаковой скоростью (точнее, латентностью и ПСП) в независимости от привязки вычислительного потока к ядру. Если ошибаюсь, прошу меня поправить smile, хотя в принципе это можно проверить программно... 199

kvt.kurskstu team founder
Gerasim@home scientist
My numbers are 5056994653507584 and 1835082219864832081920. Why not? smile
thanks 1 пользователь поблагодарил evatutin за этот пост.
AlexA оставлено 15.04.2015(UTC)
Offline evatutin  
#3 Оставлено : 15 апреля 2015 г. 11:06:35(UTC)
evatutin


Статус: Старожил

Медали: Первооткрывателю: Результат в проекте SAT@homeРазработчику: За организацию проекта Gerasim@home

Группы: Editors, Member
Зарегистрирован: 08.06.2010(UTC)
Сообщений: 3,640
Откуда: Russia, Kursk

Сказал(а) «Спасибо»: 1023 раз
Поблагодарили: 1827 раз в 886 постах
http://www.ixbt.com/cpu/rmma-numa.shtml — теория, которую можно бы и подтвердить тестами

kvt.kurskstu team founder
Gerasim@home scientist
My numbers are 5056994653507584 and 1835082219864832081920. Why not? smile
Offline Disel  
#4 Оставлено : 15 апреля 2015 г. 14:34:02(UTC)
Disel


Статус: Старожил

Медали: Первооткрывателю: Нахождение пар ОДЛК в RakeSearch! Донор: За финансовую помощь сайту

Группы: Member, Russia Team Group
Зарегистрирован: 08.07.2013(UTC)
Сообщений: 3,603
Мужчина
Российская Федерация

Сказал «Спасибо»: 520 раз
Поблагодарили: 427 раз в 327 постах
А для "обычных компов" с одним процессором и несколькими ядрами - режим который устанавливается в Bios как Dual Channel (2-х канальный режим работы памяти) к NUMA какое-то отношение имеет или это что-то это совсем другое?
Ubuntu Linux 18.04 LTS - 64 bit / Boinc 7.9.3(х64) / Core 2 DUO E6300 1.8 Ггц / GeForce GT-630
Offline PinkFloyd  
#5 Оставлено : 15 апреля 2015 г. 14:45:10(UTC)
PinkFloyd


Статус: Давно уж тут

Группы: Member, Russia Team Group
Зарегистрирован: 24.03.2015(UTC)
Сообщений: 434
Мужчина
Российская Федерация
Откуда: Оренбург

Сказал «Спасибо»: 152 раз
Поблагодарили: 53 раз в 43 постах
Если чем-то поможет. Схема отсюда:

Схема.

И видео на Ютубе. Дяденька из Intel рассказывает о работе связки процессоров Xeon E5 и чипсета C600 Series, в том числе и про память упоминает.
Offline evatutin  
#6 Оставлено : 15 апреля 2015 г. 15:51:47(UTC)
evatutin


Статус: Старожил

Медали: Первооткрывателю: Результат в проекте SAT@homeРазработчику: За организацию проекта Gerasim@home

Группы: Editors, Member
Зарегистрирован: 08.06.2010(UTC)
Сообщений: 3,640
Откуда: Russia, Kursk

Сказал(а) «Спасибо»: 1023 раз
Поблагодарили: 1827 раз в 886 постах
Disel написал:
А для "обычных компов" с одним процессором и несколькими ядрами - режим который устанавливается в Bios как Dual Channel (2-х канальный режим работы памяти) к NUMA какое-то отношение имеет или это что-то это совсем другое?


Нет, это другое. Тут дело в том, что память, вроде бы адресуемая по байтам (так учат в начале обучения программированию smile ), на самом деле обменивается с процессором большими порциями (например, chunk'ами по 128 байт кратно размеру шин и кэш-линий). Если вы поставите память в 2 канала и у вас умный контроллер памяти, он размажет эти chunk'и по двум (или более) планкам памяти и они будут работать параллельно, теоретически удваивая ПСП при примерно той же латентности. Никакой "своей" и "чужой" памяти тут нет, SMP в чистом виде. А в составе планок еще есть банки, которые тоже теоретически могут работать параллельно-конвейерно 199 (подробнее можно посмотреть у К. Касперски)

PinkFloyd
Что то я засомневался, судя по вашим картинкам и видюхе тут как раз NUMA. Действительно надо бы это проверить опытным путем... Если у BOINC-задач есть привязка процессов к ядрам, то волноваться не стоит, все будет работать эффективно и на SMP, а на NUMA'е. А вот если нет и вычислительный поток прыгает по ядрам по очереди, тогда ой Не получается

kvt.kurskstu team founder
Gerasim@home scientist
My numbers are 5056994653507584 and 1835082219864832081920. Why not? smile
thanks 1 пользователь поблагодарил evatutin за этот пост.
Disel оставлено 15.04.2015(UTC)
Offline PinkFloyd  
#7 Оставлено : 15 апреля 2015 г. 15:56:40(UTC)
PinkFloyd


Статус: Давно уж тут

Группы: Member, Russia Team Group
Зарегистрирован: 24.03.2015(UTC)
Сообщений: 434
Мужчина
Российская Федерация
Откуда: Оренбург

Сказал «Спасибо»: 152 раз
Поблагодарили: 53 раз в 43 постах
Автор: evatutin Перейти к цитате
Что то я засомневался, судя по вашим картинкам и видюхе тут как раз NUMA. Действительно надо бы это проверить опытным путем...


Я вроде бы попробовал почитать как работает эта самая шина QPI, но что-то так толком и не понял.
Offline hoarfrost  
#8 Оставлено : 15 апреля 2015 г. 23:11:25(UTC)
hoarfrost


Статус: Старожил

Медали: Переводчику: За помощь в создании сайтаРазработчику: За разработку приложения CluBORunДонор: За финансовую помощь сайту

Группы: Editors, Member, Administration, Moderator Crystal Dream, Moderators, Crystal Dream Group
Зарегистрирован: 05.10.2007(UTC)
Сообщений: 8,418
Мужчина
Откуда: Crystal Dream

Сказал «Спасибо»: 1254 раз
Поблагодарили: 1698 раз в 1079 постах
В случае существующих Intel (да и AMD, по моему):

1. SMP - это 1 процессор с несколькими ядрами. Память принадлежит только одному CPU (другого - просто нет).
2. Двупроцессорные (и более) системы - это NUMA. Просто доступ к памяти другого CPU не такой медленный, как был был при NUMA из разных серверов.
UserPostedImage
Offline hoarfrost  
#9 Оставлено : 15 апреля 2015 г. 23:21:00(UTC)
hoarfrost


Статус: Старожил

Медали: Переводчику: За помощь в создании сайтаРазработчику: За разработку приложения CluBORunДонор: За финансовую помощь сайту

Группы: Editors, Member, Administration, Moderator Crystal Dream, Moderators, Crystal Dream Group
Зарегистрирован: 05.10.2007(UTC)
Сообщений: 8,418
Мужчина
Откуда: Crystal Dream

Сказал «Спасибо»: 1254 раз
Поблагодарили: 1698 раз в 1079 постах
Автор: AlexA Перейти к цитате
Вот заинтересовал какой вопрос:
Вот у нас в КОЛОБКЕ будет 2 процессора. В каждом встроенный контроллер памяти, для каждого стоит допустим по 8 ГБ.
Как они (процессоры) используют эту память? любому ядру доступна вся память из массива 16ГБ? или только те 8, которые "прилеплены" к данному процессору?

Думаю, что суть вопроса понятна.

1. Каждый поток будет видеть всю память;
2. Доступ к памяти, принадлежащей тому CPU, на ядре которого исполняется поток - будет побыстрее.
UserPostedImage
thanks 1 пользователь поблагодарил hoarfrost за этот пост.
AlexA оставлено 16.04.2015(UTC)
Offline Почеширыч  
#10 Оставлено : 15 апреля 2015 г. 23:36:39(UTC)
Почеширыч


Статус: Новичок

Группы: Member
Зарегистрирован: 03.04.2015(UTC)
Сообщений: 19
Российская Федерация

Поблагодарили: 3 раз в 1 постах
Если в BIOS включены Node Interleaving и Bank Interleaving, то любое ядро может обратиться к любому банку памяти независимо от того, к какому процессору "приписан" модуль.
thanks 3 пользователей поблагодарили Почеширыч за этот пост.
hoarfrost оставлено 16.04.2015(UTC), AlexA оставлено 16.04.2015(UTC), PinkFloyd оставлено 16.04.2015(UTC)
Offline evatutin  
#11 Оставлено : 16 апреля 2015 г. 23:58:40(UTC)
evatutin


Статус: Старожил

Медали: Первооткрывателю: Результат в проекте SAT@homeРазработчику: За организацию проекта Gerasim@home

Группы: Editors, Member
Зарегистрирован: 08.06.2010(UTC)
Сообщений: 3,640
Откуда: Russia, Kursk

Сказал(а) «Спасибо»: 1023 раз
Поблагодарили: 1827 раз в 886 постах
В общем добрался до померять, интересно же smile.

http://evatutin.narod.ru/evatutin_rbt_test.7z

Программа очень простенькая, написана практически на коленке за полчаса, делает следующее: выполняется привязка потока к ядру 0, выделяется 100 МБ в памяти в виде массива целых чисел по 4 байта размером, инициализируется случайными числами. Дальше выполняется замер на коде, который находит сумму чисел в массиве — очень простая в вычислительном плане операция, упирающаяся в скорость последовательного чтения из RAM (из-за большого размера блока в кэш он не влезает, правда тут процессору может помочь Hardware prefetch, но временно про него забудем). Для повышения точности замер повторяется 100 раз, результаты усредняются, так меньше погрешность. Перед каждым замером производится привязка потока к одному из ядер (по очереди), затем делается тестовый запуск, измеряется время и на его основе ПСП на чтение. На запись то же самое, только массив вместо суммирования заполняется числами 0, 1, ... Если во время работы открыть диспетчер задач и убрать другую нагрузку с проца, то видно, как ядра грузятся работой по очереди. Если ядро находится в том же проце, с которого был выделен блок, то поток обращается к "своей памяти", если в другом — то к "чужой" (в точности как у покойного Д. Беседина в статье по ссылке выше), если мы работаем на NUMA'е, результаты будут отличаться. Если на SMP — не будут. Дальше можно мерять и делать выводы, мои результаты на 4 машинах:



Вывод простой: на Core i7 никакой зависимости от привязки не наблюдается, как и должно быть. На машинах с парой Xeon'ов зависимость есть, но она в пределах 3—4% разницы в ПСП, что в общем-то можно не учитывать, считая, что система самая что ни на есть SMP 199, хотя на самом деле это и не так

PS. Прошу не кидать в меня тухлыми помидорами, программа самая примитивная, ее данные с другими тестами сравнивать смысла нет, их результат будет выше, однако общую картину она позволяет понять — разницы в разы нет. Если код будет более вычислительный, а не искусственно работающий только с памятью, разница от привязки будет еще меньше. Если будет категорическое несогласие с результатам (например, тут получилось, что на запись ПСП больше, чем на чтение — side effect smile ), сделаю как положено — выровняю массив, перепишу цикл под SIMD-команды на асме (чтобы нивелировать участие шины) и сделаю раскрутку, только это уже не полчаса, а их надо еще найти... Весь вечер чистил пыль из системника, т.к. кулер на проце стал застревать и останавливаться, а проц — перегреваться и сбоить Не получается Еще вовремя заметил... Непроизводительная потеря времени smile

kvt.kurskstu team founder
Gerasim@home scientist
My numbers are 5056994653507584 and 1835082219864832081920. Why not? smile
thanks 2 пользователей поблагодарили evatutin за этот пост.
hoarfrost оставлено 17.04.2015(UTC), PinkFloyd оставлено 17.04.2015(UTC)
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.

Boinc.ru theme. Boinc.ru
Форум YAF 2.1.1 | YAF © 2003-2018, Yet Another Forum.NET
Страница сгенерирована за 0.246 секунды.