Тем не менее мы можем все же увеличить скорость сборки, если подключим к главному конвейеру несколько вспомогательных, на которых будем собирать из деталей целые узлы авто. Например, на главный конвейер будем поставлять уже собранный мотор, коробку передач, диски колес с накачанными шинами и т. д.
Примерно так стали поступать и создатели суперкомпьютеров. Так, скажем, конструкторы фирмы «ИБМ» в свое время оснастили свой компьютер! шестью дополнительными устройствами ввода–вывода информации, позволившими значительно увеличить производительность основного процессора.
Затем пришла очередь модернизации самого процессора. Его память была разбита на два уровня, предусмотрен опережающий просмотр команд и т. д.
Следующий шаг сделали ученые Манчестерского университета, предложившие в 1963 году многопрограммную операционную систему, которая позволила выполнять несколько программ одновременно, автоматически регулируя, какую из них наиболее рационально выполнять в данный момент.
В середине 60–х годов взошла звезда американского конструктора Сеймура Крея. Он был первым, кто начал конструировать суперкомпьютеры повышенной мощности и быстродействия, внедряя однотипные, взаимосвязанные между собой компьютерные блоки. Управлялись они с помощью так называемых векторных команд. Таким образом, удавалось одновременно на одной машине обрабатывать сразу целые массивы данных.
У нас, как мы уже рассказывали, подобные работы велись под руководством А. С. Лебедева, В. М. Глушкова, М. А. Карцева и других.
И тут – семейственность...
Узкое место параллелизма, как уже говорилось, – трудности, с которыми сталкиваются математики, пытаясь разбить тут или иную задачу на несколько менее сложных, которые можно было бы решать независимо друг от друга.
На практике чаще всего оказывается, что решения отдельных частей общей задачи зависят друг от друга, поэтому то и дело приходится использовать промежуточные данные вычислений. Словом, получается, что отдельные процессоры обязательно должны в ходе работы общаться друг с другом, обмениваться данными и результатами вычислений. А это резко усложняет и архитектуру и конструкцию суперЭВМ.
Над всеми параллельными вычислениями дамокловым мечом висит закон Андала. Он определяет, какого максимального ускорения можно достичь для данного числа параллельных процессоров в зависимости от доли последовательных операций в алгоритме.
Скажем, нам нужно сложить все числа от 1 до 99. Если выполнять эти операции последовательно, нужно 99 операций сложения. Если же мы сначала разобьем числа по парам, а потом каждую суммированную пару подадим на один из процессоров параллельного компьютера, то при одновременном сложении потребуется всего 7 таких операций. И они займут куда меньше времени.
Иначе говоря, ограничения, который вносит закон Андала, выглядят так. Если в программе 90 операций выполняется параллельно, а только 10 последовательно, то при любом количестве параллельных процессоров нельзя достичь ускорения большего, чем в десять раз.
Таким образом, получается, что использовать мощные машины можно лишь в том случае, когда тщательно подготовлен алгоритм параллельного решения задачи.
И тут выясняется, что в мире существует сравнительно немного задач, которые можно так глубоко распараллелить, чтобы для их решения можно было использовать огромные суперЭВМ со множеством параллельных процессоров.
Большую же часть задач при грамотном подходе вполне можно решать на суперкомпьютерах с небольшим или средним числом параллельных процессоров.
И здесь свое веское слово сказали наши специалисты. Во всем мире их уважают за умение создавать такие алгоритмы решения тех или иных конкретных задач, которые позволяют существенно экономить ресурсы машинного времени, использовать ЭВМ меньшей мощности.
Например, в лаборатории параллельных технологий Вычислительного центра МГУ разработан проект «параллель.ру», который авторы называют «прообразом центра компетенций по параллельным вычислениям». Говоря проще, с помощью Интернета любой пользователь может не только ознакомиться с базой данных по параллельным вычислениям во всем мире, но и получить доступ со своей задачей непосредственно к самому суперкомпьютеру МГУ. Руководитель лаборатории Владимир Воеводин даже завлекает всех желающих посчитать на своем кластере.