joomla 1.6

 Параллельные вычисления: грубая сила или интеллект?

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

Самый мощный компьютер в мире на сегодня, по данным сайта top500.org – это Jaguar Cray XT5, расположенный в Окриджской национальной лаборатории США (рис.1). Он имеет 224,256 вычислительных ядер. Построен компьютер на основе двухпроцессорных вычислительных узлов с шестиядерными процессорами AMD Opteron и 16 Gb памяти на узел.

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


jaguar
Рис.1. Суперкомпьютер Jaguar Cray XT5.

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

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

Задача создания параллельных программ не такая простая, как кажется на первый взгляд.
Большой класс задач допускает распараллеливание по данным, то есть когда расчетную область можно разбить на подобласти, и каждую из них обсчитывать на отдельном узле суперкомпьютера. Простейший пример такой задачи – это задача умножения матриц: пусть нам нужно умножить две большие матрицы A и B, размером NxN, тогда каждый элемент матрицы-произведения C = AB, для расчета которого нужно 2N операций, можно рассчитывать независимо.

Решение многих задач требует перебора большого количества вариантов. Например, это задачи поиска лекарственных соединений. Тут можно пробовать метод грубой силы – просто перебирать варианты на большом количестве ядер.
Однако очень большое количество задач не распараллеливается по данным и не решается методом грубой силы. Что же делать, как написать параллельный алгоритм для таких задач? Сложность здесь ещё и в том, что нашему сознанию трудно размышлять в терминах параллельного алгоритма: мы можем думать в один момент только об одной вещи. Всего лишь люди, как сказал бы агент Смит из фильма «Матрица».

Согласно тезису Черча-Тьюринга, то, что мы интуитивно понимаем под алгоритмом – это машина Тьюринга, которая представляет собой тележку, двигающуюся вдоль бесконечной ленты, и которая в состоянии считывать символы на ней, менять состояние своего мозга и записывать символы на ленту (рис.2). То есть, наш разум не состоянии помыслить более сложной вычислительной системы, поскольку мы мыслим последовательно, шаг за шагом, так, как работает и машина Тьюринга.


turing machine Рис.2. Машина Тьюринга.

Дональд Кнут, один из самых известных в мире специалистов по программированию, автор классического трехтомного труда «Искусство программирования», профессор Стэндфордского университета, который около 50 лет пишет не менее 100 программ в год, считает, что алгоритмы, в которых можно достичь выигрыша по времени выполнения за счет распараллеливания, встречаются совсем не часто.

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

Одним словом, область параллельных вычислений ещё ждет своего фон Неймана, своего Тьюринга и своего Кнута.

Ассистент кафедры Науменко С.А.

Нравится? Расскажи друзьям!

Официальный сайт РХТУ им. Д.И. Менделеева
muctr.ru
Учебный портал РХТУ им. Д.И. Менделеева
moodle.muctr.ru
Факультет Информационных Технологий и Управления
www.muctr.ru/fitu
Министерство Образования и науки Российской Федерации
mon.gov.ru
Joomla inotur picma