Создайте свой собственный суперкомпьютер
Термин «суперкомпьютер» является расплывчатым. Официального определения не существует, поэтому ничто не мешает вам применять этот термин к настольному ПК, ноутбуку или цифровым часам.
Однако в широком смысле это относится к компьютеру, который намного мощнее, чем типичное оборудование того времени.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
Первым суперкомпьютером часто называют CDC 6600, разработанный в начале 1960-х годов Сеймуром Креем (чье имя стало синонимом суперкомпьютера). Он мог выполнять вычисления со скоростью около одного мегафлопса, то есть одного миллиона арифметических операций с плавающей запятой в секунду; примерно в пять раз выше производительности современного мэйнфрейма, такого как IBM 7090.
Сегодня этот термин может относиться к такой системе, как компьютер Fujitsu K, производительность которого превышает десять петафлопс – ошеломляющее десятимиллиардное увеличение по сравнению с оригинальным Cray. Эти две системы не совсем сопоставимы, поскольку две системы выполняли совершенно разные задачи, но ясно, что мы имеем дело с огромным количеством энергии.
Суперкомпьютерные приложения
Возможно, не сразу очевидно, что кому-то может понадобиться при такой невероятной вычислительной мощности, но существует ряд реальных задач, которые поглотят все вычислительные ресурсы, которые вы можете им предоставить.
Возможно, не сразу очевидно, что кому-то может понадобиться при такой невероятной вычислительной мощности, но существует ряд реальных задач, которые поглотят все вычислительные ресурсы, которые вы можете им бросить.
В научных исследованиях суперкомпьютеры можно использовать для тестирования гидродинамических или аэродинамических моделей без необходимости создания дорогостоящих прототипов. В ЦЕРНе суперкомпьютеры проводят симулированные субатомные эксперименты.
Сейсмологи используют ресурсы суперкомпьютеров для моделирования последствий землетрясений, а метеорологи могут быстро анализировать большие объемы данных датчиков, чтобы предсказать, как будут развиваться погодные системы.
Суперкомпьютеры также находятся на переднем крае новых технологий. Например, создание компьютерного интерфейса, реагирующего на естественный язык, является чрезвычайно сложной задачей из-за огромного разнообразия звуков, ситуаций и нюансов, которые необходимо понимать; чем больше лошадиных сил можно будет бросить на решение проблемы, тем лучше.
Заглядывая в будущее, суперкомпьютеры могут даже стать Святым Граалем искусственного интеллекта. Еще в 1997 году суперкомпьютер Deep Blue компании IBM одержал печальную победу над гроссмейстером Гарри Каспаровым в шахматы.
Суперкомпьютер Blue Gene/P, представленный в 2007 году, использовался для моделирования нейронной сети из 1,6 миллиарда нейронов, что составляет около 1% сложности человеческого мозга.
А в прошлом году компьютер Watson от IBM появился в качестве участника американского игрового шоу Jeopardy!, победив двух бывших чемпионов и уехав – ну, чтобы их увезли – с призом в миллион долларов.
Суперкомпьютер дома
Лишь немногие из нас руководят сейсмологическими лабораториями или разрабатывают системы искусственного интеллекта. Однако суперкомпьютеры также могут использоваться внутри страны. Если вы начинающий режиссер, вы знаете, что создание сложных кинематографических эффектов требует большого количества интенсивных вычислений. Чем больше мощности у вас под рукой, тем быстрее вы сможете опробовать что-то и увидеть результаты.
Приложив достаточно усилий, вы могли бы воссоздать фотореалистичную анимацию из фильмов «Трансформеры» Майкла Бэя или фантастически детализированный мир «Валл-И», но даже для такой специализированной студии, как Pixar, рендеринг каждого кадра анимационного фильма может занять около 90 минут.
Точная цифра варьируется от кадра к кадру в зависимости от его сложности и доступных вычислительных ресурсов. Многие сцены рендерятся одновременно – иначе на рендеринг такого фильма, как «История игрушек 3», ушли бы десятилетия.
Имея высокопроизводительный компьютер, вы также сможете сыграть важную роль в распределенных проектах, таких как SETI@home и Folding@home. Эти проекты позволяют вам использовать компьютер для анализа необработанных данных в достойных целях; в случае с SETI@home вы будете анализировать данные радиотелескопа на предмет возможных доказательств внеземной жизни.
Проект Folding@home использует вычислительные мощности добровольцев для проведения смоделированных экспериментов, которые могут привести к лечению таких заболеваний, как болезни Альцгеймера и Паркинсона (проект получил свое название от того, как белки «сворачиваются» в формы, которые вызывают различное поведение в человеческом организме).
Вам не нужен суперкомпьютер, чтобы участвовать в этих распределенных усилиях, но, пожертвовав исключительное количество вычислительной мощности, вы можете внести значительный вклад в исследования, которые могут изменить мир. Также есть преимущество, которое можно получить, продвигаясь вверх по спискам лидеров самых активных участников: чем быстрее ваш компьютер, тем выше вы окажетесь.
Создание собственного суперкомпьютера
Если вам хочется заниматься такими задачами, вы можете купить специальное оборудование от HP или Cray, но это, вероятно, излишне и, безусловно, будет чрезвычайно дорого.
Например, Cray XK6 может выполнять более одного петафлопа, но цены на системы начинаются примерно с полумиллиона долларов. Более дешевый вариант — использовать хостинговые вычислительные службы, такие как Microsoft Azure или Amazon Web Services.
Но если вы хотите владеть собственным оборудованием и контролировать его, домашний подход может обеспечить полезную меру мощности суперкомпьютера по сравнительно реалистичной цене.
Как выглядит самодельный суперкомпьютер? Как мы уже отмечали, формального определения суперкомпьютера не существует. Однако одна вещь, которая, вероятно, будет характеризовать ваше оборудование, — это распараллеливание: исторически параллельная обработка была средством, которое позволяло суперкомпьютерам достигать исключительного уровня производительности.
Почти каждый современный процессор на рынке имеет два или более физических ядра, встроенных непосредственно в корпус микросхемы (физические ядра являются важной мерой), так что, возможно, вы можете установить основной процессор на обычную материнскую плату и назвать его суперкомпьютером. Действительно, современная система Core i7 будет обеспечивать вычислительную мощность такого же масштаба, как и настоящий суперкомпьютер 20-летней давности, такой как Intel Paragon, который стоил миллион долларов и занимал полкомнаты.
Однако термин «суперкомпьютер» подразумевает нечто выходящее за рамки нормы, и в наши дни восьмиядерная система является сравнительно заурядной. 16-ядерная система может подойти. 48-ядерная система? Теперь мы куда-то движемся.
Как собрать такую систему? Один из вариантов — приобрести материнскую плату, поддерживающую несколько процессоров. Другой вариант — объединить множество компьютеров в кластер, который будет функционировать как один суперкомпьютер.
В качестве альтернативы вы можете выйти за рамки ЦП и использовать дополнительные карты, которые передают в руки ЦП огромные объемы вычислительной мощности. Или вы можете использовать сотни потоковых процессоров на видеокарте для той же цели. Давайте рассмотрим каждый из этих подходов по очереди.
Несколько процессоров
Обычные чипы для настольных ПК обычно не используются в многопроцессорных конфигурациях, и аппаратная поддержка для этого очень слаба. Если вы хотите параллельно использовать несколько процессоров, вы в основном ограничены архитектурой рабочей станции или сервера.
На оборудовании Intel это означает чипы LGA 2011, большая часть которых выпускается под брендом Xeon. Если вы предпочитаете AMD, вы можете использовать все еще поддерживаемую платформу Socket G34 или более новую платформу Socket C32, которая поддерживает новейшие модели Opteron.
Ничто из этого не является дешевым — оборудование предназначено для предприятий, которые, как правило, готовы платить за мощное оборудование. Материнские платы с двумя сокетами Intel 2011 года начинаются примерно с 200 фунтов стерлингов, а процессоры — примерно с 220 фунтов стерлингов за каждый процессор Core i7-3820. Перейдите к восьмиядерному процессору Xeon E5-2690 высшего класса, и вы получите более 1000 фунтов стерлингов за процессор.
Однако у этого подхода есть одно важное преимущество: Windows спроектирована так, чтобы «просто работать» в многопроцессорных средах, поэтому любая программа, которая может разумно использовать двухъядерный процессор, должна автоматически масштабироваться для работы в 16-ядерной среде.
Это делает многопроцессорную модель привлекательной, если вы хотите использовать свой суперкомпьютер для запуска основных многопоточных приложений, таких как инструменты 3D-рендеринга или медиакодеры.
Формирование кластера
Многопроцессорный подход имеет ограничения. После того, как вы установили два дорогих процессора на свою дорогую материнскую плату, возможностей для органического расширения практически не остается; вы можете установить больше оперативной памяти или заменить процессоры на пару более мощных моделей, но по сути у вас есть закрытая система. Более гибкий подход — кластеризация.
Кластер — это группа компьютеров, обычно соединенных через локальную сеть, которая действует так, как если бы это была одна система.
Вычислительный кластер можно рассматривать как макромир многопроцессорной системы, в которой несколько физических компьютеров параллельно работают над своими отдельными задачами.
Кластеры можно использовать для самых разных целей, например, для обеспечения балансировки нагрузки и отказоустойчивости сетевых служб, но эта модель особенно хорошо подходит для суперкомпьютерных приложений. Действительно, кластерный подход лег в основу большинства самых известных суперкомпьютеров в истории, включая лучший в мире компьютер Fujitsu K.
Философия суперкомпьютерной кластеризации проста. Одна физическая (или виртуальная) машина настраивается как «главная» система или «головной узел», и именно на этой системе выполняется основной код приложения. Остальные узлы ничего не делают, а ждут, пока главная система делегирует им рабочие нагрузки; когда они получены, они выполняют работу и возвращают результаты как можно быстрее.
Вычислительный кластер можно рассматривать как макромир многопроцессорной системы, в которой несколько физических компьютеров параллельно работают над своими отдельными задачами.
Разница в том, что узлы можно добавлять в кластер или удалять из него так же легко, как подключить новый компьютер к сети; и, более того, нет никаких требований к тому, чтобы аппаратное обеспечение узла использовало какую-либо конкретную архитектуру.
При желании вы могли бы собрать кластер из смеси систем, включая нетбуки, ноутбуки, рабочие станции и высокопроизводительные серверы. Единственное требование — чтобы на каждом узле было установлено подходящее клиентское программное обеспечение.
Пожалуй, наиболее известными примерами вычислительных кластеров являются проекты SETI@home и Folding@home, но термин «кластер» чаще всего подразумевает централизованно управляемую систему (проекты, сочетающие в себе мощность удаленных компьютеров, вместо этого называются «грид-системой»). вычисления»).
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
Узлы кластера также обычно подключаются через гораздо более быстрое соединение, чем обычное подключение к Интернету, чтобы минимизировать задержку, связанную с отправкой рабочих нагрузок туда и обратно. В вашем домашнем кластере это может быть Gigabit или 10GbE; Компьютер K использует запатентованное соединение под названием «Tofu», которое обеспечивает пропускную способность 100 ГБ/сек.
Кластеры на базе Windows можно довольно легко собрать с помощью операционной системы Windows HPC Server 2008, и Microsoft предоставляет рекомендации по созданию «кластероориентированных» приложений, которые будут использовать ресурсы кластера при запуске в такой системе. Альтернативно существуют различные бесплатные дистрибутивы Linux, предназначенные для кластеризации, например openMosix и ClusterKnoppix. Они обеспечивают удобный интерфейс, благодаря которому практически без труда можно настроить кластер любого размера с использованием популярной системы Beowulf.
Однако какой бы путь вы ни выбрали, одним из ограничений, с которым вы, вероятно, столкнетесь, является нехватка уже существующих приложений, предназначенных для использования ресурсов кластера. Это не обязательно проблема, поскольку задачи суперкомпьютера обычно выполняются с помощью специального кода.
Дополнительные карты
Кластерный подход является гибким, но довольно расточительным: по сути, он означает, что весь компьютер остается включенным и потребляет энергию, хотя обычно вы используете только несколько функций процессора.
Более энергоэффективный подход — смонтировать большое количество процессорных ядер на одной карте расширения и использовать эти ядра в качестве виртуального кластера.
Именно эта идея легла в основу злополучного проекта Intel Larrabee, который стремился объединить 32 ядра x86 – процессорные ядра, подобные тем, которые вы можете найти в обычном ПК – на одной карте PCI Express.
Первая демонстрация аппаратного обеспечения показала, что карта Larrabee достигает производительности чуть более одного терафлопса, и идея заключалась в том, что ее огромную мощность параллельной обработки можно использовать для рендеринга сложной высококачественной графики в реальном времени.
Larrabee не удалось заставить работать как графически-ориентированный продукт, и в 2010 году проект был официально отложен. Но Intel продолжала работать над архитектурой более общего назначения типа Larrabee, называемой архитектурой Multiple Integrated Core, или для краткости MIC. – который можно использовать для любой параллельной обработки. Прототип 32-ядерной карты PCI Express под кодовым названием Knights Ferry был опробован в 2010 году в Суперкомпьютерном центре Лейбница и ЦЕРН и доказал свою способность обеспечивать вычислительную мощность около 750 гигафлопс. Ожидается, что его преемник под кодовым названием Knights Corner поступит в продажу позднее в этом году и, вероятно, будет иметь 48 или более ядер.
Knights Corner выглядит как аккуратный и энергоэффективный способ превратить ваш настольный ПК в суперкомпьютер.
Knights Corner выглядит как аккуратный и энергоэффективный способ превратить ваш настольный ПК в суперкомпьютер, но это специализированный рынок, поэтому затраты на оборудование, вероятно, будут высокими: на самом деле может оказаться дешевле купить целый кластер многоядерных процессоров. ПК. Приложения, которые вы запускаете, должны быть написаны специально для параллельного выполнения.
Опции графического процессора
Последний вариант использования суперкомпьютеров — полностью отказаться от обычных ядер ЦП и вместо этого использовать мощность вашей видеокарты. В конце концов, шейдеры в графическом процессоре (или потоковые процессоры, как их еще называют) предназначены для параллельного выполнения большого количества вычислений на очень высоких скоростях – именно это суперкомпьютеры традиционно делают лучше всего. Как мы уже отмечали выше, в прошлом профессиональные студии часто использовали суперкомпьютеры для рендеринга 3D-сцен.
Графические процессоры обеспечивают гораздо больший параллелизм, чем центральные процессоры. В то время как процессор высокого класса может иметь восемь ядер, даже видеокарта для настольных ПК среднего класса обычно имеет более 100 потоковых процессоров, а современные модели высокого класса имеют более 2000. Это позволяет топовой видеокарте AMD Radeon HD 7970 выдавать почти четыре терафлопса — почти в 40 раз больше вычислительной мощности Core i7-980X.
Обратите внимание, что производительность графического процессора обычно оценивается с точки зрения вычислений «одинарной точности», что может привести к ошибкам округления. Работа со значениями двойной точности (с точностью, сравнимой с точностью центрального процессора) снижает производительность примерно вдвое.
Несмотря на это, использование графического оборудования гораздо более экономично, чем использование обычных процессоров, поскольку высокопроизводительная карта AMD стоит менее 400 фунтов стерлингов.
Причина, по которой потоковые процессоры графического процессора настолько дешевы по сравнению с центральными процессорами, заключается в том, что они намного проще — их возможности в значительной степени ограничиваются выполнением простых математических операций с заранее предоставленными данными. Графический процессор вряд ли подойдет для запуска полноценных приложений, но для суперкомпьютерных рабочих нагрузок он вполне подойдет.
Поскольку архитектура графического процессора фундаментально отличается от конструкции центрального процессора, приложения должны быть написаны специально для использования графического процессора в качестве вычислительного ресурса (подход, известный как GPGPU, сокращение от «вычисления на графическом процессоре общего назначения»). Однако это не обязательно означает изучение совершенно новой парадигмы программирования. Карты Nvidia используют так называемую унифицированную архитектуру вычислительных устройств (CUDA), что означает, что они могут быть запрограммированы на языке C – а с новейшим оборудованием – на C++ – с расширениями для доступа к функциям, специфичным для графического процессора.
Программисты Windows могут альтернативно использовать библиотеку функций DirectX под названием DirectCompute, которая отправляет математические задачи графическому оборудованию. Третий вариант — OpenCL, который можно использовать для создания функций, привязанных к графическому процессору, на C-подобном языке. Обе платформы будут работать на любой видеокарте AMD или Nvidia и даже со встроенными графическими процессорами Intel, поэтому ваш код не нужно привязывать к какой-либо конкретной платформе.
Если вы выберете путь графического процессора, вы сможете очень дешево начать суперкомпьютер на обычном оборудовании. Но и Nvidia, и AMD также предлагают карты премиум-класса, разработанные специально для приложений GPGPU (под торговыми марками «Tesla» и «FireStream» соответственно).
К ним относятся оптимизации производительности, которые не имеют отношения к играм, но потенциально ценны для рынка суперкомпьютеров, например, улучшенная производительность в вычислениях двойной точности, что дает им еще большее преимущество по сравнению с обычными процессорами для настольных ПК. Эти карты недешевы: модель Tesla с 512 потоковыми процессорами будет стоить более 2000 фунтов стерлингов. Но это все равно дешевле, чем 512 процессоров.