Реклама

понедельник, 4 апреля 2011 г.

Компьютерная гонка вооружений

Суперкомпьютеры: третья мировая гонка

   Специалист по научной организации труда показывает директору новый персональный компьютер:
     - Эта машина способна уменьшить объем вашей работы в два раза!
     - Отлично! – потирает руки шеф. – Установите в моем кабинете два компьютера.

Зачем это все нужно


Суперкомпьютеры традиционно использовались в военных и научных целях, но в последние годы в их применении произошли революционные изменения, связанные с тем, что их мощность «доросла» до моделирования реальных процессов и предметов при доступной для бизнеса стоимости.
Все, наверное, знают, что в автомобилестроении расчеты на суперкомпьютерах используются для повышения безопасности, например так получил свои 5 звезд Ford Focus. В авиапромышленности выпуск нового реактивного двигателя по традиционной технологии — дорогостоящее удовольствие, например создание АЛ-31 для СУ-27 заняло 15 лет, потребовало создать и разрушить 50 опытных экземпляров и стоило 3,5 млрд. долларов. Двигатель для Сухой Супержет, спроектированный уже с участием суперкомпьютеров, сделали за 6 лет, 600 млн евро и было построено 8 опытных экземпляров. 
Нельзя не отметить и фармацевтику — большая часть современных лекарств проектируется с помощью виртуального скрининга , который позволяет радикально снизить затраты и повысить безопасность лекарств.
Дальше — больше. 
Сегодня в развитых европейских странах:
47,3% высокотехнологической продукции производится с использованием имитационного моделирования фрагментов проектируемых сложных систем или изделий;
32,3% продукции производится с использованием имитационного моделирования мелкомасштабных аналогов проектируемых систем и изделий;
15% продукции производится с использованием полномасштабного имитационного моделирования проектируемых систем и изделий;
и лишь 5,4% проектируемых сложных систем и изделий производится без имитационного моделирования.

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


Гонка за экзафлопом


Почему экзафлоп? Дело в том, что наблюдался 11 летний цикл прироста мощности. Гигафлоп, терафлоп, петафлоп… Петафлопный рубеж был преодолен в 2008 году, тогда же оборонщики США поставили себе задачу — достигнуть в 2019 году уровня 1 экзафлоп. Ввиду важности задачи в гонку включись все ведущие страны, так сейчас первое место занимает китайский суперкомпьютер.
Суперкомпьютерные вычисления оказались на переднем крае гонки экономик по двум причинам — во первых они востребованы как никогда раньше, а во-вторых исчерпан лимит экстенсивного развития путем повышения частот процессоров при снижении их потребляемой мощности и как создать этот экзафлоп не знает пока никто.

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

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

Россия и суперкомпьютеры


До последних лет ситуация с суперкомпьютерами в России была провальной, вtop500 светилась только одна из списка российских машин. Теперь ситуация меняется — в рейтинге уже 11 наших суперкомпьютеров, а лучший из них — «Ломоносов» фирмы «Т-Платформы» — на 17 месте в текущем рейтинге с мощностью 500 TFlop (в момент запуска он было 11-ым). В этом году намечается масштабная модернизация «Ломоносова» с помощью графических ускорителей, после чего он должен войти в десятку лучших. Интересно, что мы всего один раз были на первой строчке рейтинга, в далеком 1984 году, с компьютером M-13 системы противоракетной обороны. 
Лидер российского рынка суперкомпьютеров, — Т-Платформы держит сейчаспервые места по плотности компоновки, что позволяет надеяться на хорошие результаты в текущей суперкомпьютерной гонке. На конференции выступал директор Т-Платформ и это было блестящее выступление: молодой, компетентный, увлеченный! Про другого нашего игрока, фирму "РСК-СКИФ" ничего сказать не могу — ребята откровенно запороли пленарный доклад и сняли следующее выступление. 
По неподтвержденным пока данным в марте в Сарове — городе наших ядерщиков запущен первый петафлопный суперкомп, но он пока не успел попасть в top500. 
Сейчас в сферу суперкомпьютеров со стороны государства направляются значительные средства, но одних денег недостаточно — нужны новые идеи и труд тысяч людей. Есть две новости — хорошая и плохая. Плохая в том, что практически весь серьезный суперкомпьютерный софт по моделированию разработан в США и американцы активно пользуются своей монополией, распределяя его, например наши авиадвигателисты используют для конструирования не специализированный авиа, а доступный автомобильный софт, у которого, конечно, гораздо меньше возможностей. А хорошая новость в том, что в свете грядущего массового параллелизма весь софт все равно придется переписывать, а значит — у нас есть очень неплохой шанс выбиться в лидеры.

Процессоры


Т.к. рост частоты процессоров, основанных на кремнии, остановился, развитие суперкомпьютеров идет по пути все большей параллельности, увеличения числа вычислительных ядер. Однако, это не единственный путь, продолжаются поиски замены кремнию. Достаточно долго на роль «спасителя» позиционировался созданный «бывшими нашими» учеными с помощью скотча графен, сейчас появился новый претендент — молибденит. Но это все дело пусть не очень далекого, но будущего, а пока нам светит все большая параллельность архитектуры процессоров, уже планируются 100 ядерные кристаллы. Очень важным становится не просто производительность, а производительность на ватт потребляемой энергии. В этой связи интересен проект AMD Bulldozer, в котором ядра используют общие блоки для понижения энергопотребления.
Не отстает и Intel, разрабатывая архитектуру Intel MIC — многоядерный ускоритель на основе легких ядер Pentium.
Даже спроектированный для мобильных устройств процессор Atom теперь применяется в суперкомпьютерах. 

Графические ускорители


Применить технологии, отработанные при создании мощных игровых видеокарт для параллельных вычислений, впервые удалось NVIDIA, не остался в стороне и AMD со своим ускорителем FireStream. Использование графических ускорителей (GPGPU) позволяет получить значительную вычислительную мощность в десятки раз дешевле по деньгам и потребляемой мощности. В top500 три из первой пятерки суперкомпьютеров используют ускорители NVIDIA TESLA,. GPGPU — единственная доступная по деньгам возможность получить «персональный суперкомпьютер» терафлопсной мощности в обычном настольном корпусе. Однако не все так безоблачно в датском королевстве, программирование для графических ускорителей, как я уже писал, не самое простое занятие. Также возникают вопросы, что выбрать — дорогущую специализированную Tesla или топовую графическую карту, которая быстрее и дешевле?. В любом случае, альтернативы множеству «легких» ядер пока не просматривается, а значит, придется программировать все более параллельно. Сейчас у нас есть очень интересный шанс — программирование суперкомпьютеров можно осваивать даже на нетбуке с NVIDIA ION, такого еще не было в истории. 

Программирование


Современный компьютер — гетерогенная система. Это кластер из узлов, в каждом из которых несколько процессоров с общей памятью плюс несколько графических ускорителей, узлы связаны скоростной шиной (сейчас это чаще всего InfiniBand, существует даже «бытовое» определение суперкомпьютера как «что-то с инфинибэнд»).
Программирование этого чуда техники происходит с помощью комбинации MPI (распределяющего задачу по узлам), OpenMP (по процессорам) и CUDA/OpenCL (по графическим ускорителям). 
Оптимизация кода в такой системе (например, развертка циклов) быстро приводит к его полной нечитаемости, без оптимизации же эффективность получается совершенно недостаточной. 
Бороться с этим можно только созданием новых сред и языков программирования. Например, разрабатывается Mosix OpenCL, позволяющий работать с кластером как с одной большой персоналкой на OpenCL совместимом языке. Мне показалась интересной представленная на конференции разработка NUDA, являющаясявысокоуровневой «оберткой» над OpenCL на языке Nemerle и позволяющая автоматически генерировать оптимизированный код для графических ускорителей.

Участие


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