SII писал(а):
Я исхожу и буду исходить из простого и чёткого определения: компьютер, супер он или не супер -- нечто единое, неделимое
Ну как единое и неделимое?? Вот один из первых суперкомпьютеров – Cray-1 имел векторную архитектуру (SIMD), понятно, что поток команд был один, но что такое вектор? Скажем, у Cray-1 размер вектора был до 64 элементов, у его предшественников, компьютеров CDC – меньше. Если мы отнимем или добавим один векторный элемент, перестанет он быть суперкомпьютером? А если мы сделаем только один "векторный" элемент? Сама по себе векторизация возможна только при наличии внутренней возможности алгоритма на распараллеливание. Уже Cray X-MP был первым по-настоящему мультипроцессорным и фактически представлял собой два Cray-1 с общей памятью. А в чём принципиальная разница между следующими случаями:
- векторные вычисления;
- гипертрединг;
- несколько ядер на кристалле;
- несколько процессоров на плате;
- несколько процессорных блоков, объединённых быстрой шиной.
Вероятно, наиболее радикальное изменение только между первыми двумя строками. А в плане способности дробить числа ВСЕ эти возможности подразумевают неизбежное распараллеливание потоков. Поэтому абсолютная неделимость применительно к суперкомпьютерам любой, даже самой ранней по времени категории - невозможная абстракция.
SII писал(а):
Каждый компьютер в кластере является именно отдельным самодостаточным элементом, способным всю работу, возлагаемую на кластер, выполнить полностью самостоятельно -- просто время при этом окажется несколько другим.
Если взять любой мультипроцессорный суперкомпьютер, он так или иначе будет делим. Это неизбежно. Неделимость больше логическая - весь ресурс
логически представляет собой единое целое. На это я и указывал, когда писал, что нельзя взять 1000 компов, каждый со своим линуксом и объявить их единым суперкомпьютером. Пользователю они должны представляться
одним компьютером со специфическими функциями. Но
физически это действительно может быть стойка с кучей воткнутых рэков, соединённых вместе.
418ImATeapot писал(а):
Извините, если ошибусь, но по-моему кластеры на то и кластеры, что память у них раздельная.
SII писал(а):
NUMA же, насколько помню, означает единое поле физической памяти, аппаратно (без всякой программной поддержки, кроме предварительной настройки режимов контроллеров памяти и т.п.) ... В то же время в кластерах, даже если виртуальная память с точки зрения прикладных программ едина, физически она разделена, и процессор одного компьютера кластера не имеет возможности аппаратно обратиться к памяти другого компьютера кластера.
Во-первых, разные уровни виртуализации ресурса опять же стирают грань между физической и программной поддержкой. Так, ОС может крутиться под VMWare. Будут ли ресурсы, предоставляемые гостевой системе являться физическими или программными? И с чьей точки зрения? Во-вторых, многие суперкомпьютерные платформы используют шину, связывающую блоки в кластеры, именно для
аппаратной виртуализации общей памяти посредством коммуникационной шины.
Именно для этого и требуется low latency для средств коммуникации, о чём я и говорил при сравнении InfiniBand с гигабитным эзернетом. Другой пример, даже внутри одного системного блока - буферы PCIe устройств (например, память видеокарты) логически представлены областью в адресном пространстве ЦПУ. Однако
физически доступ к этой памяти происходит через
серийную да ещё и общую шину PCIe и никого это не смущает. Так что давайте не искать чёткие границы раздела там, где их уже не существует и не ругать друг друга за то, что кто-то их провёл не там, где их ожидает другой. Это касается и суперкомпьютеров и виртуализации памяти в кластере.