Обычный ПК решает задачи в десятки раз быстрее суперкомпьютеров. Мощный компьютер для решения задач особой сложности


Статья "Использование многоядерных компьютеров для инженерных расчетов в CAE-системах" из журнала CADmaster №4(44) 2008 (октябрь-декабрь)

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

Еще одну причину хочется упомянуть особо. Это интенсивный рост производительности вычислительной техники. Вспомните, еще совсем недавно компьютеры делились на две категории: «офисные» и «станции» (графические, рабочие и т.п.). Офисными звались компьютеры с «обычной» конфигурацией и производительностью. Они были вполне доступны по цене, но использовались как пишущие машинки. Запустить на этих компьютерах программные пакеты для различных инженерных расчетов чаще всего не стоило и пытаться: используемые в этих программах методы решения требовали значительно большей производительности и совсем других объемов памяти. Для работы с расчетными пакетами использовались станции. Конфигурация этих машин должна была обеспечить максимальную производительность и надежность. При сборке использовались новейшие модели процессоров и плат. Производителем станции не могла быть какая-нибудь никому не известная китайская или тайваньская фирма — только серьезная компания масштаба HP, Sun Microsystems или SGI. Стоили станции в разы дороже, чем офисные компьютеры. Таким образом, решившись купить дорогой программный продукт, предприятие должно было позаботиться и о приобретении не менее дорогого оборудования.

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

Наравне с другими причинами эта доступность привела к тому, что сегодня среди слушателей семинаров, посвященных различным вопросам моделирования, количество «пользователей» приближается к количеству «сочувствующих», а иногда и превышает его.

Маловато будет!

Итак, «мирный атом вошел в дом». Моделирование прочно закрепилось на промышленных предприятиях, заняв почетное место важного, современного и экономичного этапа подготовки и анализа производственных процессов. Создаются отделы, набирается инженерный состав. Некоторые предприятия официально запретили внедрение технологий, не подтвержденных соответствующими расчетами, выпустив нормативные документы, регламентирующие отношения между служителями CAE и производственными службами. Но при этом у моделирования появились и некоторые обязанности, одна из которых — выполнение всех поставленных задач в заданные сроки.

А вот это не так просто. Расчеты, проводимые даже на современных компьютерах, могут длиться несколько дней и даже недель. Обратимся к примерам. Длительность расчета в системе моделирования процесса литья металлов ProCAST зависит от количества элементов в расчетной модели, качества конечно-элементной сетки и заданных параметров расчета (шаг по времени, количество расчетных полей и т.п.). Предположим, что качество сетки удовлетворяет требованиям алгоритмов и все параметры заданы правильно. Тогда при стандартном наборе решателей (моделируется заполнение формы расплавом, охлаждение и прогноз пористости) длительность расчета технологического процесса для несложной отливки составит от двух до трех дней — в зависимости от количества элементов. Если добавить к стандартному набору решателей расчет напряжений или модель микроструктуры, время расчета увеличится уже до трех-четырех дней. И это при условии, что расчет идет стабильно. Если же предположить, что расчетная сетка окажется не совсем хорошего качества, велика вероятность возникновения проблем с устойчивостью и сходимостью при работе гидродинамического модуля. Это чревато непрогнозируемым увеличением времени расчета, а то и полной остановкой процесса.

Не следует также забывать, что ситуация, при которой первый же расчет дает ответ на все вопросы, встречается на производстве крайне редко — как правило, требуется серия расчетов. Зато куда как чаще случается так, что задание, полученное сегодня, было бы лучше выполнить еще вчера. Поэтому вопрос о сокращении сроков проведения расчетов стоит достаточно остро.

А вот это мой размерчик!

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

Обработка с распределенной памятью

Обработка с распределенной памятью (Distributed Memory Processing, DMP) — это архитектура, в которой каждый процессор использует свою собственную память (рис. 1). Другими словами, это некоторое количество компьютеров, объединенных специальной сетью и работающих под операционной системой Unix/Linux. Такая система называется кластером (рис. 2), между компьютерами (узлами) которого и распределяется рассчитываемая задача. Конфигурация требует наличия высокоскоростной сети между процессорами.

Достоинствами кластерных систем являются их высокая производительность и масштабируемость. Количество компьютеров может наращиваться практически без ограничений, со временем компьютеры кластера можно заменять более современными и производительными (включая многопроцессорные). Покупка кластера безусловно оправдана при решении задач особой сложности — например, при расчете моделей, состоящих из сотен миллионов элементов.

К недостаткам следует отнести высокую стоимость кластера. Кроме того, как уже сказано, требуется создание сети, объединяющей компьютеры в единую систему. Кластер нельзя разместить, скажем, в помещении технологического бюро цеха — необходима отдельная комната с микроклиматом. Поддерживать работу кластера должен специалист.

Рис. 1. Система с распределенной памятью Рис. 1. Система с распределенной памятью Рис. 2. Вычислительный кластер ПНЦ РАН
Рис. 2. Вычислительный кластер ПНЦ РАН

Симметричная многопроцессорная обработка

Другая технология, получившая название SMP (Shared Memory Processing), предполагает распределение вычислений по разным процессорам, которые используют общую память (рис. 3). Иными словами, используется один компьютер с нужным количеством процессоров, каждый из которых может иметь несколько ядер. Максимально возможное число процессоров равно 32. Рис. 3. Симметричная многопроцессорная обработка Рис. 3. Симметричная многопроцессорная обработка

Главное достоинство такой системы — невысокая стоимость. Действительно, многоядерные процессоры стоят сегодня даже в ноутбуках. Покупка многопроцессорного и многоядерного системного блока обойдется дешевле, чем приобретение соответствующего числа одноядерных машин, которые впоследствии будут организованы в кластер. Не нужно заботиться о качестве и быстродействии сети, отдельном помещении. Многоядерная станция может быть подключена к ЛВС предприятия, что значительно упрощает обмен данными. Использование системы для решения задач инженерного анализа и анализа технологического процесса существенно, в несколько раз, сократит время математического расчета.

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

Конфигурация

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

Для получения максимальной производительности использовались два четырехъядерных процессора Intel Xeon, предоставляющих гибкие возможности использования 64- и 32-разрядных приложений и операционных систем. На серверной материнской плате установлено 16 Гб оперативной памяти, что позволит одновременно запускать несколько ресурсоемких расчетов. Для работы с визуализацией результатов и графикой установили видеокарту компании NVIDIA среднего ценового диапазона. Модель Quadro FX 1500 с 256 Мб графической памяти — это более чем достаточный вариант для работы с CAE-системами.

Несколько слов нужно сказать о жестких дисках. Жесткие диски (а тем более их количество) никак не влияют на скорость и производительность расчета, но это совсем не значит, что можно оставить их без внимания. Каждый расчет, выполненный в CAE-системе, — это гигабайты информации. Их надо где-то хранить. Как правило, к хранению результатов расчета предъявляются два требования: доступность и надежность. Опыт показывает, что архивирование и запись на различные оптические носители (CD, DVD) не приносит желаемых результатов. Чтобы получить доступ к данным, хранимым таким образом, надо сначала переписать содержимое диска на винчестер, а потом, возможно, и разархивировать. На это может уйти до часа времени. Кроме того, надежность оптических носителей довольно сомнительна.

В нашей расчетной станции установлено пять дисков большой емкости, объединенных в отказоустойчивый дисковый массив RAID 5. Такое решение не только позволит хранить результаты множества расчетов, но и обеспечит их сохранность. В случае выхода из строя одного из винчестеров вся информация будет сохранена, а система останется работоспособной.

Все комплектующие установлены в надежный и красивый корпус с хорошей системой вентиляции и защитой от несанкционированного доступа (рис. 4).

Рис. 4.а. Расчетная многоядерная (2x4) станция для проведения расчетов Рис. 4.а. Расчетная многоядерная (2×4) станция для проведения расчетов Рис. 4.б. Расчетная многоядерная (2x4) станция для проведения расчетов Рис. 4.б. Расчетная многоядерная (2×4) станция для проведения расчетов Рис. 4.в. Расчетная многоядерная (2x4) станция для проведения расчетов
Рис. 4.в. Расчетная многоядерная (2×4) станция для проведения расчетов

Программное обеспечение

На компьютере установили лицензионную версию операционной системы Microsoft Windows XP Professional x64 Edition (версия 2003 с обновлением Service Pack 2).

Тестирование проводилось с использованием CAE-системы высшего уровня ProCAST (рис. 5), уже более 20 лет представленной на европейском рынке. С 2005 года началось продвижение этого продукта в России и странах СНГ, так что сейчас система достаточно хорошо знакома и отечественным предприятиям, имеющим литейное производство. Программный комплекс ProCAST предназначен для проведения тепловых, гидродинамических, прочностных и других расчетов, необходимых для отладки технологии литья изделий. Основная часть модулей использует для расчета метод конечных элементов; есть модули, использующие метод конечных разностей и клеточных автоматов. Последняя на момент тестирования версия продукта (2007.0) имеет в своем составе 32- и 64-разрядные версии решателей. Кроме того, в состав ProCAST 2007.0 включена DMP-версия продукта для проведения распределенных вычислений.

Рис. 5. Система компьютерного моделирования Рис. 5. Система компьютерного моделирования

Тестирование

Для проведения тестовых расчетов использовалась модель одного из заказчиков. Расчетная область модели состояла из двух объемов — тела отливки и песчано-глинистой формы. В процессе расчета работали решатели тепловой и гидродинамической задач. Общее количество элементов расчетной области — 3 518 121, дополнительные сведения о конечно-элементной модели приведены в таблице 1. Таблица 1. Параметры конечно-элементной модели Объем Количество элементов Использованные решатели Тепловой Гидродинамический
Отливка 734 558 + +
Форма 2 783 563 + -

Тестирование компьютера проводилось путем расчета одной и той же задачи с использованием разного количества ядер и решателей разной разрядности (32- и 64-бит). По окончании каждого расчета фиксировалось процессорное время (CPU time). При оценке результатов тестирования производительность вычислялась по формуле:

где CPUtime0 - процессорное время эталонного (базового) расчета. За эталон принято процессорное время расчета той же самой задачи на ничем не выдающемся, но вполне современном компьютере (двухъядерный ЦПУ 2 ГГц, 2 Гб ОЗУ, Windows XP Pro). Чтобы рассчитать, во сколько раз время расчета тестируемой задачи оказалось меньше времени эталонного расчета, надо разделить время базового расчета на время тестового расчета.

Результаты тестирования представлены в таблице 2 и на рис. 6. Последняя строка таблицы (выделена шрифтом) относится к эталонному расчету.

Таблица 2. Результаты тестирования Количество ядер Разрядность решателей Время (дней, часов, минут, секунд) Производительность
% раз 1 32 3 д, 04 ч, 33 м, 27 с - -
8 64 15 ч, 56 м, 01 с 79,2 4,8
4 64 23 ч, 52 м, 34 с 68,8 3,2
2 64 1 д, 09 ч, 38 м, 38 с 56,1 2,3
1 64 2 д, 23 ч, 08 м, 35 с 7,1 1,08
1 32 2 д, 22 ч, 20 м, 57 с 8,1 1,09
Рис. 6. Результаты тестирования Рис. 6. Результаты тестирования

Коротко подытожим. Наблюдается вполне прогнозируемый рост скорости расчета в зависимости от количества задействованных ядер. Даже аналогичный базовому расчет (одно ядро, 32-разрядные решатели) длится на 6 часов меньше, что, вероятно, связано и с удачной конфигурацией компьютера, и с использованием 64-разрядной ОС. Подключение к расчету еще одного ядра дает резкий, в 2,3 раза, скачок производительности по отношению к эталону. Конечно, такая динамика не могла сохраняться при увеличении количества задействованных ядер, но полученный результат тем не менее впечатлил. Начиная с двух и до восьми ядер включительно рост производительности происходит по линейному закону (рис. 7).

Рис. 7. Характер роста скорости расчета Рис. 7. Характер роста скорости расчета

Расчет, прежде занимавший три дня, может быть выполнен за 16 часов, то есть запустив его вечером перед уходом с работы, на следующий день вы уже просматриваете результаты.

Сама расчетная станция тоже получилась на удивление удачной. Это мощный и относительно недорогой компьютер с большим объемом дискового пространства для хранения результатов.

В завершение скажем, что экспериментальный экземпляр трудится в отделе САПР и инженерного анализа ЗАО «СиСофт».

www.cadmaster.ru

проблемы и решения / Хабр

Компьютеры, даже персональные, становятся все сложнее. Не так уж давно в гудящем на столе ящике все было просто — чем больше частота, тем больше производительность. Теперь же системы стали многоядерными, многопроцессорными, в них появились специализированные ускорители, компьютеры все чаще объединяются в кластеры. Зачем? Как во всем этом многообразии разобраться? Что значит SIMD, SMP, GPGPU и другие страшные слова, которые встречаются все чаще? Каковы границы применимости существующих технологий повышения производительности?
Введение
Откуда такие сложности?
Компьютерные мощности быстро растут и все время кажется, что все, существующей скорости хватит на все. Но нет — растущая производительность позволяет решать проблемы, к которым раньше нельзя было подступиться. Даже на бытовом уровне есть задачи, которые загрузят ваш компьютер надолго, например кодирование домашнего видео. В промышленности и науке таких задач еще больше: огромные базы данных, молекулярно-динамические расчеты, моделирование сложных механизмов — автомобилей, реактивных двигателей, все это требует возрастающей мощности вычислений. В предыдущие годы основной рост производительности обеспечивался достаточно просто, с помощью уменьшения размеров элементов микропроцессоров. При этом падало энергопотребление и росли частоты работы, компьютеры становились все быстрее, сохраняя, в общих чертах, свою архитектуру. Менялся техпроцесс производства микросхем и мегагерцы вырастали в гигагерцы, радуя пользователей возросшей производительностью, ведь если «мега» это миллион, то «гига» это уже миллиард операций в секунду. Но, как известно, рай бывает либо не навсегда, либо не для всех, и не так давно он в компьютерном мире закончился. Оказалось, частоту дальше повышать нельзя — растут токи утечки, процессоры перегреваются и обойти это не получается. Можно, конечно, развивать системы охлаждения, применять водные радиаторы или совсем уж жидким азотом охлаждать — но это не для каждого пользователя доступно, только для суперкомпьютеров или техноманьяков. Да и при любом охлаждении возможность роста была небольшой, где-то раза в два максимум, что для пользователей, привыкших к геометрической прогрессии, было неприемлемо. Казалось, что закон Мура, по которому число транзисторов и связанная с ним производительность компьютеров удваивалась каждые полтора-два года, перестанет действовать. Пришло время думать и экспериментировать, вспоминая все возможные способы увеличения скорости вычислений.
Формула производительности
Возьмем самую общую формулу производительности:

Видим, что производительность можно измерять в количестве выполняемых инструкций за секунду. Распишем процесс поподробнее, введем туда тактовую частоту:

Первая часть полученного произведения — количество инструкций, выполняемых за один такт (IPC, Instruction Per Clock), вторая — количество тактов процессора в единицу времени, тактовая частота. Таким образом, для увеличения производительности нужно или поднимать тактовую частоту или увеличивать количество инструкций, выполняемых за один такт. Т.к. рост частоты остановился, придется увеличивать количество исполняемых «за раз» инструкций.

Включаем параллельность
Как же увеличить количество инструкций, исполняемых за один такт? Очевидно, выполняя несколько инструкций за один раз, параллельно. Но как это сделать? Все сильно зависит от выполняемой программы. Если программа написана программистом как однопоточная, где все инструкции выполняются последовательно, друг за другом, то процессору (или компилятору) придется «думать за человека» и искать части программы, которые можно выполнить одновременно, распараллелить.
Параллелизм на уровне инструкций
Возьмем простенькую программу:a = 1 b = 2 c = a + b Первые две инструкции вполне можно выполнять параллельно, только третья от них зависит. А значит — всю программу можно выполнить за два шага, а не за три.Процессор, который умеет сам определять независимые и непротиворечащие друг другу инструкции и параллельно их выполнять, называется суперскалярным. Очень многие современные процессоры, включая и последние x86 — суперскалярные процессоры, но есть и другой путь: упростить процессор и возложить поиск параллельности на компилятор. Процессор при этом выполняет команды «пачками», которые заготовил для него компилятор программы, в каждой такой «пачке» — набор инструкций, которые не зависят друг от друга и могут исполняться параллельно. Такая архитектура называется VLIW (very long instruction word — «очень длинная машинная команда»), её дальнейшее развитие получило имя EPIC (explicitly parallel instruction computing) — микропроцессорная архитектура с явным параллелизмом команд) Самые известные процессоры с такой архитектурой — Intel Itanium. Есть и третий вариант увеличения количества инструкций, выполняемых за один такт, это технология Hyper Threading В этой технологии суперскалярный процессор самостоятельно распараллеливает не команды одного потока, а команды нескольких (в современных процессорах — двух) параллельно запущенных потоков. Т.е. физически процессорное ядро одно, но простаивающие при выполнении одной задачи мощности процессора могут быть использованы для выполнения другой. Операционная система видит один процессор (или одно ядро процессора) с технологией Hyper Threading как два независимых процессора. Но на самом деле, конечно, Hyper Threading работает хуже, чем реальные два независимых процессора т.к. задачи на нем будут конкурировать за вычислительные мощности между собой.

Технологии параллелизма на уровне инструкций активно развивались в 90е и первую половину 2000х годов, но в настоящее время их потенциал практически исчерпан. Можно переставлять местами команды, переименовывать регистры и использовать другие оптимизации, выделяя из последовательного кода параллельно исполняющиеся участки, но все равно зависимости и ветвления не дадут полностью автоматически распараллелить код. Параллелизм на уровне инструкций хорош тем, что не требует вмешательства человека — но этим он и плох: пока человек умнее микропроцессора, писать по-настоящему параллельный код придется ему.

Параллелизм на уровне данных
Векторные процессоры
Мы уже упоминали скалярность, но кроме скаляра есть и вектор, и кроме суперскалярных процессоров есть векторные. Векторные процессоры выполняют какую-то операцию над целыми массивами данных, векторами. В «чистом» виде векторные процессоры применялись в суперкомьютерах для научных вычислений в 80-е годы. По классификации Флинна, векторные процессоры относятся к SIMD — (single instruction, multiple data — одиночный поток команд, множественный поток данных). В настоящее время в процессорах x86 реализовано множество векторных расширений — это MMX, 3DNow!, SSE, SSE2 и др. Вот как, например, выглядит умножение четырех пар чисел одной командой с применением SSE:

float a[4] = { 300.0, 4.0, 4.0, 12.0 }; float b[4] = { 1.5, 2.5, 3.5, 4.5 }; __asm { movups xmm0, a ; // поместить 4 переменные с плавающей точкой из a в регистр xmm0 movups xmm1, b ; // поместить 4 переменные с плавающей точкой из b в регистр xmm1 mulps xmm1, xmm0 ; // перемножить пакеты плавающих точек: xmm1=xmm1*xmm0 movups a, xmm1 ; // выгрузить результаты из регистра xmm1 по адресам a };

Таким образом, вместо четырех последовательных скалярных умножений мы сделали только одно — векторное. Векторные процессоры могут значительно ускорить вычисления над большими объемами данных, но сфера их применимости ограничена, далеко не везде применимы типовые операции над фиксированными массивами. Впрочем, гонка векторизации вычислений далеко не закончена — так в последних процессорах Intel появилось новое векторное расширение AVX (Advanced Vector Extension) Но гораздо интереснее сейчас выглядят

Графические процессоры
Теоретическая вычислительная мощность процессоров в современных видеокартах растет гораздо быстрее, чем в обычных процессорах (посмотрим знаменитую картинку от NVIDIA) Не так давно эта мощность была приспособлена для универсальных высокопроизводительных вычислений с помощью CUDA/OpenCL. Архитектура графических процессоров (GPGPU, General Purpose computation on GPU – универсальные расчеты средствами видеокарты), близка к уже рассмотренной SIMD. Она называется SIMT — (single instruction, multiple threads, одна инструкция — множество потоков). Так же как в SIMD операции производятся с массивами данных, но степеней свободы гораздо больше — для каждой ячейки обрабатываемых данных работает отдельная нить команд. В результате 1) Параллельно могут выполняться сотни операций над сотнями ячеек данных. 2) В каждом потоке выполняется произвольная последовательность команд, она может обращаться к разным ячейкам. 3) Возможны ветвления. При этом, правда, параллельно могут выполняться только нити с одной и той же последовательностью операций.

GPGPU позволяют достичь на некоторых задачах впечатляющих результатов. но существуют и принципиальные ограничения, не позволяющие этой технологии стать универсальной палочкой-выручалочкой, а именно 1) Ускорить на GPU можно только хорошо параллелящийся по данным код. 2) GPU использует собственную память. Трансфер данных между памятью GPU и памятью компьютера довольно затратен. 3) Алгоритмы с большим количеством ветвлений работают на GPU неэффективно

Мультиархитектуры-
Итак, мы дошли до полностью параллельных архитектур — независимо параллельных и по командам, и по данным. В классификации Флинна это MIMD (Multiple Instruction stream, Multiple Data stream — Множественный поток Команд, Множественный поток Данных). Для использования всей мощности таких систем нужны многопоточные программы, их выполнение можно «разбросать» на несколько микропроцессоров и этим достичь увеличения производительности без роста частоты. Различные технологии многопоточности давно применялись в суперкомпьютерах, сейчас они «спустились с небес» к простым пользователям и многоядерный процессор уже скорее правило, чем исключение. Но многоядерность далеко не панацея.
Суров закон, но это закон
Параллельность, это хороший способ обойти ограничение роста тактовой частоты, но у него есть собственные ограничения. Прежде всего, это закон Амдала, который гласитУскорение выполнения программы за счет распараллеливания её инструкций на множестве вычислителей ограничено временем, необходимым для выполнения её последовательных инструкций.

Ускорение кода зависит от числа процессоров и параллельности кода согласно формуле

Действительно, с помощью параллельного выполнения мы можем ускорить время выполнения только параллельного кода. В любой же программе кроме параллельного кода есть и последовательные участки и ускорить их с помощью увеличения количества процессоров не получится, над ними будет работать только один процессор.

Например, если выполнение последовательного кода занимает всего 25% от времени выполнения всей программы, то ускорить эту программу более чем в 4 раза не получится никак. Давайте построим график зависимости ускорения нашей программы от количества параллельно работающих вычислителей-процессоров. Подставив в формулу 1/4 последовательного кода и 3/4 параллельного, получим

Грустно? Еще как. Самый быстрый в мире суперкомпьютер с тысячами процессоров и терабайтами памяти на нашей, вроде бы даже неплохо (75%!) параллелящейся задаче, меньше чем вдвое быстрее обычного настольного четырехядерника. Причем всё еще хуже, чем в этом идеальном случае. В реальном мире затраты обеспечение параллельности никогда не равны нулю и потому при добавлении все новых и новых процессоров производительность, начиная с некоторого момента, начнет падать. Но как же тогда используется мощь современных очень-очень многоядерных суперкомпьютеров? Во многих алгоритмах время исполнения параллельного кода сильно зависит от количества обрабатываемых данных, а время исполнения последовательного кода — нет. Чем больше данных требуется обработать, тем больше выигрыш от параллельности их обработки. Потому «загоняя» на суперкомп большие объемы данных получаем хорошее ускорение. Например перемножая матрицы 3*3 на суперкомпьютере мы вряд ли заметим разницу с обычным однопроцессорным вариантом, а вот умножение матриц, размером 1000*1000 уже будет вполне оправдано на многоядерной машине. Есть такой простой пример: 9 женщин за 1 месяц не могут родить одного ребенка. Параллельность здесь не работает. Но вот та же 81 женщина за 9 месяцев могут родить (берем максимальную эффективность!) 81 ребенка, т.е.получим максимальную теоретическую производительность от увеличения параллельности, 9 ребенков в месяц или, в среднем, тот же один ребенок в месяц на 9 женщин. Большим компьютерам — большие задачи!

Мультипроцессор
Мультипроцессор — это компьютерная система, которая содержит несколько процессоров и одно видимое для всех процессоров. адресное пространство. Мультипроцессоры отличаются по организации работы с памятью.Системы с общей памятью В таких системах множество процессоров (и процессорных кэшей) имеет доступ к одной и той же физической оперативной памяти. Такая модель часто называется симметричной мультипроцессорностью (SMP). Доступ к памяти при таком построении системы называется UMA (uniform memory access, равномерный доступ) т.к. любой процессор может обратиться к любой ячейке памяти и скорость этого обращения не зависит от адреса памяти. Однако каждый микропроцессор может использовать свой собственный кэш. Несколько подсистем кэш-памяти процессоров, как правило, подключены к общей памяти через шину

Посмотрим на рисунок. Что у нас хорошего? Любой процессор обращается ко всей памяти и вся она работает одинаково. Программировать для таких систем проще, чем для любых других мультиархитектур. Плохо то, что все процессоры обращаются к памяти через шину, и с ростом числа вычислительных ядер пропускная способность этой шины быстро становится узким местом. Добавляет головной боли и проблема обеспечения когерентности кэшей.

Когерентность кэша Допустим, у нас есть многопроцессорный компьютер. Каждый процессор имеет свой кэш, ну, как на рисунке вверху. Пусть некоторую ячейку памяти читали несколько процессоров — и она попала к ним в кэши. Ничего страшного, пока это ячейка неизменна — из быстрых кэшей она читается и как-то используется в вычислениях. Если же в результате работы программы один из процессоров изменит эту ячейку памяти, чтоб не было рассогласования, чтоб все остальные процессоры «видели» это обновление придется изменять содержимое кэша всех процессоров и как-то тормозить их на время этого обновления. Хорошо если число ядер/процессоров 2, как в настольном компьютере, а если 8 или 16? И если все они обмениваются данными через одну шину? Потери в производительности могут быть очень значительные.Многоядерные процессоры Как бы снизить нагрузку на шину? Прежде всего можно перестать её использовать для обеспечения когерентности. Что для этого проще всего сделать? Да-да, использовать общий кэш. Так устроены большинство современных многоядерных процессоров. Посмотрим на картинку, найдем два отличия от предыдущей. Да, кэш теперь один на всех, соответственно, проблема когерентности не стоит. А еще круги превратились в прямоугольники, это символизирует тот факт, что все ядра и кэши находятся на одном кристалле. В реальной действительности картинка несколько сложнее, кэши бывают многоуровневыми, часть общие, часть нет, для связи между ними может использоваться специальная шина, но все настоящие многоядерные процессоры не используют внешнюю шину для обеспечения когерентности кэша, а значит — снижают нагрузку на нее. Многоядерные процессоры — один из основных способов повышения производительности современных компьютеров. Уже выпускаются 6 ядерные процессоры, в дальшейшем ядер будет еще больше… где пределы? Прежде всего «ядерность» процессоров ограничивается тепловыделением, чем больше транзисторов одновременно работают в одном кристалле, тем больше этот кристалл греется, тем сложнее его охлаждать. А второе большое ограничение — опять же пропускная способность внешней шины. Много ядер требуют много данных, чтоб их перемалывать, скорости шины перестает хватать, приходится отказываться от SMP в пользуNUMANUMA (Non-Uniform Memory Access — «неравномерный доступ к памяти» или Non-Uniform Memory Architecture — «Архитектура с неравномерной памятью») — архитектура, в которой, при общем адресном пространстве, скорость доступа к памяти зависит от ее расположения Обычно у процессора есть " своя" память, обращение к которой быстрее и «чужая», доступ к которой медленнее. В современных системах это выглядит примерно так

Процессоры соединены с памятью и друг с другом с помощью быстрой шины, в случае AMD это Hyper Transport, в случае последних процессоров Intel это QuickPath Interconnect Т.к. нет общей для всех шины то, при работе со «своей» памятью, она перестает быть узким местом системы. NUMA архитектура позволяет создавать достаточно производительные многопроцессорные системы, а учитывая многоядерность современных процессоров получим уже очень серьезную вычислительную мощность «в одном корпусе», ограниченную в основном сложностью обеспечения кэш-когерентности этой путаницы процессоров и памяти. Но если нам нужна еще большая мощность, придется объединять несколько мультипроцессоров в

Мультикомпьютер

Мультикомпьютер — вычислительная система без общей памяти, состоящая из большого числа взаимосвязанных компьютеров (узлов), у каждого из которых имеется собственная память. При работе над общей задаче узлы мультикомпьютера взаимодействуют через отправку друг другу сообщений. Современные мультикомпьютеры, построенные из множества типовых деталей, называют вычислительными кластерами. Большинство современных суперкомпьютеров построены по кластерной архитектуре, они объединяют множество вычислительных узлов с помощью быстрой сети (Gigabit Ethernet или InfiniBand) и позволяют достичь максимально возможной при современном развитии науки вычислительной мощности. Проблемы, ограничивающие их мощность, тоже немаленькие Это: 1) Программирование системы с параллельно работающими тысячами вычислительных процессоров 2) Гигантское энергопотребление 3) Сложность, приводящая к принципиальной ненадежности

Сводим все воедино
Ну вот, вкратце пробежались почти по всем технологиям и принципам построения мощных вычислительных систем. Теперь есть возможность представить себе строение современного суперкомпьютера. Это мультикомпьютер-кластер, каждый узел которого — NUMA или SMP система с несколькими процессорами, каждый из процессоров с несколькими ядрами, каждое ядро с возможностью суперскалярного внутреннего параллелизма и векторными расширениями. Вдобавок ко всему этому во многих суперкомпьютерах установлены GPGPU — ускорители. У всех этих технологий есть плюсы и ограничения, есть тонкости в применении. А теперь попробуйте эффективно загрузить-запрограммировать всё это великолепие! Задача нетривиальная… но очень интересная. Что-то будет дальше?
Источники информации
Курс «Основы параллельных вычислений» Интернет-университета суперкомпьютерных технологийКлассификация Флинна на сайте parallels.ruMultiProcessors, their Memory organizations and Implementations by Intel & AMD Многоядерность, как способ увеличения производительности вычислительной системы Википедия и Интернет

P.S. Текст родился как попытка самому разобраться и упорядочить в голове информацию о технологиях из области высокопроизводительных вычислений. Возможны неточности и ошибки, буду очень благодарен за замечания и комментарии.

habr.com

Внутри суперкомпьютера // Как устроен и зачем нужен самый мощный компьютер в России: luckyea77

Интеллектуальные машины — остриё прогресса и двигатель информационной революции. Среди них есть настоящие компьютеры-монстры — не злые, зато огромные, прожорливые, умные и быстрые. Корреспондент «Кота Шрёдингера» побывал в чреве суперкомпьютера «Ломоносов».

Мы открываем неприметную дверь в коридоре второго гуманитарного корпуса МГУ — я проходил здесь много раз, но мне и в голову не приходило, что за ней скрывается самый мощный в России суперкомпьютер.

— Я лучше здесь объясню: внутри суперкомпьютера очень шумно, невозможно рассказывать, — говорит Серей Жуматий, ведущий научный сотрудник вычислительного центра МГУ им. М.В. Ломоносова.

У Сергея необычная профессия — системный администратор суперкомпьютера. Причём не одного — в его ведении находятся старенький «Чебышёв», только построенный, проходящий отладку «Ломоносов-2» и нынешний флагман «Ломоносов», гудящий и мигающий тысячами разноцветных лампочек в соседнем зале. От прихожей, где мы стоим, зал отделяет звуконепроницаемая прозрачная панель — здесь и видно всё, и говорить можно.Сергей объясняет, что бесчисленные стойки с системными блоками, которые мы видим, — это примерно четверть всего суперкомпьютера: его мозг. В соседних помещениях расположены система бесперебойного питания и собственная электроподстанция, система охлаждения в подвале — там стоят баки со специальной «незамерзайкой».

Наконец мы надеваем большущие наушники для защиты от шума и входим в зал. Гул вентиляторов и кондиционеров слышен даже сквозь них. Вычислительные сервера перемигиваются синими лампочками, блоки системы хранения данных сигнализируют об исправной работе зелёными огоньками. У суперкомпьютера распределённая файловая система — при поломке любого из дисков, на которых хранятся данные, информация не будет утеряна.

На стойках с серверами то и дело видна надпись «T-Platforms» — это название российской компании, разработавшей и изготовившей «Ломоносов» и «Ломоносов-2». Хотя они, как и все системы такого рода, в основном собраны из вполне стандартных комплектующих: процессоров Intel Xeon, блоков памяти Samsung. Но есть и платы, которые «Т-Платформы» сделали сами.

Что не по зубам ноутбуку

Уподобившись Ионе и изучив организм монстра изнутри, мы возвращаемся к людям — рассказать «Коту Шрёдингера» о «Ломоносове» и других суперкомпьютерах согласился академик Владимир Воеводин, замдиректора по научной работе Научно-исследовательского вычислительного центра МГУ, член-корреспондент РАН.

[Кот Шрёдингера] Что это всё-таки такое — суперкомпьютер?

[Владимир Воеводин] Это очень просто. Когда человек не может что-то сделать, он зовёт помощников. Точно так же, если мой компьютер не справляется с расчётами, я могу взять много компьютеров и распределить работу между ними. Суперкомпьютер основан на принципе параллельной обработки информации, которую осуществляют тысячи и десятки тысяч, иногда миллионы процессоров. Все они работают как единый вычислительный комплекс — для решения одной задачи.

[КШ] Я слышал, что суперкомпьютер Watson, прославившийся победой в телевикторине, переехал в «облака», то есть он задействует ресурсы множества компьютеров, находящихся в разных местах. Получается, суперкомпьютер может и не существовать как физический объект?

[ВВ] Для определённых задач суперкомпьютер можно собрать на время — даже из компьютеров пользователей интернета. Так делают, когда пытаются минимизировать стоимость вычислений. Мы и сами проводили множество экспериментов, объединяя огромное число компьютеров в университетах по всей России и распределяя между ними нагрузку. Но в «облаках» сложно решать, допустим, задачи вычислительной гидродинамики, когда требуется аккуратное и быстрое взаимодействие узлов системы или процессоров.

[КШ] Что это вообще за задачи, с которыми обычный компьютер не справляется?

[ВВ] Те, что обладают высокой вычислительной сложностью. Возьмём типичную задачу, стоящую перед нефтяной или газовой компанией. Нужно смоделировать нефтяной резервуар, расположенный под землёй на глубине несколько километров. Будем считать для простоты, что там куб, который можно представить как сеть размером 100 × 100 × 100 точек. В каждой точке нужно вычислить десяток функций: давление, концентрацию, температуру... В самых простых моделях три компонента: вода, нефть и газ, в моделях посложнее рассматривают различные фракции нефти. Чтобы вычислить значение функций в каждой точке, нужно решить нелинейное уравнение — это сотни арифметических операций на каждую функцию в каждой точке. Но это даст лишь застывшую картинку, а нам интересна динамика — как всё это развивается. Значит, нужно сделать порядка 500 шагов по времени... В итоге мы получаем колоссальный объём расчётов, с которыми ни один обычный компьютер не справится.

У «Ломоносова» три уровня хранения данных: высокоскоростные дисковые хранилища объёмом 500 ТБайт, дисковое хранилище повышенной надёжности объёмом 300 ТБайт и ленточная библиотека объёмом 1 ПБайт.

Чем меряются монстры

[КШ] Какое место среди суперкомпьютеров мира занимает «Ломоносов»?

[ВВ] Есть единый рейтинг, Топ-500 самых мощных суперкомпьютеров мира, который публикуется два раза в год. Когда в 2009-м создали «Ломоносов», он занял 12-е место — это было высшим достижением России в рейтинге. В последней версии, вышедшей в ноябре 2014 года, «Ломоносов» уже на 58-м месте, а наш новый суперкомпьютер «Ломоносов-2» — на 22-м.

[КШ] Чем они меряются?

[ВВ] Есть теоретическая величина, которая считается скорее на бумажке, — называется пиковой производительностью. На практике она мало кому интересна: нужно, чтобы компьютер хорошо подходил именно для конкретного типа задач. Но есть стандартный общепризнанный тест, измеряющий, насколько быстро машина умеет решать систему линейных уравнений с плотной матрицей. Он доступен в интернете, каждый может запустить его даже на мобильном телефоне — разница по пиковой производительности с нашими монстрами будет в миллионы раз. Вот по этому параметру суперкомпьютеры и ранжируют. На первом месте сейчас китайский Tianhe-2.

[КШ] В России строят ещё что-нибудь такое?

[ВВ] Государственной программы пока нет, но поддержка есть — прежде всего, конечно, со стороны МГУ. Наш ректор понимает, что за такими вычислительными технологиями будущее. Ведь далеко не всегда можно поставить физический эксперимент, изучая, допустим, глобальное изменение климата. Зато можно построить виртуальную модель и посчитать, что произойдёт. И так во многих вещах. Почему сегодня компьютеры используются в любой конкурентоспособной промышленности? Да потому что провести вычислительный эксперимент на порядок дешевле, чем натурный. Например, вы создаёте авиационный двигатель — чтобы выполнить сертификацию, сколько таких многомиллионных устройств нужно будет испытать и разбить? Гораздо дешевле большую часть испытаний провести на виртуальной модели.

[КШ] Суперкомпьютеры МГУ используются в основном для проведения таких вот виртуальных экспериментов?

[ВВ] Да, это главное их применение. Только у нас эксперименты связаны прежде всего с фундаментальными научными исследованиями. Но они очень востребованы и в прикладных областях: в конструировании турбин, например, в сейсморазведке, нефтяной и газовой промышленности.

[КШ] Я слышал, что к традиционному для биологии делению экспериментов на in vitro (в пробирке) и in vivo (в живом организме) добавился третий тип — in silico, в компьютере.

[ВВ] Да, абсолютно правильно. На нас завязаны очень многие вещи, касающиеся здоровья человека: драгдизайн, моделирование кровотока в организме, моделирование мышечной активности, в том числе работы сердца. Невероятно перспективная область — моделирование активности человеческого мозга: в Европе на её изучение только государственные структуры выделили миллиард евро, ещё миллиард дадут частные компании.

В целом примерно 30% всего машинного времени «Ломоносова» уходит на биохимический кластер, биоинформатику, биоинженерию. Академик Скулачёв с нашей помощью разрабатывает новые лекарства, химики под руководством профессора Немухина проектируют новые материалы. Вообще же нашими суперкомпьютерами пользуются больше двадцати факультетов. Среди них и гуманитарные — например, у нас был интересный проект с историческим факультетом по сравнительному анализу старинных текстов.

[КШ] Только университетские учёные пользуются «Ломоносовым»?

[ВВ] Нет, у нас огромное количество пользователей — сейчас их около 1200, то есть порядка 200 организаций, 500 проектов. Это институты Академии наук, университеты, другие научные организации. Московский университет, по сути, обслуживает всё научно-образовательное сообщество России. Машина загружена полностью. Смотрите, у меня всегда есть возможность мониторить с экрана смартфона, что творится в суперкомпьютере. Вот текущая картинка загруженности «Ломоносова»: сейчас работают 124 человека, запущено 145 задач, еще 515 человек в очереди — ждут, пока освободятся ресурсы. Очередь есть всегда, именно поэтому мы и затеяли новый проект — «Ломоносов-2». Частично он уже запущен и вскоре станет доступен для всех учёных.

Автоматическая система пожаротушения использует специальный газ. В случае возгорания он заполняет помещение и ликвидирует пожар, не повреждая при этом оборудование.

Информационный завод

[КШ] Если на «Ломоносове» в данный момент работают 124 человека, получается, каждому из них нужна лишь малая часть ресурсов суперкомпьютера?

[ВВ] Особенность «Ломоносова» — его универсальность. У нас огромный поток пользователей, поэтому мы не можем делать специализированную машину — такую, которая ориентирована только на один класс задач. Мы сразу делали универсальную установку, понимая, что поток пользователей и разных задач будет колоссальный. Это гигантский информационный завод. Он работает без выходных, без праздников, круглосуточно. Чаще всего пользователям не нужен весь «Ломоносов», хотя есть около десяти групп, которые используют 1,7 петафлопса «Ломоносова» целиком.

[КШ] Эти 124 человека, которые сейчас работают на «Ломоносове», — они же там не сидят, они удалённо работают?

[ВВ] Да, прошли те времена, когда люди приходили в машинный зал. Человек подаёт заявку, и если она одобряется, получает уникальный ключ доступа к суперкомпьютеру. Далее исполняется специальный «ритуальный танец», необходимый для обеспечения информационной безопасности, и «Ломоносов» становится доступен по интернету из любого места.

[КШ] Как к вам приходят учёные и кто для них пишет программы?

[ВВ] Сидит человек в своей лаборатории и понимает вдруг, что ему нужно много считать, что его любимой персоналки уже не хватает. Но прежде чем подавать заявку, он должен оценить свои силы — понять, есть ли у него возможности перенести программу, работающую в последовательном режиме, на суперкомпьютер, который основан на принципе параллельных вычислений. Это революционный шаг, который в самом ближайшем будущем предстоит сделать всем нам, настоящая вторая компьютерная революция — переход от последовательных вычислений к параллельным.

[КШ] Тут совсем другое программирование, да?

[ВВ] По сути, да. На самом деле оно уже сейчас везде применяется. Даже мобильные телефоны теперь многоядерные. Если вы программируете для мобильных платформ, вы обязаны знать, что такое многоядерность и каким образом синхронизировать обмен данных для обеспечения параллельного выполнения программ. Раньше учили программировать, а сейчас нужно учить параллельно программировать, причём всех.

[КШ] То есть люди приходят с готовой программой?

[ВВ] Иногда да. Но сейчас уже наработана огромная программная инфраструктура готовых прикладных пакетов — например, для задач по молекулярной динамике, аэродинамике, электродинамике. И это, конечно же, великое дело. Человеку не нужно плясать от печки, программировать всё с нуля. Он задает параметры своей модели, своего изделия, запускает процессы и получает на выходе результаты моделирования.

[КШ] Бывают вычислительные задачи, с которыми «Ломоносов» не справляется?

[ВВ] Есть много шуточных, но метких определений суперкомпьютера. Для главного инженера это машина, которая весит больше тонны, для финансиста — машина, которая стоит больше миллиона долларов. А для многих учёных суперкомпьютер — это машина, мощности которой чуть-чуть не хватает для решения современных задач. И таких задач, конечно, огромное количество. Каждый старается свою модель расширить до тех пределов, которые позволяет потенциал программного обеспечения и аппаратуры. А когда пределы достигнуты, остается лишь ждать появления следующего поколения машин.

Все вычислительные узлы связывает сеть с пропускной способностью до 40 Гб/с

Будущее суперкомпьютеров

[КШ] Соблюдается ли для суперкомпьютеров Закон Мура, утверждающий, что каждые два года мощность процессоров удваивается?

[ВВ] До сих пор более или менее соблюдался. Сейчас наметилось некоторое отклонение: рост мощности немного замедлился. Здесь пищу для размышлений даёт тот же Топ-500 — он ведётся с начала девяностых, накоплена большая статистика. Если по ней смотреть, получается просто идеальная прямая на логарифмической шкале. И это удивительно, ведь закон Мура не доказан, он основан только на эмпирических наблюдениях. Но, кажется, это сверхбыстрое развитие начало всё-таки потихонечку загибаться — сейчас закон Мура сохраняется за счёт того, что увеличивается степень параллельности. А частота процессоров уже не растёт — слишком много энергии потребляется и выделяется. Но благодаря параллельности пока удаётся поддерживать быстрое увеличение производительности.

[КШ] Чтобы создать самый большой и мощный суперкомпьютер в мире, достаточно просто иметь много денег?

[ВВ] Вы несколько цинично это обрисовали, но в целом так и есть. Обратите внимание: все современные суперкомпьютеры из верхушки Топ-500 — это отдельные здания. Для китайского Tianhe-2 специально строили целый комплекс. Потребляемая им мощность — 24 мегаватта. Мощность лампочки — 60 ватт. Мощность сервера — 500 ватт. А здесь двадцать четыре миллиона ватт! Это колоссально, это энергопотребление небольшого города. И ведь кто-то должен всё это оплачивать.

«Каждый понимает, как править четвёркой лошадей, но как управлять тысячью цыплят, уже не знает никто — а нам предстоит управлять сотнями миллионов муравьёв».​

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

[КШ] Каким вы видите ближайшее будущее суперкомпьютеров?

[ВВ] Они будут становиться всё более разнообразными: где-то удобнее использовать многоядерную архитектуру, где-то сопроцессоры; где-то главное — большая память, а где-то — быстрое взаимодействие. Очень интересное направление — построение суперкомпьютерных систем на основе мобильных процессоров, тех самых, которые используются в телефонах.

Эти процессоры маломощные с точки зрения производительности, зато очень дешёвые и энергоэффективные. Чтобы создать из них суперкомпьютерную установку, их нужно огромное количество — десятки и сотни миллионов. Для программистов это вызов — как разрабатывать алгоритмы, как писать программы, чтобы заставить это огромное количество муравьёв работать на выполнение одной задачи. Каждый понимает, как править четвёркой лошадей, но как управлять тысячью цыплят, уже не знает никто — а нам предстоит управлять сотнями миллионов муравьёв.

От одного шкафа с оборудованием необходимо отводить до 65 кВт тепла. Система охлаждения занимает около 500 кв. м. внутри и снаружи здания.

[КШ] Как вы думаете, лет через десять ещё останутся такие вот здания-компьютеры?

[ВВ] Останутся, я в этом на сто процентов уверен. Хотя многие их функции уйдут в «облака». Одно из определений суперкомпьютера гласит, что это машина, которая всегда занимает большой зал. В 1956 году в Московском университете поставили первую отечественную серийную машину «Стрела». Производительность — две тысячи операций в секунду, без всяких «мега» и «гига». А занимала она триста квадратных метров! Это побольше, чем «Ломоносов» за стеной. И с того момента всё сохраняется: машина занимает большой зал.

[КШ] Есть ли в России острая потребность в ещё более мощных суперкомпьютерах?

[ВВ] Издеваетесь? Пятьсот пятнадцать ждущих задач! Причём это только фундаментальная наука. И вы спрашиваете про потребности?!

luckyea77.livejournal.com

Обычный ПК решает задачи в десятки раз быстрее суперкомпьютеров |

Группа физиков из Научно-исследовательского института ядерной физики МГУ имени М.В. Ломоносова научилась на персональном компьютере с графическим процессором проводить расчёты сложных уравнений квантовой механики — ранее для этого использовались только мощные и дорогие суперкомпьютеры. ПК справляется с задачей в разы быстрее: за 15 минут он выполняет работу, на которую суперкомпьютер тратит два-три дня. Об этом сообщается в пресс-службе МГУ.

«Мы добились скорости, которая и присниться не может, — рассказал профессор Владимир Кукулин. – Программа работает так, что 260 миллионов сложных двойных интегралов на настольном компьютере она считает за три секунды».

По словам Кукулина, его коллега из Бохумского университета в Германии, лаборатория которого занималась тем же, проводил расчёты с помощью одного из самых больших суперкомпьютеров Германии с известной архитектурой BLUE GENE. «И то, чего его группа добивается за двое-трое суток, мы делаем за 15 минут, не потратив ни копейки», — добавляет профессор.

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

Уравнения, о которых идет речь, были сформулированы еще в 60-х годах прошлого века российским математиком Людвигом Фаддеевым. Уравнения описывали процесс рассеяния нескольких квантовых частиц, то есть представляли собой некий квантовомеханический аналог ньютоновой теории трёх тел. В результате быстро возникла целая область квантовой механики под названием «физика малочастичных систем».

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

Группа из НИИЯФ МГУ решила использовать в ПК один из новых графических процессоров корпорации Nvidia, разработанный для работы в игровых приставках.

Главной проблемой при решении уравнений рассеяния для нескольких квантовых частиц было вычисление интегрального «ядра» – громадной двумерной таблицы, состоящей из десятков и сотен тысяч строк и столбцов, причем каждый элемент такой огромной матрицы был результатом очень сложных вычислений.

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

Воспользовавшись софтом, разработанным в Nvidia, и написав собственные программы, учёные разбили свои вычисления на много тысяч потоков и смогли разрешить задачу.

«Эта работа, на наш взгляд, открывает совершенно новые пути в анализе ядерных и резонансных химических реакций, — говорит Кукулин. — Она также может оказаться очень полезной для решения большого числа вычислительных задач в физике плазмы, электродинамике, геофизике, медицине и множестве других областей науки».

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

yenot.net

СУПЕРКОМПЬЮТЕРЫ: ВЧЕРА, СЕГОДНЯ, ЗАВТРА | Наука и жизнь

У большинства людей слово "компьютер" ассоциируется в первую очередь с персоналкой, которую можно увидеть сегодня не только в любом офисе, но и во многих квартирах. В самом деле, мы живем в эпоху, когда персональный компьютер вошел буквально в каждый дом. Однако не стоит забывать, что ПК - это лишь часть компьютерного мира, где существуют гораздо более мощные и сложные вычислительные системы, недоступные рядовому пользователю. Многие, наверно, слышали о компьютере по имени Deep Blue, который в 1997 году обыграл самого Гарри Каспарова. Интуитивно понятно, что такая машина не могла быть простой персоналкой. Другой пример - отечественный компьютер МВС-1000 производительностью 200 миллиардов операций в секунду, недавно установленный в Межведомственном суперкомпьютерном центре в Москве. Кроме того, в прессе время от времени появляются сообщения о нелегальных поставках в Россию вычислительной техники, попадающей под эмбарго американского правительства.

Открытие межведомственного суперкомпьютерного центра в Президиуме Российской академии наук. На переднем плане 16-процессорный суперкомпьютер Hewlett-Packard V2250.

ASCI RED, детище программы Accelerated Strategic Computing Initiative, - самый мощный на сегодняшний день компьютер.

CRAY T3E - массивно-параллельный компьютер фирмы Тега Computer Company.

Вычислительный кластер Московского государственного университета им. М. В. Ломоносова - минимальная стоимость, суперкомпьютерная производительность. В настоящий момент это самая мощная вычислительная система, установленная в вузе России.

Подобные компьютеры для многих так и остаются тайной за семью печатями, окруженной ореолом ассоциаций с чем-то очень большим: огромные размеры, сверхсложные задачи, крупные фирмы и компании, невероятные скорости работы и т.д. Одним словом, супер-ЭВМ, что-то далекое и недоступное. Между тем, если вам хотя бы раз приходилось пользоваться услугами серьезных поисковых систем в Интернете (см. "Наука и жизнь" № 11, 1999 г.), вы, сами того не подозревая, имели дело с одним из приложений суперкомпьютерных технологий.

Доктор физико-математических наук В. ВОЕВОДИН, заместитель директора Научно-исследовательского вычислительного центра МГУ им. М. В. Ломоносова.

ЧТО ТАКОЕ СУПЕРКОМПЬЮТЕР

Считается, что супер-ЭВМ - это компьютеры с максимальной производительностью. Однако быстрое развитие компьютерной индустрии делает это понятие весьма и весьма относительным: то, что десять лет назад можно было назвать суперкомпьютером, сегодня под это определение уже не подпадает. Производительность первых супер-ЭВМ начала 70-х годов была сравнима с производительностью современных ПК на базе традиционных процессоров Pentium. По сегодняшним меркам ни те, ни другие к суперкомпьютерам, конечно же, не относятся.

В любом компьютере все основные параметры взаимосвязаны. Трудно себе представить универсальный компьютер, имеющий высокое быстродействие и мизерную оперативную память либо огромную оперативную память и небольшой объем дисков. Отсюда простой вывод: супер-ЭВМ - это компьютер, имеющий не только максимальную производительность, но и максимальный объем оперативной и дисковой памяти в совокупности со специализированным программным обеспечением, с помощью которого этим монстром можно эффективно пользоваться.

Суперкомпьютерам не раз пытались давать универсальные определения - иногда они получались серьезными, иногда ироничными. Например, как-то предлагалось считать суперкомпьютером машину, вес которой превышает одну тонну. Несколько лет назад был предложен и такой вариант: суперкомпьютер - это устройство, сводящее проблему вычислений к проблеме ввода/вывода. В самом деле, задачи, которые раньше вычислялись очень долго, на супер-ЭВМ выполняются мгновенно, и почти все время теперь уходит на более медленные процедуры ввода и вывода данных, производящиеся, как правило, с прежней скоростью.

Так что же такое современный суперкомпьютер? Самая мощная ЭВМ на сегодняшний день - это система Intel ASCI RED, построенная по заказу Министерства энергетики США. Чтобы представить себе возможности этого суперкомпьютера, достаточно сказать, что он объединяет в себе 9632 (!) процессора Pentium Pro, имеет более 600 Гбайт оперативной памяти и общую производительность в 3200 миллиардов операций в секунду. Человеку потребовалось бы 100000 лет, чтобы даже с калькулятором выполнить все те операции, которые этот компьютер делает всего за 1 секунду!

Создать подобную вычислительную систему - все равно, что построить целый завод со своими системами охлаждения, бесперебойного питания и т.д. Понятно, что любой суперкомпьютер, даже в более умеренной конфигурации, должен стоить не один миллион долларов США: ради интереса прикиньте, сколько стоят, скажем, лишь 600 Гбайт оперативной памяти? Возникает естественный вопрос: какие задачи настолько важны, что требуются компьютеры стоимостью в несколько миллионов долларов? Или еще один: какие задачи настолько сложны, что хорошего Pentium III для их решения недостаточно?

НУЖНЫ ЛИ НАМ СУПЕРКОМПЬЮТЕРЫ?

Оказывается, существует целый ряд жизненно важных проблем, которые просто невозможно решать без использования суперкомпьютерных технологий.

Возьмем, к примеру, США, по территории которых два раза в год проходят разрушительные торнадо. Они сметают на своем пути города, поднимают в воздух автомобили и автобусы, выводят реки из берегов, заливая тем самым гигантские территории. Борьба с торнадо - существенная часть американского бюджета. Только штат Флорида, который находится недалеко от тех мест, где эти смерчи рождаются, за последние годы потратил более 50 миллиардов долларов на экстренные меры по спасению людей. Правительство не жалеет денег на внедрение технологий, которые позволили бы предсказывать появление торнадо и определять, куда он направится.

Как рассчитать торнадо? Очевидно, что для этого надо решить задачу о локальном изменении погоды, то есть задачу о движении масс воздуха и распределении тепла в неком регионе. Принципиально это несложно, однако на практике возникают две проблемы. Проблема первая: чтобы заметить появление смерча, надо проводить расчет на характерных для его образования размерах, то есть на расстояниях порядка двух километров. Вторая трудность связана с правильным заданием начальных и граничных условий. Дело в том, что температура на границах интересующего вас региона зависит от того, что делается в соседних регионах. Рассуждая дальше, легко убедиться, что мы не можем решить задачу о смерче, не имея данных о климате на всей Земле. Климат на планете рассчитать можно, что и делается каждый день во всех странах для составления среднесрочных прогнозов погоды. Однако имеющиеся ресурсы позволяют вести расчеты лишь с очень большим шагом - десятки и сотни километров. Ясно, что к предсказанию смерчей такой прогноз не имеет никакого отношения.

Необходимо совместить две, казалось бы, плохо совместимые задачи: глобальный расчет, где шаг очень большой, и локальный, где шаг очень маленький. Сделать это можно, но лишь собрав в кулаке действительно фантастические вычислительные ресурсы. Дополнительная трудность состоит еще и в том, что вычисления не должны продолжаться более 4 часов, так как за 5 часов картина погоды смазывается совершенно, и все, что вы считаете, уже не имеет никакого отношения к реальности. Нужно не только обработать гигантский объем данных, но и сделать это достаточно быстро. Такое под силу лишь суперкомпьютерам.

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

Так, по данным компании Ford, для выполнения crash-тестов, при которых реальные автомобили разбиваются о бетонную стену с одновременным замером необходимых параметров, со съемкой и последующей обработкой результатов, ей понадобилось бы от 10 до 150 прототипов для каждой новой модели. При этом общие затраты составили бы от 4 до 60 миллионов долларов. Использование суперкомпьютеров позволило сократить число прототипов на одну треть.

Известной фирме DuPont суперкомпьютеры помогли синтезировать материал, заменяющий хлорофлюорокарбон. Нужно было найти материал, имеющий те же положительные качества: невоспламеняемость, стойкость к коррозии и низкую токсичность, но без вредного воздействия на озоновый слой Земли. За одну неделю были проведены необходимые расчеты на суперкомпьютере с общими затратами около 5 тысяч долларов. По оценкам специалистов DuPont, использование традиционных экспериментальных методов исследований потребовало бы 50 тысяч долларов и около трех месяцев работы - и это без учета времени, необходимого на синтез и очистку требуемого количества вещества.

ПОЧЕМУ СУПЕРКОМПЬЮТЕРЫ СЧИТАЮТ ТАК БЫСТРО?

Итак, мы видим, что без суперкомпьютеров сегодня действительно не обойтись. Осталось прояснить еще один вопрос: почему они считают так быстро? Это может быть связано, во-первых, с развитием элементной базы и, во-вторых, с использованием новых решений в архитектуре компьютеров.

Попробуем разобраться, какой из этих факторов оказывается решающим для достижения рекордной производительности. Обратимся к известным историческим фактам. На одном из первых компьютеров мира EDSAC, появившемся в 1949 году в Кембридже и имевшем время такта 2 микросекунды (2·10-6 секунды), можно было выполнить 2n арифметических операций за 18n миллисекунд, то есть в среднем 100 арифметических операций в секунду. Сравним с одним вычислительным узлом современного суперкомпьютера Hewlett-Packard V2600: время такта приблизительно 1,8 наносекунды (1,8·10-9 секунды), а пиковая производительность - около 77 миллиардов арифметических операций в секунду.

Что же получается? За полвека производительность компьютеров выросла более чем в семьсот миллионов раз. При этом выигрыш в быстродействии, связанный с уменьшением времени такта с 2 микросекунд до 1,8 наносекунды, составляет лишь около 1000 раз. Откуда же взялось остальное? Ответ очевиден - за счет использования новых решений в архитектуре компьютеров. Основное место среди них занимает принцип параллельной обработки данных, воплощающий идею одновременного (параллельного) выполнения нескольких действий.

Различают два способа параллельной обработки: собственно параллельную и конвейерную. Оба способа интуитивно абсолютно понятны, поэтому сделаем лишь небольшие пояснения.

Параллельная обработка

Предположим для простоты, что некое устройство выполняет одну операцию за один такт. В этом случае тысячу операций такое устройство выполнит за тысячу тактов. Если имеется пять таких же независимых устройств, способных работать одновременно, то ту же тысячу операций система из пяти устройств может выполнить уже не за тысячу, а за двести тактов. Аналогично система из N устройств ту же работу выполнит за 1000/N тактов. Подобные примеры можно найти и в жизни: если один солдат выкопает траншею за 10 часов, то рота солдат из пятидесяти человек с такими же способностями, работая одновременно, справится с той же работой за 12 минут- принцип параллельности в действии!

Кстати, пионером в параллельной обработке потоков данных был академик А. А. Самарский, выполнявший в начале 50-х годов расчеты, необходимые для моделирования ядерных взрывов. Самарский решил эту задачу методом сеток, посадив несколько десятков барышень с арифмометрами за столы (узлы сетки). Барышни передавали данные одна другой просто на словах и откладывали необходимые цифры на арифмометрах. Таким образом, в частности, была рассчитана эволюция взрывной волны. Работы было много, барышни уставали, а Александр Андреевич ходил между ними и подбадривал. Так создали, можно сказать, первую параллельную систему. Хотя расчеты водородной бомбы провели мастерски, точность их оказалась очень низкой, потому что узлов в используемой сетке было мало, а время счета получалось слишком большим.

Конвейерная обработка

Что необходимо для сложения двух вещественных чисел, представленных в форме с плавающей запятой? Целое множество мелких операций, таких, как сравнение порядков, выравнивание порядков, сложение мантисс, нормализация и т.п. Процессоры первых компьютеров выполняли все эти "микрооперации" для каждой пары слагаемых последовательно, одну за другой, до тех пор, пока не доходили до окончательного результата, и лишь после этого переходили к обработке следующей пары слагаемых.

Идея конвейерной обработки заключается в расчленении операции на отдельные этапы, или, как это принято называть, ступени конвейера. Каждая ступень, выполнив свою работу, передает результат следующей ступени, одновременно принимая новую порцию входных данных. Получается очевидный выигрыш в скорости обработки. В самом деле, предположим, что в операции сложения можно выделить пять микроопераций, каждая из которых выполняется за один такт работы компьютера. Если есть одно неделимое последовательное устройство сложения, то 100 пар аргументов оно обработает за 500 тактов. Если теперь каждую микрооперацию преобразовать в отдельную ступень конвейерного устройства, то на пятом такте на разной стадии обработки будут находиться первые пять пар аргументов, и далее конвейерное устройство будет выдавать результат очередного сложения каждый такт. Очевидно, что весь набор из ста пар слагаемых будет обработан за 104 единицы времени - ускорение по сравнению с последовательным устройством почти в пять раз (по числу ступеней конвейера).

Идеи параллельной обработки появились очень давно. Изначально они внедрялись в самых передовых, а потому единичных компьютерах своего времени. Затем после должной отработки технологии и удешевления производства они спускались в компьютеры среднего класса, и наконец сегодня все это в полном объеме воплощается в рабочих станциях и персональных компьютерах. Все современные микропроцессоры, будь то Pentium III или РА-8600, Е2К или Power2 SuperChip, используют тот или иной вид параллельной обработки.

Для того чтобы лишний раз убедиться, что все новое - это хорошо забытое старое, достаточно лишь нескольких примеров. Уже в 1961 году создается компьютер IBM STRETCH, имеющий две принципиально важные особенности: опережающий просмотр вперед для выборки команд (при котором одновременно с текущей считываются команды, выполняемые позднее) и расслоение памяти на два банка - реализация параллелизма при работе с памятью. В 1963 году в Манчестерском университете разработан компьютер ATLAS, использующий конвейерный принцип выполнения команд. Выполнение команд разбито на четыре стадии: выборка команды, вычисление адреса операнда, выборка операнда и выполнение операции. Это позволило уменьшить время выполнения команд в среднем с 6 до 1,6 микросекунды. В1969 году Control Data Corporation выпускает компьютер CDC-7600 с восемью независимыми конвейерными функциональными устройствами.

СОВРЕМЕННЫЕ СУПЕРКОМПЬЮТЕРЫ

А что же сейчас используют в мире? По каким направлениям идет развитие высокопроизводительной вычислительной техники? Таких направлений четыре.

Векторно-конвейерные компьютеры

Две главные особенности таких машин: наличие конвейерных функциональных устройств и набора векторных команд. В отличие от обычных команд векторные оперируют целыми массивами независимых данных, то есть команда вида А=В+С может означать сложение двух массивов, а не двух чисел. Характерный представитель данного направления - семейство векторно-конвейерных компьютеров CRAY, куда входят, например, CRAY EL, CRAY J90, CRAY T90 (в марте этого года американская компания TERA перекупила подразделение CRAY у компании Silicon Graphics, Inc.).

Массивно-параллельные компьютеры с распределенной памятью

Идея построения компьютеров этого класса тривиальна: серийные микропроцессоры соединяются с помощью сетевого оборудования - вот и все. Достоинств у такой архитектуры масса: если нужна высокая производительность, то можно добавить процессоры, а если ограничены финансы или заранее известна требуемая вычислительная мощность, то легко подобрать оптимальную конфигурацию. К этому же классу можно отнести и простые сети компьютеров, которые сегодня все чаще рассматриваются как дешевая альтернатива крайне дорогим суперкомпьютерам. (Правда, написать эффективную параллельную программу для таких сетей довольно сложно, а в некоторых случаях просто невозможно). К массивно-параллельным можно отнести компьютеры Intel Paragon, ASCI RED, IBM SP1, Parsytec, в какой-то степени IBM SP2 и CRAY T3D/T3E.

Параллельные компьютеры с общей памятью

Вся оперативная память в таких компьютерах разделяется несколькими одинаковыми процессорами, обращающимися к общей дисковой памяти. Проблем с обменом данными между процессорами и синхронизацией их работы практически не возникает. Вместе с тем главный недостаток такой архитектуры состоит в том, что по чисто техническим причинам число процессоров, имеющих доступ к общей памяти, нельзя сделать большим. В данное направление суперкомпьютеров входят многие современные SMP-компьютеры (Symmetric Multi Processing), например сервер НР9000 N-class или Sun Ultra Enterprise 5000.

Кластерные компьютеры

Этот класс суперкомпьютеров, строго говоря, нельзя назвать самостоятельным, скорее, он представляет собой комбинации предыдущих трех. Из нескольких процессоров, традиционных или векторно-конвейерных, и общей для них памяти формируется вычислительный узел. Если мощности одного узла недостаточно, создается кластер из нескольких узлов, объединенных высокоскоростными каналами. По такому принципу построены CRAY SV1, HP Exemplar, Sun StarFire, NEC SX-5, последние модели IBM SP2 и другие. В настоящее время именно это направление считается наиболее перспективным.

Два раза в год составляется список пятисот самых мощных вычислительных установок мира (его можно посмотреть в Интернете по адресу http://parallel.ru/top500.html). Согласно последней редакции списка top500, вышедшей в ноябре прошлого года, первое место занимает массивно-параллельный компьютер Intel ASCI Red. На второй позиции стоит компьютер ASCI Blue-Pacific от IBM, объединяющий 5808 процессоров PowerPC 604e/332MHz. Оба эти суперкомпьютера созданы в рамках американской национальной программы Advanced Strategic Computing Initiative, аббревиатура которой и присутствует в названии. Производительность компьютера, стоящего на последнем, 500-м, месте в списке самых мощных, составляет 33,4 миллиарда операций в секунду.

Если мощность существующих компьютеров поражает, то что говорить о планах. В декабре 1999 года корпорация IBM сообщила о новом исследовательском проекте общей стоимостью около 100 миллионов долларов, цель которого - построение суперкомпьютера, в 500 раз превосходящего по производительности самые мощные компьютеры сегодняшнего дня. Компьютер, имеющий условное название Blue Gene, будет иметь производительность порядка 1 PETAFLOPS (1015 операций в секунду) и использоваться для изучения свойств белковых молекул. Предполагается, что каждый отдельный процессор Blue Gene будет иметь производительность порядка 1 GFLOPS (109 операций в секунду). 32 подобных процессора будут помещены на одну микросхему. Компактная плата размером 2x2 фута будет вмещать 64 микросхемы, что по производительности не уступает упоминавшимся ранее суперкомпьютерам ASCI, занимающим площадь 8000 квадратных метров. Более того, 8 таких плат будут помещены в 6-футовую стойку, а вся система будет состоять из 64 стоек с суммарной производительностью 1 PFLOPS. Фантастика!

Вычислительный кластер Московского государственного университета им. М. В. Ломоносова - минимальная стоимость, суперкомпьютерная производительность. В настоящий момент это самая мощная вычислительная система, установленная в вузе России.

СУПЕРКОМПЬЮТЕРЫ В РОССИИ

Идеи построения собственных суперкомпьютерных систем существовали в России всегда. Еще в 1966 году М.А.Карцев выдвинул идею создания многомашинного вычислительного комплекса М-9 производительностью около миллиарда операций в секунду. В то время ни одна из машин мира не работала с такой скоростью. Однако, несмотря на положительную оценку министерства, комплекс М-9 промышленного освоения не получил.

Работы по созданию суперкомпьютерных систем и суперкомпьютерных центров ведутся в России и сейчас. Наиболее известна линия отечественных суперкомпьютеров МВС-1000, создаваемая в кооперации научно-исследовательских институтов Российской академии наук и промышленности. Супер-ЭВМ линии МВС-1000 - это мультипроцессорный массив, объединенный с внешней дисковой памятью, устройствами ввода/вывода информации и управляющим компьютером. Компьютеры МВС-1000 используют микропроцессоры Alpha 21164 (разработка фирмы DEC-Compaq) с производительностью до 1-2 миллиардов операций в секунду и оперативной памятью объемом 0,1-2 Гбайта.

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

В последнее время в России, также как и во всем мире, активно используется кластерный подход к построению суперкомпьютеров. Покупаются стандартные компьютеры и рабочие станции, которые с помощью стандартных сетевых средств объединяются в параллельную вычислительную систему. По такому пути пошел, и, надо сказать, успешно, Научно-исследовательский вычислительный центр Московского государственного университета им. М.В.Ломоносова, создавший кластер из 12 двухпроцессорных серверов "Эксимер" на базе Intel Pentium III/500MHz (в сумме 24 процессора, более 3 Гбайт оперативной памяти, 66 Гбайт дисковой памяти). Сегодня это крупнейшая вычислительная установка в вузе России, предназначенная для поддержки фундаментальных научных исследований и образования. При минимальной стоимости вычислительный кластер НИВЦ МГУ показывает производительность 5,7 миллиарда операций в секунду при решении системы линейных алгебраических уравнений с плотной матрицей размером 16000x16000! В будущем планируется значительно увеличить мощность кластера как за счет добавления новых процессоров, так и за счет модернизации вычислительных узлов.

ВМЕСТО ЗАКЛЮЧЕНИЯ

К сожалению, чудеса в нашей жизни случаются редко. Гигантская производительность параллельных компьютеров и супер-ЭВМ с лихвой компенсируется сложностью их использования. Да что там использование, иногда даже вопросы, возникающие вокруг суперкомпьютеров, ставят в тупик. Как вы думаете, верно ли утверждение: чем мощнее компьютер, тем быстрее на нем можно решить данную задачу? Ну, конечно же, нет... Простой бытовой пример. Если один землекоп выкопает яму за 1 час, то два землекопа справятся с задачей за 30 мин - в это еще можно поверить. А за сколько времени эту работу сделают 60 землекопов? Неужели за 1 минуту? Конечно же, нет! Начиная с некоторого момента они будут просто мешать друг другу, не ускоряя, а замедляя процесс. Так же и в компьютерах: если задача слишком мала, то мы будем дольше заниматься распределением работы, синхронизацией процессов, сборкой результатов и т. п., чем непосредственно полезной деятельностью.

Но все вопросы, сопровождающие суперкомпьютер, конечно же, решаются. Да, использовать суперкомпьютеры сложнее, чем персоналку: нужны дополнительные знания и технологии, высококвалифицированные специалисты, более сложная информационная инфраструктура. Написать эффективную параллельную программу намного сложнее, чем последовательную, да и вообще создание программного обеспечения для параллельных компьютеров - это центральная проблема суперкомпьютерных вычислений. Но без супер-ЭВМ сегодня не обойтись, и отрадно, что в нашей стране есть понимание необходимости развития этих технологий. Так, в ноябре прошлого года в Президиуме Российской академии наук состоялось открытие межведомственного суперкомпьютерного центра. В процессе становления суперкомпьютерные центры в Дубне, Черноголовке, Институте прикладной математики РАН им. М. В. Келдыша, Институте математического моделирования РАН, Московском государственном университете им. М. В. Ломоносова. Создана и развивается линия отечественных суперкомпьютеров МВС-1000. Активно разворачивает свою деятельность Информационно-аналитический центр по параллельным вычислениям в сети Интернет WWW.PARALLEL.RU, осуществляющий информационную поддержку многих российских проектов. А иначе и нельзя. Параллельные вычисления и параллельные компьютеры - это реальность, и это уже навсегда.

• ПОДРОБНОСТИ ДЛЯ ЛЮБОЗНАТЕЛЬНЫХ

ЗАКОН АМДАЛА

Представьте себе ситуацию: у вас есть программа и доступ, скажем, к 256-процессорному суперкомпьютеру. Вы, вероятно, ожидаете, что программа будет выполняться в 256 раз быстрее, чем на одном процессоре? А вот этого, скорее всего, и не произойдет.

Предположим, что в вашей программе доля операций, которые нужно выполнять последовательно, равна f, причем 0 ≤ f ≤ 1 (эта доля определяется не по числу строк кода, а по числу операций в процессе выполнения). Крайние случаи в значениях f соответствуют полностью параллельным (f=0) и полностью последовательным (f=1) программам. Так вот, для того, чтобы оценить, какое ускорение S можно получить на компьютере, состоящем из р процессоров, при данном значении f, воспользуемся законом Амдала:

S ≤ 1/{f+(1- f)/p}.

Если вдуматься как следует, то закон на самом деле страшный. Предположим, что в вашей программе лишь 10% последовательных операций, т.е. f=0,1. В этом случае закон утверждает: сколько бы процессоров вы ни использовали, ускорения работы программы более чем в десять раз никак не получите. Да и то десять - это теоретическая оценка сверху самого лучшего случая, когда никаких других отрицательных факторов нет...

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

В ряде случаев последовательный характер алгоритма изменить не так сложно. Допустим, что в программе есть следующий фрагмент для вычисления суммы п чисел:

s = 0,

Do i = 1, n

s = s + а(i)

EndDo

Этот алгоритм строго последовательный, так как на i-той итерации цикла требуется результат (i-1)-вой, и все итерации выполняются одна за другой. В данном случае f=1, и, стало быть, никакого эффекта от использования параллельных компьютеров для выполнения этого алгоритма мы не получим. Вместе с тем выход очевиден. Поскольку в большинстве реальных случаев нет существенной разницы, в каком порядке складывать числа, выберем иную схему сложения. Сначала найдем сумму пар соседних элементов: а(1)+а(2), а(3)+а(4), а(5)+а(6) и т. д. Заметим, что при такой схеме все пары можно складывать одновременно. На следующих шагах будем действовать аналогично, получив вариант параллельного алгоритма.

Казалось бы, в данном случае все проблемы удалось разрешить. Но остается еще множество других трудностей, связанных с разной производительностью процессоров, скоростью передачи данных и т. д. Но это уже тонкости параллельного программирования, с азами которого вы в скором времени сможете познакомиться в интернетовском курсе по адресу

http://parallel.ru/vvv/.

РАСПРЕДЕЛЕНИЕ ПЯТИСОТ САМЫХ МОЩНЫХ КОМПЬЮТЕРОВ МИРА ПО СТРАНАМ, ГДЕ ОНИ РАСПОЛОЖЕНЫ, И ФИРМАМ-ПРОИЗВОДИТЕЛЯМ

США-Канада Европа Япония Остальные ВСЕГО
IBM 67 67 2 5 141
SGI/CRAY 92 27 12 2 133
SUN 76 29 4 4 113
Hewlett-Packard 33 10 2 45
Fujitsu 1 9 15 1 26
NEC 2 7 10 2 21
Hitachi 1 10 11
Остальные 6 2 2 10
ВСЕГО 277 152 57 14 500

www.nkj.ru

С миру по нитке: Суперкомпьютер

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

Существует множество научных задач, для решения которых нужны очень мощные компьютеры. Например, моделирование ядерных испытаний — именно этим занимается самый мощный в мире суперкомпьютер Roadrunner. Огромного ресурса вычислительных мощностей требует прогноз погоды — как раз для этой цели Гидрометцентр России недавно обзавелся новым 30-тонным суперкомпьютером с производительностью вычислений 27 терафлоп. И это только два примера из огромного количества подобных задач. До недавнего времени их обычно решали с помощью суперкомпьютеров.

Суперкомпьютеры и кластеры

Суперкомпьютерами принято называть вычислительные системы огромной производительности, которые состоят из большого количества вычислительных узлов, объединенных в единый ресурс. Менее производительные вычислительные системы — кластеры, в них функция вычислительных узлов возложена на автономные компьютеры, подключенные к скоростной сети обмена данными. Компьютеры, входящие в кластер, могут находиться в разных помещениях и даже зданиях — всюду, куда можно протянуть сетевой кабель. Многие научно-исследовательские центры и крупные университеты отдают предпочтение именно кластерам как дешевой альтернативе суперкомпьютерам, используя для этих целей парк своей компьютерной техники. Суперкомпьютеры и кластеры различаются только внешне, по сути же они работают схожим образом и относятся к системам параллельных сетевых вычислений — grid-сетям (англ. grid — решетка, сетка). Этот тип вычислений отличается скоростным взаимодействием между собой вычислительных узлов, что позволяет моделировать протекание сложных природных процессов.

Каждый час работы суперкомпьютеров расписан на месяцы вперед. Исследовательские группы чуть ли не дерутся между собой, чтобы получить доступ к консолям вычислительных гигантов. И в то же время в мире простаивают без дела технические средства с совокупной мощностью, способной заткнуть за пояс весь TOP500 самых производительных суперкомпьютеров мира.

Малой кровью

Этот малоосвоенный резерв — домашние и рабочие персональные компьютеры. Их центральные процессоры большую часть времени работают «вхолостую», даже когда пользователь набирает текст, смотрит видео или слушает музыку. Предоставив пропадающее даром процессорное время на нужды науки с помощью глобальной сети распределенных вычислений (distributed computing), владелец ПК не чувствует неудобств, кроме разве что шума от вентиляторов из-за повышенного тепловыделения процессора — вычисления выполняются с минимальным приоритетом, не сказываясь на работе других программ. Соединение с интернетом необходимо лишь для отправки результатов на сервер и получения новых заданий — расходы на трафик вырастут незначительно.

Распределенные вычисления прекрасно справляются с задачами перебора — например, при поиске простых чисел или совпадения конфигурации молекул потенциальных лекарственных веществ и белков-мишеней, с обработкой данных прямых наблюдений в радиоастрономии и астрофизике, с крупномасштабным моделированием природных процессов, а также с разработкой математического аппарата научных исследований. Специализация объясняется трудностями налаживания эффективного взаимодействия между разбросанными по всему миру персоналками. Поэтому общая вычислительная задача не «заглатывается» целиком, а разбивается на отдельные блоки, обсчитываемые на разных компьютерах в произвольном порядке и независимо друг от друга.

Уступая профессиональным кластерным системам в удельной производительности на единичный процессор, ПК, ноутбуки и серверы участников распределенных вычислений берут числом: их армия растет стремительными темпами, тогда как запуск новых суперкомпьютеров — событие редкое, попадающее в выпуски новостей.

От математики до внеземного разума

Идея совместного использования вычислительных ресурсов нескольких машин возникла еще на заре компьютерной эпохи. В 1973 году Джон Шох и Жон Хапп из знаменитого калифорнийского научно-исследовательского центра Xerox PARC (Palo Alto Research Center) написали программу, которая по ночам запускалась в локальную сеть PARC, расползалась по работающим компьютерам и заставляла их выполнять вычисления.

Качественный скачок в обеспечении совместной работы многих компьютеров над единой задачей произошел с появлением первых персональных компьютеров и электронной почты. В 1988 году Арьен Ленстра и Марк Менес написали программу для факторизации (разбиения на множители) длинных чисел. Для ускорения процесса программа могла запускаться на нескольких не связанных друг с другом машинах, каждая из которых обрабатывала свой небольшой фрагмент. Новые блоки заданий рассылались на компьютеры участников с центрального сервера проекта по обычной электронной почте. Для успешного разложения на множители числа длиной в сто знаков этому сообществу потребовалось два года и несколько сотен персональных компьютеров. С успешным завершением проекта Ленстра-Менеса на древе эволюции вычислительных систем выросла новая жизнеспособная ветвь — распределенные вычисления.

28 января 1997 года распределенные вычисления сделали очередной шажок — стартовал конкурс RSA Data Security на решение задачи взлома методом простого перебора 56-битного ключа шифрования информации RC5−32/12/7. Благодаря хорошей технической и организационной подготовке проект, организованный некоммерческим сообществом distributed.net, быстро получил широкую известность.

17 мая 1999 года Дэвид Геди и Крейг Кеснов из Лаборатории космических исследований Калифорнийского университета в Беркли запустили распределенный проект поиска сигналов внеземных цивилизаций SETI@home (SETI — Search for Extraterrestrial Intelligence at Home), который до сих пор остается одним из наиболее массовых проектов. Огромной популярности способствовало то, что впервые была переведена на рельсы распределенных вычислений интригующая научная задача, далекая от скучной факторизации или взлома очередного ключа. Заслуга организаторов SETI@home не только в постановке интересной задачи, но и в разработке универсальной платформы BOINC (Berkeley Open Infrastructure for Network Computing) для запуска новых проектов. Сегодня количество проектов на этой платформе уже перевалило за сотню. Клиентская часть BOINC позволяет подключаться к нескольким проектам, вести статистику участия в них и наблюдать за протеканием вычислений. Практически каждый, кто обладает базовыми навыками программирования и у кого найдется достойная поддержки научная идея, может организовать собственный проект распределенных вычислений на основе BOINC. Так сделал, например, физик Константин Метлов из Донецкого физико-технического института (ДонФТИ). Практически в одиночку он запустил проект Magnetism@home по расчету магнитных конфигураций цилиндрических наноэлементов.

Распределенная мощь

Яркий пример того, насколько эффективным может стать вовлечение пользователей персоналок в научные исследования, — проект Folding@home, организованный Виджаем Панде из Стэнфордского университета для моделирования фолдинга (сворачивания) молекул белков человеческого организма. Более 400 000 только постоянно подключенных процессоров «разогнали» проект до 5000 терафлоп. Никакой суперкомпьютер не выдержит конкуренции с распределенной сетью такой производительности, ежедневно увеличивающей вычислительный потенциал за счет новых участников. Даже рекордсмен Roadrunner может похвастаться всего 1105 терафлоп при 129 600 процессорных ядрах.

Знаменитый SETI@home — проект поиска радиосигналов из далекого космоса — располагает только 315 000 активных процессоров с общей скоростью выполнения операций 500 терафлоп. Хотя это и не самые высокие показатели в мире распределенных вычислений, но даже их хватает, чтобы занять почетное третье место в TOP500, оттеснив на четвертую строчку суперкомпьютер NASA — Pleiades (487 терафлоп).

Большинство проектов распределенных вычислений носят некоммерческий характер, хотя некоторые предлагают своим участникам денежное вознаграждение за искомое событие. Например, организаторы GIMPS (Great Internet Mersenne Prime Search) — проекта поиска простых чисел Мерсенна (числа вида 2n-1, где n — натуральное число; на сегодня известно 45 таких чисел, самое большое из которых 243 112 609−1), имеющих большое значение в теории чисел и криптографии, — обещают поделиться наградой в $150 000 за нахождение простого числа, состоящего из 100 млн цифр. Но это скорее исключение, чем правило: большинство организаторов не планируют обогащения за счет использования компьютеров добровольцев и все полученные научные результаты размещают в открытом виде.

Развитие распределенных вычислений продолжается. Под ружье научного прогресса поставлены даже видеокарты и игровые приставки. Видеть в качестве вычислительного ресурса такие устройства непривычно, но на практике они могут дать фору самому мощному компьютеру. К примеру, в проекте Folding@home уже с лета 2006 года используют потенциал 8-ядерных процессоров Cell игровых приставок PlayStation 3, способных выдать примерно 20 гигафлоп, что на порядок больше, чем у обычного офисного компьютера. Благодаря соглашению с компанией Sony программа для моделирования динамики фолдинга белков встроена в приставки изначально, но владелец устройства сам вправе решать — подключаться ему к проекту или нет. Осенью того же года в Folding@home смогли освоить вычислительные возможности графических процессоров видеокарт компании ATI (ныне AMD), а в 2008 году очередь дошла и до видеокарт nVIDIA. Многоядерные графические процессоры оправдали все надежды, показывая феноменальную производительность в 100 гигафлоп. Этот технологический прорыв сделал Folding@home наиболее мощным вычислительным проектом на планете.

На любой вкус

Любой желающий может сегодня помочь науке, приняв участие в одном из проектов распределенных вычислений. Причем, разумеется, перечень наук не ограничивается только математикой, астрономией и биологией. Можно помочь физикам в планировании экспериментов на Большом адронном коллайдере или проектировании Neutrino Factory — будущего ускорителя, способного порождать потоки нейтрино. Широкий выбор у любителей астрономии — от поиска сигналов внеземного разума и обнаружения гравитационных волн с помощью гравитационно-волновых обсерваторий LIGO и GEO 600 до расчета конфигурации поглощения нашей галактикой одного из звездных скоплений созвездия Стрельца, нахождения «оптимальной» космологической модели Вселенной и расчета орбит астероидов, представляющих угрозу для Земли.

В области биологии и медицины запущено множество проектов по изучению структуры белков, новых средств профилактики СПИД, изучения раковых заболеваний и борьбы с вирусами семейства Flaviviridae, ответственными за возникновение вспышек лихорадки Деньге, желтой лихорадки и лихорадки Западного Нила. Химикам могут помочь решение задач квантовой химии методами Монте-Карло и моделирование межатомного взаимодействия в твердых телах.

Математики традиционно используют распределенные вычисления для поиска различных чисел: наименьшего числа Серпинского, простых чисел нескольких видов, простых чисел Вифериха, новых делителей чисел Ферма — или доказательства гипотезы Гольдбаха. Криптографы занимаются проверкой алгоритма шифрования RC5, поиском оптимальных линеек Голомба и дешифровкой последней из нерасшифрованных немецких радиограмм, датируемой 1942 годом. Кибернетики изучают возможность создания глобальной нейронной сети и воссоздают поведение человека на основе компьютерного моделирования лингвистического способа познания мира. А климатологи моделируют различные варианты изменения климата: в рамках проекта ClimatePrediction с 2002 года проверено более 400 000 климатических моделей с общим модельным временем 40 млн лет.

Подробную информацию о проектах можно найти на сайте www.distributed.ru

Статья опубликована в журнале «Популярная механика» (№6, Июнь 2009).

www.popmech.ru

«Пока наши компьютеры — тренировочные игрушки»

Надежды на светлое квантовое будущее пока остаются надеждами: пригодный для решения практических задач универсальный квантовый компьютер еще не создан. Однако есть второй путь — создание специализированных квантовых вычислительных устройств, которые могут решать определенный тип задач, но делают это так, что никакой «обычный» компьютер будет не в силах за ними угнаться. Перспективы создания таких машин и их преимущества обсуждали в Москве на конференции «Сверхпроводниковые квантовые технологии», организованной НИТУ «МИСиС», МФТИ и Российским квантовым центром. Редакция N + 1 поговорила о возможностях и будущем квантовых симуляторов с Павлом Буныком, главным конструктором архитектуры процессоров компании D-wave.

Вы занимаетесь разработкой квантовых симуляторов на базе сверхпроводящих кубитов, а какие задачи имеет смысл решать с их помощью?

Первоначально это были задачи оптимизации. Представьте себе: ездят грузовики, развозят товар по разным точкам, и вам нужно их оптимально распределить по маршрутам, решить, кто, что и куда должен отвезти. Эта задача очень и очень сложная. Классические компьютеры решают ее плохо, потому что им приходится перебирать огромное число вариантов. К сожалению, не доказано, что квантовые компьютеры могут решать ее намного лучше, однако есть надежда, что они улучшат те решения, которые дают классические вычислительные машины.

В частности, задача коммивояжера, которая представляет собой формализованный вариант задачи с грузовиками, решается на классическом компьютере простейшим перебором за n! шагов, где n — число вершин, которые нужно обойти. Например, чтобы найти оптимальный маршрут между 15 городами-миллионниками России, понадобится перебрать 15! — более 1,3 триллиона — вариантов. Квантовый алгоритм Гровера позволяет решить эту задачу уже за √n! шагов, то есть дает практически квадратичный прирост по времени. Конечно, существуют и более быстрые классические алгоритмы (например, алгоритм Хелда-Карпа), однако их аналоги для квантовых компьютеров тоже работают быстрее. Поэтому сейчас квантовые компьютеры находятся впереди, хотя бы теоретически.

Кроме того, сейчас возник большой интерес к задачам искусственного интеллекта (нейросетям), которые очень похожи на задачи оптимизации.

Что интересно — и в задачах оптимизации, и в задачах искусственного интеллекта совершенно не обязательно искать самое-самое оптимальное решение. Достаточно найти решение, которое лучше того, что найдут другие методы — быстрее либо дешевле. И в принципе, компания D-wave позиционирует свои квантовые компьютеры именно таким образом. Никто из D-wave не скажет вам, что они гарантированно находят самые лучшие решения. Но у нас самая большая вероятность достичь квантового преимущества в ближайшее время. Может быть, мы его уже достигли, но просто не подписываемся под этим.

Более того, нас сейчас интересует не столько поиск самого лучшего решения задач оптимизации, сколько то, что называется «сэмплинг» — нахождение большого количества разнообразных решений, которые не являются действительно самыми-самыми, но близки к нему. Например, для машинного обучения эта задача гораздо важнее и интереснее, чем поиск единственного идеального решения. В таких задачах часто нужно пробовать разные решения, которые либо такие же хорошие, как то единственное, либо близки к нему. И эта задача на самом деле гораздо сложнее, чем найти самое лучшее.

Грубо говоря, если вспомнить, что такое классы сложности, то алгоритм, который может проверить оптимальное решение, принадлежит к классу P, а алгоритм, который подсчитывает число оптимальных решений, лежит в классе #P. Считается, что задачи из класса #P являются исключительно сложными, но решать их за короткое время было бы очень интересно. Конечно, мы не гарантируем, что наш компьютер может быстро дать все решения. Мы говорим, что он старается найти как можно больше разнообразных, наиболее интересных ответов.

На ваших устройствах был успешно реализован алгоритм квантового отжига. Можете рассказать, как работает этот алгоритм?

Представьте себе песчаный замок, построенный в ямке на пляже. Теперь представьте, что на пляж набегает волна и заливает ямку; замок полностью скрывается под водой, и ее ровная поверхность блестит на солнце. Потом вода начинает просачиваться сквозь песок и постепенно уходит, но продолжает блестеть на солнце. Дольше всего вода задерживается в самых низких частях замка — следовательно, если вы поймаете последний отблеск, то вы увидите самые низкие части постройки. Даже если никакого замка нет, а есть просто ландшафт, ямки и горки, то в лучах солнца вы увидите, как при отливе проявляются самые низкие части этого песчаного ландшафта.

В принципе, наша машина работает похожим образом. Только в нашем случае вода — это плотность квантовой вероятности, которая задерживается в самых энергетически выгодных частях ландшафта. Процессор — это многомерный квантовый песок, из которого мы строим многомерные песчаные замки, моделируем конкретные системы. А алгоритм — это прилив: пришел, все равномерно заполнил и постепенно уходит, оставляя систему в наиболее энергетически выгодном состоянии. В какой-то момент появляются лужицы, горбики из песка, это уже становится интересно, можно смотреть, где вода остается.

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

Например, предположим, что я один из таких кубитов. Я смотрю на соседа слева, знаю, что нас запрограммировали так, чтобы мы находились в разногласии (то есть наши спины смотрели бы в противоположных направлениях), и пытаюсь под него подстроиться. Потом смотрю на соседа справа — вижу, что нас запрограммировали так, что мы с ним должны быть в согласии. Решаю, в какую сторону мне будет выгоднее повернуться, если бы я был классической частицей. Как должны взаимодействовать мои соседи, я уже не знаю. В результате кубиты постепенно перестраиваются, в какой-то момент энергия запрограммированной задачи становится примерно равной энергии квантово-механических взаимодействий, и в этот момент все кубиты одновременно решают, в каком направлении им выгоднее всего остаться. После этого решение все больше затвердевает, и конечный ответ получается чисто классический — каждый спин смотрит либо вверх, либо вниз. Эти состояния уже можно однозначно измерить, это итоговый результат «отжига». Конечно, с этим состоянием можно сделать что-то еще — например, проверить и повернуть некоторые спины, если в ходе отжига возникли ошибки.

Кубиты — логические элементы квантового компьютера; основное свойство кубита — способность находиться одновременно в суперпозиции (смеси) двух состояний, словно кот Шредингера. Реализовать кубиты на практике можно большим числом различных способов — конденсировать облака холодных атомов и следить за их спинами, управлять квантовыми точками в полупроводниках, оперировать запутанными фотонами и так далее. Квантовые компьютера компании D-wave работают со сверхпроводящими потоковыми кубитами на основе эффекта Джозефсона. Заключается этот эффект в том, что если соединить два сверхпроводника тонким слоем изолятора, то куперовские пары будут туннелировать через него, и в результате через соединение потечет сверхпроводящий ток. Такое соединение называют джозефсоновским переходом. Соединяя джозефсоновские переходы в кольцо, можно построить прибор, который находится в одном из двух квантовых состояний: одному состоянию отвечает движение электрического тока по часовой стрелке, другому состоянию — движение против. Собственно, именно из таких кубитов построены квантовые компьютеры D-wave.

В 2015 году компания Google сообщила, что компьютер D-wave превзошел классический компьютер в сто миллионов раз на специально подобранной задаче квантового отжига. Можно ли считать этот результат доказательством квантового превосходства?

Это было не совсем так. Это были не только специально подобранные задачи, выбранные, чтобы подчеркнуть преимущества именно квантового вычисления, но и сравнение следующего типа. Выберем задачу, предположим, что мы ничего не знаем о ее внутренней структуре, и «натравим» на нее стандартный алгоритм Монте-Карло, обычного аналогового отжига, или специальный алгоритм квантового Монте-Карло, симулирующий именно квантово-механические явления. Потом решим эту же задачу на нашем компьютере и сравним время, затраченное на вычисления. И Google утверждает, что для определенного типа задач, решаемых на классическом компьютере «без подготовки», время расчета отличается в сто миллионов раз для обоих алгоритмов.

С другой стороны, если знать структуру задачи заранее, то превосходства добиться гораздо сложнее. Существуют классические алгоритмы, которые знают структуру задачи и могут ею пользоваться. Например, простой перебор в уже упоминавшейся задаче коммивояжера работает за время O(n!), а алгоритм Хелда-Карпа — за O(n2 × 2n). Это сокращает разницу, может, до тысячи или ста раз в нашу пользу или вообще ее убирает. На этом уровне нам такой выигрыш уже не интересен.

Наша же надежда заключается в том, что классические алгоритмы быстро «ломаются», перестают работать при увеличении размера процессоров. Даже не надежда, а практически уверенность. Задачи, с которыми будет работать следующая версия наших процессоров, будут практически недоступны для классических компьютеров. Еще одна проблема заключается в том, что найти внутреннюю структуру очень сложно. Зачастую это даже сложнее, чем решить исходную задачу.

То есть это была демонстрация того, что если кто-то кому-то принес в клювике конкретную задачу и на нее натравили компьютер D-wave, то он дает ответ в сто миллионов раз быстрее, чем «неподготовленный» классический компьютер. Google хотел показать, что эта вещь работает. И у него получилось, с учетом тех оговорок, что если знать, как «сломать» наш компьютер, то сломать его можно. Следующую версию «сломать» будет уже гораздо сложнее. Пока никто не придумал, как. Может быть, придумают потом.

А насколько велик спрос на квантовые симуляторы? Сколько компьютеров вы уже продали?

Пока что не очень много, штуки 3-4. И потом тем же покупателям продали апгрейды, тоже штуки 3-4. Google/NASA/USRA, Lockheed Martin/USC, Лос-Аламос, Окридж. Надеюсь, никого не забыл, потому что я делаю чипы, а не обслуживаю их.

Нужно еще понимать, что сейчас наши компьютеры — это, скорее, своеобразные тренировочные «игрушки», чем гарантированно полезный с практической точки зрения инструмент. Все наши покупатели используют их для того, чтобы выяснить, насколько они могут давать им что-то новое. Такое, что вот они придумали, запустили, а потом посмотрели на результат и сказали: «Ага! Как интересно». Если бы Google был бы нужен конкретный ответ на конкретный вопрос, то он бы воспользовался своими классическими вычислительными ресурсами, которые превосходят по вычислительной мощности многие другие известные вычислители. Но им интересно посмотреть, почему эта штука вдруг через десять миллисекунд отвечает на их вопрос, причем дает настолько хороший ответ, что они говорят «Ага!»

Одно из квантовых устройств D-wave

D-wave

Я во-первых инженер, во-вторых компьютерный ученый и только в-третьих физик. Именно в этом порядке. Но я вижу наших настоящих компьютерных ученых, и они заинтересованы в тех возможностях, которые наша машина потенциально может им дать.

С одной стороны, у нас есть текущие клиенты, которые интересуются компьютерами D-wave для того, чтобы понимать, есть ли в этом хоть какой-то смысл. Сложно сказать, будут ли они покупать следующую модель. Тем не менее, до этого они их покупали, обновляли. Скорее всего, продолжат и в будущем.

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

И вот это самое интересное, когда возникает такая ситуация, что если мы хуже, то ненамного, а иногда даже лучше. Это возбуждает интерес к нашим следующим процессорам, которые сейчас у меня на уме. Следующая версия должна быть гораздо более интересной. Мы уже испытали ее прототип в масштабе 1 к 7, моя команда конструкторов готовит к выпуску полноразмерный чип, а наши физики смотрят на прототипе, не найдется ли возможностей что-то улучшить. Другое дело, что нельзя долго затягивать с ее выходом. Если мы за год-два ее не покажем, то нашей компании, возможно, не будет. Поэтому мы очень серьезно относимся к этой разработке.

Какой будет следующая версия вашего компьютера?

Это будет вычислитель, который снаружи будет выглядеть абсолютно так же, как наша текущая машина. А внутри нее будет стоять новый процессор, гораздо более интересный, чем у текущей версии. Во-первых, в нем будет в два раза больше кубитов. Во-вторых, между кубитами будет гораздо больше связей — в текущей версии один кубит связан с шестью другими, а в следующей он будет связан с пятнадцатью. Наше основное достижение — именно увеличение числа связей, это позволяет реализовать более сложные алгоритмы. Мы решили, что не будем считать кубиты, а будем считать связи между кубитами.

Я очень надеюсь, что новая версия сможет показать несомненное квантовое преимущество. Еще больше надеюсь, что умные ребята смогут найти задачи, на которых наша текущая машина также покажет полное квантовое преимущество, сможет решить эту задачу лучше, чем любой самый большой классический компьютер. Пусть это не абсолютное превосходство, но и преимуществом мы пока будем довольны. К сожалению, я не могу им помочь. Все, что я могу сделать, это сделать более интересную, более крутую машину.

Почему ваша компания не занимается универсальными квантовыми компьютерами?

У универсальных квантовых компьютеров есть одно достоинство, которое одновременно является большой проблемой. Такие компьютеры могут решить задачу, которая, насколько известно современной математике, классические компьютеры решить не могут. А именно — разложить большие числа на простые множители с помощью алгоритма Шора. На невозможности решения этой задачи основаны все более-менее современные средства шифрования. Если бы у нас был универсальный квантовый компьютер, на котором можно реализовать алгоритм Шора, то ваша связь с банком была бы гораздо менее надежной. Именно поэтому государственные службы разных стран очень много вкладывали денег именно в универсальный квантовый компьютер. Хотя бы для того, чтобы проверить, могут ли его сделать конкуренты.

Алгоритм Шора — это квантовый алгоритм факторизации, то есть разложения числа на простые множители. Чтобы объяснить, как работает этот алгоритм, нужно вдаваться в довольно тонкие подробности, но если совсем грубо, то алгоритм Шора основан на квантовом преобразовании Фурье. Другими словами, в отличие от классического алгоритма прямого перебора, алгоритм Шора использует сразу много состояний, а потому количество попыток оказывается значительно меньше, чем на классическом компьютере. А именно, на классическом компьютере количество попыток зависит от самого числа экспоненциально, тогда как при использовании алгоритма Шора время, которое нужно для вычислений, зависит от числа по степенному закону. В настоящее время самое большое число, разложенное на квантовом компьютере с помощью алгоритма Шора, равно 56513. Для этого ученым понадобилось использовать четырехкубитный компьютер.

Получается, что это такое свойство квантового компьютера, про которое все говорят, однако мы — поскольку мы частная компания — реальные деньги на этом делать не сможем. Законно и морально не сможем. Продавать такой компьютер — все равно что продавать устройство, которое позволяет взламывать и прослушивать разговоры клиентов банка. Конечно, есть организации, которые такую машину купят, однако их очень мало. Мы же всегда хотели сделать что-то такое, за что реальные люди хотели бы заплатить реальные деньги, потому что это решало бы какие-то конкретные задачи.

Первый российский кубит, созданный в 2015 году учеными из МФТИ, НИТУ "МИСиС" и РКЦ

RQC

Но это не значит, что нас не интересуют универсальные квантовые вычисления. Например, есть теория адиабатического квантового компьютера, который, теоретически, эквивалентен более популярной gate model, и он мог бы решать еще более интересные задачи. Наш подход можно описать формулой «ползать раньше, чем ходить», но мы уже делаем эксперименты на паре кубитов, связанных универсальными связями.

Главное препятствие для создателей квантовых компьютеров — неустойчивость кубитов, они могут находиться в нужном состоянии буквально доли секунды. Эту проблему пытаются решить, объединяя множество физических кубитов в один логический. Но можно ли создать логические кубиты без потерь? Или по мере роста числа кубитов будет расти число ошибок и мы не сможем эту гонку выиграть?

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

И мы говорим, что вот да, из двух тысяч кубитов нашего компьютера можно было бы сделать один идеальный логический. Ну и кому это нужно? Для любого реального алгоритма нужно несколько тысяч логических кубитов. То есть миллионы обычных. Если у вас такое железо есть — пожалуйста, делайте что хотите. Теоремы есть, и все доказуемо. Но такого железа нет.

Поэтому никто пока еще не может взломать существующие средства шифрования с помощью квантового компьютера. Конечно, маленькие числа, например 15 или 143, и сейчас раскладывают. По-моему, рекорд сейчас составляет 175. Без алгоритма Шора, на наших адиабатических компьютерах, мы раскладывали 5- и 6-значные числа. Однако чтобы разложить на множители числа, которые использовались для защиты банковской информации в 1990-х годах, то есть 256-битные ключи, нужен миллион кубитов. Более того, с тех пор классические компьютеры улучшились еще больше, и все пользуются не 256- и даже не 512-битными ключами, а 1024 или 2048-битными. Соответственно, для взлома этих ключей нужно еще больше кубитов. С точки зрения теоретика задача решена. Однако с точки зрения практики до этого еще далеко.

На даже если бы такой компьютер у нас был, то гораздо интереснее для человечества было бы, например, изучать с его помощью квантовые материалы, делать новые батарейки, разрабатывать новые химические реакции для производства удобрений. Конечно, по сравнению со взломом банков это мелочь, но она полезнее.

Какие практические задачи компьютеры D-wave уже решают?

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

Вторая статья немного более экзотическая. Она уже выложена на arXiv.org и посвящена моделированию экзотических топологических фаз материи. За теоретические исследования таких систем Майклу Костерлицу и Дэвиду Таулессу в 2016 году дали Нобелевскую премию по физике, а мы эти системы промоделировали. Это чисто квантово-механический эффект. И ничего, наш процессор вполне даже говорит — здесь происходит так, а здесь по-другому.

То есть опять же, это еще не дошло до уровня «чтобы улучшить производство аммиачного удобрения на 25 процентов, делай так». Но это на пути к нему. И для меня лично это гораздо приятнее, чем возможность взломать переписку и прочитать e-mail того или иного политика.

Можно ли использовать ваши компьютеры для создания искусственного интеллекта?

В принципе можно. Потому что при отсутствии знания, как делается аммиачная реакция, играть с искусственным интеллектом — это естественно, это очень модно в нынешние времена. Как ни странно, это даже полезно. В том смысле, что даже если мы берем идеи из нашего алгоритма квантового отжига и применяем их к искусственному интеллекту на чисто классических машинах, то получается очень удачно. Мы побеждаем в соревнованиях по искусственному интеллекту, по распознаванию хирургических инструментов. Примерно четверть нашей компании — это программисты, которые занимаются искусственным интеллектом и стараются применять наши идеи в этой сфере.

Более того, недавно в D-wave было создано новое подразделение, которое работает с нейронными сетями, адаптирует их для квантовых вычислений. Люди, которые этим занимаются, говорят, что от такой адаптации должен быть выигрыш. При маленьком количестве «чистых» (правильных) данных на большое количество «грязных» данных ребята из нового подразделения делают выводы, которые впечатляют экспертов в этой области. Опять же, работа ведется в надежде, что когда-нибудь все это присоединится к действительно большому процессору, и тогда это будет не просто «Хм, интересно», а «Ого!»

Беседовал Дмитрий Трунин

nplus1.ru


Читайте также
  • Гиперскоростная звезда – более 1.000.000 миль в час
    Гиперскоростная звезда – более 1.000.000 миль в час
  • Астрономы обнаружили самую большую спиральную галактику
    Астрономы обнаружили самую большую спиральную галактику
  • Млечный путь содержит десятки миллиардов планет, схожих с Землей
    Млечный путь содержит десятки миллиардов планет, схожих с Землей
  • Млечный путь разорвал своего спутника на четыре отдельных хвоста
    Млечный путь разорвал своего спутника на четыре отдельных хвоста
  • Найден источник водородных газов для нашей Галактики
    Найден источник водородных газов для нашей Галактики