Каждый день, имея дело с персональными компьютерами, мы стали забывать, для
чего они разрабатывались изначально. Первыми целями были военные и научные
области, всегда сопряжённые со сложными вычислениями. Потому речь пойдёт о
суперкомпьютерных вычислениях. Самые первые устройства для счёта были разработаны для решения задач, которые было сложно или невозможно решить обычными средствами. И с развитием этих устройств росла и потребность в их производительности, что стимулирует их дальнейший рост.
Родоначальниками машин для высокопроизводительных вычислений были системы, использовавшие специальные процессоры, сложные коммуникационные решения, обладавшие большим энергопотреблением и стоимостью. Стоимость обуславливалась уникальностью устанавливаемого оборудования, в первую очередь процессоров.
С переходом на архитектуру MPP (Massive parallel processing) - массовую параллельную обработку, где использовалось большое число серийно выпускаемых процессоров, удалось заметно снизить затраты на создание суперкомпьютеров, поскольку не использовались уже разработанные технологии. Основная стоимость и сложность теперь заключалась в использовании специальных коммуникационных решений для связи этих процессоров. У каждой фирмы были свои разработки и порой создавались под конкретное решение. Несмотря на эффективность, высокая стоимость заставила задуматься об альтернативных решениях.
Такой альтернативой стал проект "Беовульф", созданный в 94-м году. Его суть заключалась в создании вычислительного комплекса (кластера) на основе обычных компьютеров, объединённых недорогой сетью, с распространённой и доступной операционной системой (обычно Linux). Преимущества очевидны - все компоненты легко можно купить и собрать, отсутствие специализированных решений и компонент значительно снизило затраты. Минусом является более низкая скорость обмена данными между узлами, ввиду использования обычной компьютерной сети.
Реализация проекта Беовульф привела к возникновению большого числа последователей, ибо она заложила основу для значительно более низких по стоимости высокопроизводительных вычислений. Примером может стать система Avalon, которая была собрана в 98-м году на базе процессоров Alpha 21164A с частотой 533МГц. Изначально кластер содержал 68 процессоров, затем был расширен до 140. В том же году разработчики выступили на конференции Supercomputing'98, где получили первое место в номинации "Лучшее соотношение цена/производительность" ("1998 Gordon Bell Price/Performance Prize") за доклад "Avalon: An Alpha/Linux Cluster Achieves 10 Gflops for $150k" (Авалон: кластер Alpha/Linux достигает 10 ГФлопс за 150 тыс. дол.). В расширенном варианте его стоимость составляла порядка 313 тысяч долларов, а производительность была на уровне суперкомпьютера 64-мя процессорами SGI Origon 2000, чья стоимость была порядка 1,8 миллионов долларов. Кластер занял 114 место в 12-м издании top500, с производительностью (в тесте LINPACK) 44.7Гфлопс.
В 2000 году в top500 (15-й выпуск) количество кластерных решений составляло 2.2%. В 2004 в 23 выпуске - 57,8%, в нынешнем, 30-м выпуске - 81,2%. Динамика по годам представлена на графике -
Другой график характеризует распределение суммарной мощности систем по различным архитектурам:
Кластер под микроскопом
Являются ли кластеры панацеей для высокопроизводительных вычислений или нет? Необходимо учитывать, что их слабое место - скорость коммуникации между узлами. Чтобы дальше анализировать сильные и слабые места необходимо рассмотреть, какими же основными скоростными параметрами характеризуются суперкомпьютеры и вообще вычислительные комплексы.
Семейство процессора определяет его микроархитектуру - количество команд за такт и наличие поддержки расширенных наборов команд, эффективность его шины, особенности работы в многопроцессорных (SMP) режимах. Также определяет наличие алгоритмов предсказывания, вроде ветвления и предварительной выборки данных. Иными словами, тип процессора упрощённо отвечает за эффективность каждого такта, когда производятся операции.
Рабочая частота указывает на то, какое число тактов (периодов) пройдёт за единицу времени. Чем выше частота, тем больше будет тактов пройдено и команд обработано. Сравнение допустимо только в рамках одного семейства и с поправками (без поправок только при прочих равных).
Количество ядер/потоков показывает, сколько обрабатывающих устройств находится в одном процессоре. Многоядерный процессор является аналогом многопроцессорной системы, ужатой до одного чипа. Ядра делят шину так же, как это делают процессоры на некоторых платформах.
Количество процессоров показывает, сколько процессоров установлено в одном узле. Чаще всего соответствует тому, сколько процессоров можно разместить на материнской плате, поскольку именно она и определяет возможные характеристики узла. Но существуют решения вроде Iwill DK8-HTX, которые объединяют две четырёхпроцессорные платы в один восьмипроцессорный узел с помощью Hypertransport, о котором писалось в предыдущем номере. Связь с помощью HTX идентична тому, как процессоры на одной плате связываются между собой.
Тип процессора. Все десктопные процессоры являются скалярными, то есть работающими с числами. Векторные же процессоры обладают большей скоростью обработки данных, удобно представимых в векторном виде, например, матриц. Примерами векторных процессоров являются графические процессоры и ядра SPE процессора Cell.
Кэш-памятью является небольшого объёма быстрая память, служащая для кэширования (буферизации) запросов в оперативную память. Так, если часто используются одни и те же данные, то они помещаются в кэш и скорость доступа к ним повышается в разы. Они стоят в т.н. иерархии памяти между регистрами процессора и оперативной памятью. Как известно, программа при запуске загружается в оперативную память. Затем, в процессе работы часть её может быть помещена в кэш для ускорения операций ввода-вывода. Кэш также имеет иерархию - от первого уровня далее. Первый имеет наивысшую скорость и наименьший объём, поскольку находится близко к процессору и связан с ним быстрой шиной. Далее идёт более медленный и больший по объёму кэш второго уровня (сейчас он располагается в процессоре). Иногда существует и третий. Кэш третьего уровня встретил вторую молодость в четырёх- и более ядерных процессорах, поскольку выросла необходимость синхронизации данных (когерентности) кэшей ядер. Именно объём кэша, чаще всего второго уровня (поскольку первый меняется редко) и различен в разных линейках процессоров, не говоря о семействах.
Архитектура подсистемы определяет, является ли контроллер памяти встроенным в процессор и каким образом и насколько эффективно они доставляются. Так, встроенный контроллер процессоров AMD даст сто очков вперёд чипсетам Intel, а настольные чипсеты Intel по эффективности доступа к памяти (соотношению теоретической и практической скоростей) легко обгонят откровенно неудачные серверные чипсеты серии 5000/5400 и более старых. Даже в абсолютных цифрах последние слабы, несмотря на четырёхканальный контроллер памяти.
Объём памяти интуитивно понятен и для узлов суперкомпьютера он применяется с приставкой гига.
Тип памяти - чаще всего это DDR2, FB-DIMM (Full bufferized DIMM). Скоро FB-DIMM перейдёт на использование чипов DDR3, после чего и AMD может перейти на третье поколение DDR.
Пропускная способность - измеряется в ГБ/с или МБ/с. Если в стандартную формулу расчёта пропускной способности: ширина(в битах)*частота(в герцах)/8 (для перевода бит в байты) подставить 64 бита одного модуля памяти, то выйдет, что пропускная способность одного модуля составляет 8*частота эффективная. Однако это для одного модуля. Большинство чипсетов обладают двухканальным (а Intel и четырёх!) доступом и при наличии двух (четырёх) планок памяти теоретическая пропускная способность также растёт вчетверо. На деле трудно ожидать прироста даже в 10% в реальных приложениях.
Латентность - задержки на чтение данных и их запись. Связаны напрямую с таймингами.
Скорость, латентность сети является аналогом оных для памяти. А скорость в работе по протоколу MPI - примером реальной скорости, в отличие от "бумажной" теоретической.
Альтернативные направления
Популяризация кластерных суперкомпьютеров показала, что существуют более доступные по цене альтернативы, в некоторых приложениях ничуть не уступающие классическим суперкомпьютерам (MPP). Изменилась ли ситуация сейчас, по прошествии большого (по масштабам компьютерного рынка) промежутка времени? Какие сейчас существуют решения, позволяющие производить вычисления с высокой скоростью?
суперкомпьютеры MPP
кластерные суперкомпьютеры
GRID технологии
суперкомпьютеры на процессорах Cell
GPGPU
распределённые вычисления
Рассмотрим преимущества и недостатки каждого варианта.
Главное преимущество классических суперкомпьютеров - это высокая скорость связи между узлами. Этим обуславливается меньшее время выполнения задач, требующих активного обмена данными между узлами системы. Главный их недостаток - стоимость. Именно она заставляет задуматься о решениях меньшей стоимости, которые смогли бы сделать высокопроизводительные решения доступнее. Ещё один недостаток - их мощность упирается в ограничения по тепловыделению и энергопотреблению. Это заставляет компании разрабатывать новые модели, более экономичные.
Кластерные суперкомпьютеры решают вопрос стоимости, используя только компоненты общего назначения вместо специализированных решений. Они заметно понизили среднюю стоимость одного гигафлопа. Самый большой недостаток по сравнению с суперкомпьютерами на MPP архитектуре - невысокая скорость связи и большая латентность коммуникационной подсистемы. Но популяризация кластеров подстегнула компании к разработке высокоскоростных интерфейсов. При теоретической скорости Fast Ethernet в 12,5МБ/с и латентности 170мкс, в рамках протокола MPI скорость составляла лишь 6-7МБ/с. Gigabit Ethernet, появившийся позже и являющийся условно бесплатным (по причине интеграции контроллера во все современные материнские платы), имел в десять раз большую теоретическую скорость (125МБ/c), но по причине всё ещё высокой латентности и в силу закона Амдала, скорость реальная составляет 45МБ/с. Часто используемый ныне Infiniband имеет скорость 1ГБ/с и латентность порядка 7мкс. При работе по протоколу MPI достигает скорости 800МБ/с.
GRID-технологии призваны объединять мощность узлов, сходно тому, как это делают в кластерах, но иным способом. Этот термин успел объединить в себе слишком многое - как программную, так и архитектурную, логическую и целевую сторону реализации. Одним из объектов разработки GRID является объединение корпоративных сетей и суперкомпьютеров сотрудничающих организаций в единый вычислительный комплекс. Примером такой технологии был проект T-grid. Он подразумевал под собой возможность объединения узлов с разными операционными системами и контролем ресурсов. Тут же появились основные недостатки - использовалась виртуальная машина, своего рода прокладка между ОС и виртуальной ОС узла. То есть был компьютер, на котором стояла виртуальная машина, в которой была запущена другая ОС. Вот она и являлась узлом, а не весь компьютер. Преимущества в виде возможности управлять удалённо машиной и ограничивать выделяемые сети ресурсы резко тормозятся значительным падением скорости. Если сравнивать работу под виртуальной машиной и при установке той же ОС на сам компьютер, то разница будет в разы. Конкретизация термина GRID, вероятно, невозможно и наиболее точно он отражает лишь суть - "ячейка" означает элемент большого комплекса. Необходимо провести анализ (разбиение целого на составляющие) и выделения в независимый класс компонентов нынешней системы. А сама технология, во всяком случае, с T-grid реализацией, не кажется выигрышной.
Приставки нам помогут
В современных суперкомпьютерах и настольных решениях повсеместно используются скалярные процессоры. Множество же задач может быть представлено в векторном виде. Раньше часто суперкомпьютеры были основаны на следующей концепции - несколько скалярных систем поставляют данные для одного векторного процессора, который их обрабатывает. Так было с Cray. Сейчас есть возможность передавать данные с высокой скоростью, и такой потребности нет. Наоборот, есть недостаток вычислительной мощности. Часто компании создают специализированные процессоры, но они редко получают широкое распространение, в первую очередь по причине слабой вычислительной мощности. Первым процессором, который смог изменить эту ситуацию стал Cell. Совместная разработка Sony, IBM и Toshiba, которая предназначалась в качестве сердца игровой приставки Sony Playstation 3, она привнесла новый принцип создания продуктов. Новая концепция подразумевала соединение с устройствами, оснащёнными таким же процессором для распределения нагрузки. Для этого он снабжён высокоскоростным интерфейсом FlexIO с теоретической скоростью 62,4ГБ/с. Примером была приставка с процессором Cell, телевизор и DVD рекордер. После игры человек захотел записать повтор на диск. Во время этого, процессор приставки и телевизора помогают рекордеру записать диск, после чего возвращаются к расчётам, связанным с игрой, усиливая мощность встроенного в приставку процессора. Сам процессор представляет собой два ядра архитектуры Power (PPE или Power Processor Element), применяемого в процессорах PowerPC и 8 векторных ядер, называемых SPE (Synergistic Processing Element), работающие на частоте 3.2ГГц. Такие особенности, как наличие у каждого из векторных ядер своей памяти вместо кэша, позволяет программисту управлять ими по своему желанию, что невозможно с кэш памятью. 8 векторных ядер предназначены для просчёта графики, являющейся в большинстве своём векторной, с чем легко справляются, благодаря невиданной мощности. Процессорный элемент Power может выполнять 8 инструкций с одинарной точностью (32 бита) и, работая на частоте 3.2ГГц, имеет пиковую скорость в 25,6 Гфлоп, или 2 операции двойной точности, с итоговой скоростью 6,4 Гфлоп каждый. Вторая часть это SPE. Они могут выполнять 4 инструкции с плавающей запятой одинарной точности, достигая пика в 25,6Гфлоп каждый. При выполнении задач с одинарной точностью скорость значительно падает, всё же оставаясь на уровне в 14 Гфлоп. Но с одинарной точностью выходит порядка 204,8. Итого получается, что пиковая производительность одного процессора - 256 Гфлоп при работе с одинарной точностью и 124,8 Гфлоп с двойной. В тесте с двойной точностью Linpack команда разработчиков продемонстрировала скорость порядка 100Гфлоп.
Сразу после появления продукта, Sony объявила, что применением в игровых приставках дело не ограничится, и они будут использованы в разнообразных сферах. Учитывая его мощность, в это легко верится. Компания IBM объявила о выпуске Blade серверов на их основе (высокопроизводительных и компактных систем). Рекомендовалось их встраивать в серверы, дабы разгрузить их, выполняя специфичные расчёты. В пример приводились игровые серверы, где высока доля векторных вычислений и вычислений с плавающей точкой.
Один астрофизик, Гаурав Ханна (Gaurav Khanna) даже использует их, полностью отказавшись от суперкомпьютеров. Он занимается проблемой гравитационных волн и моделированием поглощения звезды сверхмассивной чёрной дырой. Ранее он использовал для расчётов суперкомпьютеры, арендуя их на деньги с грантов, но затем, обратил внимание на альтернативу. Написав программу, оптимизированную под архитектуру Cell, он запустил её на 8 объединённых в сеть приставках Playstation 3. По его утверждениям, замена является практически равноценной и ему теперь не нужно прибегать к использованию суперкомпьютеров, заменив 200 узлов на 8 приставок. Цена аренды одного сеанса суперкомпьютера составляла порядка 5000 долларов, цена же восьми приставок - 3200. Компания Sony всячески поощряет разностороннее использование своих приставок, особенно для научных расчётов. Несколько дистрибутивов Linux уже поддерживают данные процессоры, потому переход достаточно прозрачен. Основная проблема этого варианта - то, что при работе с числами с двойной точностью снижается скорость работы (хотя остаётся на весьма приличном уровне), и что необходимо писать программы иначе, с учётом архитектурных особенностей процессора и с использованием векторных расчётов. Существует ещё недостаток в виде отсутствия у процессора каких-либо механизмов по предсказанию переходов и ветвлений, но её предложено решать с помощью компилятора, заранее разрабатывая программу, с инструкциями подготовки к ветвлению. Это достаточно большая проблема, но как показал Гаурав Канна, проблема решаемая.
GPGPU, General purposed Computation Using Graphics Hardware - вычисления общего назначения с использованием графического аппаратного обеспечения. Развитие индустрии игровой привело к развитию, как процессоров, так и видеокарт. Современные видеокарты уже сопоставимы по производительности с процессорами, а последние поколения уже имеют превосходство. Логично родилась мысль о задействовании этих мощностей и проведении расчётов на графических процессорах. Графический процессор обладает массивом простых векторных конвейеров, которые могут совершать простые операции с векторами, но с огромной скоростью. Так, производительность ускорителя AMD FireStream 9170 (на базе всем известного чипа RV670) составляет порядка 500GFLOPS. Такова же, примерно, производительность G80. Обе компании представили технологии, NVIDIA - GPU Computing (CUDA), ATI - Stream Computing. Суть одна - создание платформы для вычислений на процессорах. Последние процессоры, в частности R600 и G80 обладают уже скалярными ALU процессорами. Моделирование физических явлений - одна из областей, где карты показывают себя во всей красе. Главный недостаток - отсутствие двойной точности вычислений преодолен с выходом нового поколения ускорителей. Остались другие - узкая направленность - отсутствие кэша и алгоритмов предсказывания так же как у Cell перекладывает заботу об этих вещах на головы программистов. С другой стороны, NVIDIA включила в свои драйвера поддержку CUDA, потому дополнительно устанавливать клиенту ничего не понадобится. Большой объём памяти и высокая скорость работы с ней делает карту весьма ценной для ряда задач, подобно моделированию, когда необходимо провести солидные расчёты с большим объёмом данных. Разработчики уже начали создавать приложения, могущие в повседневной работе помочь центральному процессору. К чему это приведёт, и не останется ли это всё красивой сказкой, покажет время.
Распределенные вычисления
Распределённые вычисления - весьма перспективное направление. Ранее сводилось к работе конкретной программы по схеме клиент-сервер, когда сервер выдаёт задание, а клиенты-компьютеры его считают. Однако отличие от GRID в отсутствии необходимости пользоваться виртуальными машинами - клиент работает с той ОС, под которой запущен. Это увеличивает скорость работы, хотя часто требует настройки. Сейчас большую популярность набирает движение энтузиастов - людей, которые не хотят, чтобы их компьютер просто выделял тепло. Известно, что компьютер используется, в среднем, на 10%. Остальное - простой. Потому появилась идея учёным, которые занимаются исследованиями, создать клиент и предложить желающим запустить его на своих машинах. Самым популярным проектом такого рода стал SETI@Home - проект поиска неземных цивилизаций путём попытки дешифрации сигналов со спутника. Программа работала в качестве скринсейвера и не тормозила работы. Со всё нарастающим числом безлимитных подключений, данная помощь является по-настоящему бесплатной. Платить за трафик согласятся не все, но когда он дармовый, отношение меняется - считает и почему бы и нет? Так, учёные из Стэндфордского университета сейчас изучают моделирование сворачивания (folding) белков. Это поможет понять, как ведут себя белки в разных условиях и приблизиться к победе над раком. Название проекта - Folding@Home, сокращённо F@H. Главная особенность распределённых вычислений - чаще всего скорость обмена данными клиент-сервер очень низка, потому лучше всего решаются задачи, которые можно пересылать редко и малыми объёмами, скажем, раз в несколько суток. Очень часто различные варианты смешиваются. Так, распределённые вычисления являются самой широкой группой вычислений. После совместной работы выпущен клиент Folding@Home, задействующий мощь видеокарт ATI, чуть позже вышла версия под PS3 и его Cell процессоры. Последнее резко увеличило скорость расчётов и именно активная пропаганда Sony и подключение приставок, позволило преодолеть порог мощности этого виртуального суперкомпьютера в 1 петафлоп, что пока недостижимо для суперкомпьютеров. Мощность первого в списке Top500 суперкомпьютера Blue Gene составляет 478 гигафлоп, то есть меньше половины! Это говорит о невероятном потенциале распределённых вычислений. Проект Folding@Home признан самым успешным по количеству задействованных в нём мощностей. Число процессоров давно перевалила 100тыс, но ведь этот проект не единственный, в отличие от Blue Gene такой мощности.
Клиента можно запускать в виде заставки на рабочий стол, визуализирующей процесс вычислений
Подводя итог, хочется порассуждать на тему будущего суперкомпьютерных решений. Скорее всего, будут внедряться все решения, в зависимости от решаемых задач. Типичные процессорные системы будут уже объёмными - это будут не десятки узлов, а например, сеть из связки узлов. Связка будет представлять собой до десятка узлов, объединённых высокоскоростным и обладающим низкой латентностью интерфейсом, по типу Hypertransport HTX. Он может создать один логический узел из нескольких физических. То есть получим мощный узел, обладающий быстрой транспортной сетью внутри себя. К нему будут подключаться такие же узлы. Это позволит лучше дробить задание, выдавая куски с большим числом операций ввода-вывода одному логическому узлу. Под расчёты будут применяться специализированные решения, вроде GPGPU или Cell, когда основные процессоры, выполняя программу с переходами и запросами в кэш, вычисления поручают сопроцессорам, возможно, на отдельных платах. GPGPU и Cell по свойствам похожи, потому конфронтация неизбежна. Высокие вычислительные способности и сложности с кэшированием и выборкой данных обособляют их от многих сфер применения x86 процессоров, да и заменой стать им не могут.
Распределённые вычисления являются наиболее перспективной областью - подсчитано, что мощность всех компьютеров на два порядка превосходит мощность суперкомпьютеров. К тому же они отличаются всеядностью, одинаково хорошо работая на кластерах со скоростной транспортной сетью, так и более дешёвых. Также как на видеокартах, простых процессорах. Вероятно, именно проект Folding@Home изменит отношение к распределённым вычислениям, несмотря на существование SETI@Home. Изучение белков и попытка нахождения в щелчках радиотелескопов что-то разумное разделены практическим эффектом одного и отсутствие у второго.
Знаете ли Вы, что cогласно релятивистской мифологии "гравитационное линзирование - это физическое явление, связанное с отклонением лучей света в поле тяжести. Гравитационные линзы обясняют образование кратных изображений одного и того же астрономического объекта (квазаров, галактик), когда на луч зрения от источника к наблюдателю попадает другая галактика или скопление галактик (собственно линза). В некоторых изображениях происходит усиление яркости оригинального источника." (Релятивисты приводят примеры искажения изображений галактик в качестве подтверждения ОТО - воздействия гравитации на свет) При этом они забывают, что поле действия эффекта ОТО - это малые углы вблизи поверхности звезд, где на самом деле этот эффект не наблюдается (затменные двойные). Разница в шкалах явлений реального искажения изображений галактик и мифического отклонения вблизи звезд - 1011 раз. Приведу аналогию. Можно говорить о воздействии поверхностного натяжения на форму капель, но нельзя серьезно говорить о силе поверхностного натяжения, как о причине океанских приливов. Эфирная физика находит ответ на наблюдаемое явление искажения изображений галактик. Это результат нагрева эфира вблизи галактик, изменения его плотности и, следовательно, изменения скорости света на галактических расстояниях вследствие преломления света в эфире различной плотности. Подтверждением термической природы искажения изображений галактик является прямая связь этого искажения с радиоизлучением пространства, то есть эфира в этом месте, смещение спектра CMB (космическое микроволновое излучение) в данном направлении в высокочастотную область. Подробнее читайте в FAQ по эфирной физике.