OSDev

для всех
Текущее время: 27 апр 2024, 13:26

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Разделяемая память по сети
СообщениеДобавлено: 24 май 2012, 13:03 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Yoda писал(а):
Тээкс. Холиварчик. Давайте немного помирю SII и Pavia.


Миротворцы, как известно, блаженны :)

Цитата:
Суперкомпьютер сейчас - довольно расплывчатое понятие и на протяжении десятков лет определение этого понятия является мощным источников холиваров.


Вот поскольку с терминами обращаются как попало, и возникают всякие идиотизмы, и в конце концов термины вообще перестают что-либо обозначать. Что такое микроядерная ось в современном "бытовом" понимании? Да что угодно! Вон, имеются авторы, которые туда Винду записывают. То же самое с суперкомпьютерами. Я исхожу и буду исходить из простого и чёткого определения: компьютер, супер он или не супер -- нечто единое, неделимое (кроме как на запчасти) и самодостаточное для выполнения полезной работы. Каждый компьютер в кластере является именно отдельным самодостаточным элементом, способным всю работу, возлагаемую на кластер, выполнить полностью самостоятельно -- просто время при этом окажется несколько другим.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделяемая память по сети
СообщениеДобавлено: 24 май 2012, 13:13 
Аватара пользователя

Зарегистрирован: 20 апр 2011, 10:54
Сообщения: 145
Yoda писал(а):
кластеры обычно имеют общую виртуальную память с архитектурой NUMA.

Извините, если ошибусь, но по-моему кластеры на то и кластеры, что память у них раздельная.

_________________
Found a CPU. LAPIC ID: 00


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделяемая память по сети
СообщениеДобавлено: 24 май 2012, 15:05 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
418ImATeapot писал(а):
Yoda писал(а):
кластеры обычно имеют общую виртуальную память с архитектурой NUMA.

Извините, если ошибусь, но по-моему кластеры на то и кластеры, что память у них раздельная.


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

NUMA же, насколько помню, означает единое поле физической памяти, аппаратно (без всякой программной поддержки, кроме предварительной настройки режимов контроллеров памяти и т.п.) доступное для всех процессоров вычислительной системы без вмешательства программных средств. Простейшая такая система состоит из двух процессоров, двух контроллеров памяти и двух модулей памяти: процессор А прямо связан с контроллером памяти А, к которому подключён модуль памяти А, а процессор Б -- с контроллером Б и памятью Б. В том случае, если процессор А желает обратиться к ячейке памяти, физически расположенной в модуле А, то этот запрос выполняется контроллером А, что происходит быстро, поскольку процессор А прямо связан с контроллером А. Если же процессор А пытается обратиться к ячейке из памяти Б, то он не имеет прямого аппаратного доступа к контроллеру памяти Б и поэтому аппаратно (подчеркну это) отправляет запрос процессору Б, а уже тот обращается к своему контроллеру памяти и через него -- к модулю памяти Б. С точки зрения программиста нет никакой принципиальной разницы, происходит ли обращение к памяти А или к памяти Б, поскольку все запросы "разруливаются" на уровне аппаратуры; вся разница заключается лишь в разной скорости доступа (обращение к "своей" памяти происходит быстрее, чем к "чужой").

В то же время в кластерах, даже если виртуальная память с точки зрения прикладных программ едина, физически она разделена, и процессор одного компьютера кластера не имеет возможности аппаратно обратиться к памяти другого компьютера кластера. При необходимости такого обращения в игру вступает ОС, которая обеспечивает пересылку необходимой информации из памяти одного компьютера в память другого, используя для этого, например, Ethernet. Понятно, что эффективность подобных доступов в тысячи раз хуже, чем обращения к памяти в архитектуре NUMA.

Кстати говоря, и NUMA, и кластеры появились отнюдь не недавно, как может показаться. Во всяком случае, в 1970-х IBMовские мэйнфреймы могли объединяться в многомашинные вычислительные комплексы (кластеры по-нынешнему), причём каждая машина могла содержать несколько процессоров как с физически единым полем памяти (как современные обычные ПК), так и с памятью, тесно связанной с тем или иным процессором, но адресуемой всеми процессорами машины (т.е. NUMA). Современные мэйнфреймы сами по себе всегда являются многопроцессорными машинами с архитектурой NUMA: когда процессоров десятки или даже сотни, а памяти -- терабайты, сделать физическую SMP уже как минимум неэффективно, а то и невозможно; она таковой является лишь логически.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделяемая память по сети
СообщениеДобавлено: 24 май 2012, 16:00 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
SII писал(а):
Я исхожу и буду исходить из простого и чёткого определения: компьютер, супер он или не супер -- нечто единое, неделимое

Ну как единое и неделимое?? Вот один из первых суперкомпьютеров – Cray-1 имел векторную архитектуру (SIMD), понятно, что поток команд был один, но что такое вектор? Скажем, у Cray-1 размер вектора был до 64 элементов, у его предшественников, компьютеров CDC – меньше. Если мы отнимем или добавим один векторный элемент, перестанет он быть суперкомпьютером? А если мы сделаем только один "векторный" элемент? Сама по себе векторизация возможна только при наличии внутренней возможности алгоритма на распараллеливание. Уже Cray X-MP был первым по-настоящему мультипроцессорным и фактически представлял собой два Cray-1 с общей памятью. А в чём принципиальная разница между следующими случаями:
- векторные вычисления;
- гипертрединг;
- несколько ядер на кристалле;
- несколько процессоров на плате;
- несколько процессорных блоков, объединённых быстрой шиной.
Вероятно, наиболее радикальное изменение только между первыми двумя строками. А в плане способности дробить числа ВСЕ эти возможности подразумевают неизбежное распараллеливание потоков. Поэтому абсолютная неделимость применительно к суперкомпьютерам любой, даже самой ранней по времени категории - невозможная абстракция.

SII писал(а):
Каждый компьютер в кластере является именно отдельным самодостаточным элементом, способным всю работу, возлагаемую на кластер, выполнить полностью самостоятельно -- просто время при этом окажется несколько другим.

Если взять любой мультипроцессорный суперкомпьютер, он так или иначе будет делим. Это неизбежно. Неделимость больше логическая - весь ресурс логически представляет собой единое целое. На это я и указывал, когда писал, что нельзя взять 1000 компов, каждый со своим линуксом и объявить их единым суперкомпьютером. Пользователю они должны представляться одним компьютером со специфическими функциями. Но физически это действительно может быть стойка с кучей воткнутых рэков, соединённых вместе.

418ImATeapot писал(а):
Извините, если ошибусь, но по-моему кластеры на то и кластеры, что память у них раздельная.

SII писал(а):
NUMA же, насколько помню, означает единое поле физической памяти, аппаратно (без всякой программной поддержки, кроме предварительной настройки режимов контроллеров памяти и т.п.) ... В то же время в кластерах, даже если виртуальная память с точки зрения прикладных программ едина, физически она разделена, и процессор одного компьютера кластера не имеет возможности аппаратно обратиться к памяти другого компьютера кластера.

Во-первых, разные уровни виртуализации ресурса опять же стирают грань между физической и программной поддержкой. Так, ОС может крутиться под VMWare. Будут ли ресурсы, предоставляемые гостевой системе являться физическими или программными? И с чьей точки зрения? Во-вторых, многие суперкомпьютерные платформы используют шину, связывающую блоки в кластеры, именно для аппаратной виртуализации общей памяти посредством коммуникационной шины.
Изображение
Именно для этого и требуется low latency для средств коммуникации, о чём я и говорил при сравнении InfiniBand с гигабитным эзернетом. Другой пример, даже внутри одного системного блока - буферы PCIe устройств (например, память видеокарты) логически представлены областью в адресном пространстве ЦПУ. Однако физически доступ к этой памяти происходит через серийную да ещё и общую шину PCIe и никого это не смущает. Так что давайте не искать чёткие границы раздела там, где их уже не существует и не ругать друг друга за то, что кто-то их провёл не там, где их ожидает другой. Это касается и суперкомпьютеров и виртуализации памяти в кластере.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделяемая память по сети
СообщениеДобавлено: 24 май 2012, 17:51 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Yoda, единый, неделимый и самодостаточный -- последний пункт очень важен. Одно голое АЛУ, которое, собственно, и выполняет операции, не является самодостаточным, а соответственно, его нельзя просто взять и изъять из процессора. А вот компьютер в целом можно изъять из кластера, и он всё равно сможет выполнять работу. В общем, кластер состоит из отдельных компьютеров, каждый из которых может работать и сам по себе, а вот отдельный компьютер нельзя разложить на компоненты так, чтобы они сами по себе работали дальше.

Векторные вычисления (тем, чем страдал Крей, и то, что реализуется командами ММХ, ССЕ и им подобными) -- это просто особые команды, являющиеся частью системы команд. Они не оказывают "неодолимого" влияния на внутреннее устройство (микроархитектуру) процессора. Например, векторные команды могут быть реализованы на процессоре с всего одним скалярным АЛУ, просто такую команду он будет выполнять несколько тактов, последовательно обрабатывая части вектора, а значит, и высокой производительности не достигнет (хотя, вероятно, всё равно будет быстрей компьютера, не имеющего векторных команд вообще -- хотя бы за счёт того, что одну векторную команду нужно только один раз выбрать из памяти и декодировать, а её замена потребует нескольких обычных команд, каждую из которых надо будет выбирать и декодировать). Однако с точки зрения программиста такой "скалярный" процессор всё равно будет "векторным", ведь программист может использовать векторные команды.

Что касается остальных Ваших пунктов про параллельные вычисления (гипертрединг) и т.д., то это разные физические реализации независимых логических процессоров, и с векторными вычислениями за счёт соответствующей системы команд это абсолютно никак не связано, что Вы и отметили, сказав про наиболее радикальное изменение. Многопроцессорность и набор команд SIMD -- действительно принципиально разные вещи, относящиеся друг другу, как тёплое к мягкому, т.е. вообще никак. Для программиста есть принципиальная разница между многопроцессорной системой и векторной (имеющей SIMD-команды) системой, но нет никакой принципиальной разницы между любым из видов многопроцессорных систем. В этом плане современный сервер с несколькими физически отдельными кристаллами процессоров, на каждом из которых содержится несколько ядер, каждое из которых обеспечивает гипертрединг, ничем принципиально не отличается от многопроцессорного мэйнфрейма конца 1960-х -- просто там каждый процессор целый шкаф занимал, да и всё. Техника программирования и т.п. принципиально никаких изменений не имеет, меняются лишь технические нюансы (как, например, процессоры в такой системе обмениваются сообщениями -- для ИА-32 это делается через АПИК, в других архитектурах применяются технически иные способы).

И Вы неправы относительно того, что "в плане способности дробить числа ВСЕ эти возможности подразумевают неизбежное распараллеливание потоков". При использовании SIMD-инструкций нет распараллеливания потоков команд, есть только распараллеливание по данным. Соответственно, и программа пишется совершенно не так, как для многопроцессорной системы. Так что Крей -- это именно один единый и неделимый суперкомпьютер; из его процессора нельзя было выдернуть какой-то блок и заставить работать сам по себе. То же самое касается и современного ПК: физически "выпилить" ядро из кристалла процессора можно, но оно работать не будет, поскольку ему ещё нужен контроллер памяти, контроллеры шин, устройства, память и т.д. -- т.е. то, что в комплексе и составляет компьютер. А кластер, повторюсь, -- это группа самодостаточных компьютеров, и из него можно изымать отдельные части, каждая из которых может использоваться полностью самостоятельно. Вот это и является принципиальной разницей между отдельным (супер)компьютером и кластером.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разделяемая память по сети
СообщениеДобавлено: 24 май 2012, 19:03 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
SII писал(а):
единый, неделимый и самодостаточный -- последний пункт очень важен.

Самодостаточность, как и остальные пункты, также в значительной степени является абстракцией. Скажем, можно ли назвать самодостаточной бездисковую рабочую станцию? Или, например, у нас в чернильнице был компьютерный зал, где стояла куча терминалов для доступа к многопользовательскому компу Labtam. Но, вообще говоря, графическим терминалом можно было баловаться и отдельно, подавая ему команды на его графическом языке.

SII писал(а):
Векторные вычисления (тем, чем страдал Крей, и то, что реализуется командами ММХ, ССЕ и им подобными) -- это просто особые команды, являющиеся частью системы команд. Они не оказывают "неодолимого" влияния на внутреннее устройство (микроархитектуру) процессора.

О нееееет! Если что-то является частью системы команд и имеет конкретное аппаратное воплощение, это вполне может быть (и как правило является) элементом архитектуры.

SII писал(а):
Например, векторные команды могут быть реализованы на процессоре с всего одним скалярным АЛУ, просто такую команду он будет выполнять несколько тактов ... Однако с точки зрения программиста такой "скалярный" процессор всё равно будет "векторным", ведь программист может использовать векторные команды.

Правильно. А ещё я могу программно сэмулировать Cray и запустить эмулятор на i8086 :D. И что это доказывает? Суть векторной ISA (в смысле архитектуры) заключается в том, что такую ISA можно аппаратно заставить работать быстрей за счёт распараллеливания работы с данными.

SII писал(а):
параллельные вычисления ... с векторными вычислениями за счёт соответствующей системы команд абсолютно никак не связаны

Это не связано на уровне реализации. Но на уровне возможности распараллеливания алгоритма ещё как связано. Векторные вычисления возможны ТОЛЬКО там, где возможна независимая обработка массивов данных. В этом смысле мультипроцессорные системы логически эквивалентны векторным.

SII писал(а):
И Вы неправы относительно того, что "в плане способности дробить числа ВСЕ эти возможности подразумевают неизбежное распараллеливание потоков". При использовании SIMD-инструкций нет распараллеливания потоков команд, есть только распараллеливание по данным. Соответственно, и программа пишется совершенно не так, как для многопроцессорной системы.

Это исключительно вопрос реализации соответствующего алгоритма. Если работа с данными не распараллеливается совсем, то в Крее также будет работать только одно АЛУ из 64 и вся его векторность идёт лесом.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB