2013: пора прекратить погоню за флопсами

Original author: William Gropp
  • Translation
От переводчика: Exascale computing — это такой амбициозный проект по достижению производительности порядка ExaFLOPS к 2018 году. Есть мнение, что наукоемким вычислениям уже сейчас тесно в петафлопсах. Так ли это на самом деле? Размышления на эту тему Уильяма Гроппа, директора Parallel Computing Institute, были опубликованы в The Exascale Report.

2013: TIME TO STOP TALKING ABOUT EXASCALE
William D. Gropp


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

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

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

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

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

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

Для того, чтобы новые рекордные производительности стали реальностью, мы должны перестать гнаться за производительностью.
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 52

    +20
    По моему скромному мнению, не нужно путать две задачи — повышение вычислительной мощности и развитие алгоритмов и методов решения задач с использованием больших вычислений. Автор оригинального текста кажется призывает притормозить тем, кто занимается первой проблемой, и подождать тех, кто занят второй. Какой смысл? Наоборот, разумнее создавать запас по производительности, если существует такая возможность. Кто знает, может через некоторое время темпы развития «алгоритмов» перегонят темпы развития «железа», и тогда наработанный буфер будет очень кстати.
    • UFO just landed and posted this here
        –1
        Да автор безусловно прав, Какой то университет или институт закупает Супер компьютер и потом думает что с ним делать. Супер компы нужны для обрабатывания большого объема информации. Например для определение каптчи и создание Кибернетического интеллекта.

        Студент напишет код который будет работать. Но далеко не факт что с точки зрения скорости алгоритма, программа будет быстро работать!!!

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

        Забавно другое, что для анализа данных адронного колайдера использовались сервера Яндекса, и распределенная сеть компьютеров, каждый мог загрузить объем данных и проанализировать его и снова загрузить обратно.
          +3
          Какой то университет или институт закупает Супер компьютер и потом думает что с ним делать.

          А такое бывает? Известные мне мне суперкомпьютеры загружены чуть менее чем полностью, а простаивающих я вживую не видел…

          Буду краток, нужны крупные исследования для улучшения технологий как таковых.

          Такие исследования постоянно идут.

          Была бы хороша статья которые описывала какие математические расчеты производят с помощью супер компьютера.

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

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

          Почему забавно? Первичная обработка экспериментальных данных часто слабосвязная задача, по этому оптимально использовать распределенные решения, а в каком-либо моделировании преобладают сильносвязные задачи, по этому оптимальнее использовать суперкомпьютеры с быстрыми и с низкими задержками интерконнектами…
          • UFO just landed and posted this here
              +3
              Это вопрос не отсутствия задач, а отсутствия грамотного администрирования ресурсов.
                +3
                Вот если бы они его покупали на свои деньги…
                  0
                  Мой универ понтов ради купил 5 лет назад кластер (к сожалению мощностей не знаю) и всё. До сих пор он стоит в серверной выключенный, в то время как преподы на свои деньги докупают оперативы в преподовательский ПК в компьютерной аудитории, что бы рендер матлаба делать не на студенческих недокомпах а на преподавательском >_< (и этот рендер занимал четверть часа на каждого студента. а на студенческие компы просто вешал наглухо)
                0
                They said that Lomonosov does not.
                  +1
                  Простите, что?
                  Уточните, пожалуйста, к какой части моего сообщения этот комментарий?
                    0
                    Да, виноват — комментировал с телефона на скорую руку.

                    Я апеллировал к этому абзацу:
                    >>А такое бывает? Известные мне мне суперкомпьютеры загружены чуть менее чем полностью, а >>простаивающих я вживую не видел…

                    Ибо в 2009 -2011 годах кластера РАН и новоиспеченный в те годы кластер МГУ «Ломоносов» работали, «мягко говоря», недогруженными.
            +8
            Автор не хрен с горы, а один из ведущих разработчиков MPI, и о темпах развития алгоритмов знает не из вторых рук. Именно с этой позиции он пишет, что запас производительности должен быть лучше обоснован, чем сейчас.
              +4
              На мой взгляд — наоборот, неразумно. Рост мощности провоцирует решение любой проблемы «в лоб» — методом грубой силы. Когда в руках молоток — любая проблема похожа на гвоздь. В результате мы имеем парадоксальную ситуацию, когда значительно более старший ПК выполняет задачи своего более современного собрата быстрее и лучше. Что не есть нормально, какими бы благими намерениями оно не декларировалось.
                +2
                Это справедливо, когда рост мощности опережает потребности, а в HPC рост реальной мощности от потребностей значительно отстает.
                Проблема в другом. Существующие метрики производительности перестали коррелировать с решаемыми задачами, а новых универсальных метрик и методик оценки не видно. Автор пишет не про избыток мощности, а про то, что используемая методика оценки этой мощности вызывает много вопросов.

                Так, что если бы был молоток, то таких статей бы не было, а все бы радовались, но молотка, к сожалению, нет…
                  0
                  Мне кажется об этом автор и говори, что надо проанализировать потребности, после чего решить, нужно ли по прежнему наращивать мощности или решать какие-то иные проблемы.
                    +1
                    Я думаю, что вопрос не в том, нужно ли наращивать мощность, тут ответ однозначный — Нужно. Ни один ученый не откажется от возможности посчитать что-нибудь с большей точностью за меньшее время.
                    Вопрос в том, КАК наращивать мощность и в чем эту самую мощность измерять. И вот тут во всей красе появляются множество «каких-то иных проблем», а не только FLOPS'ы…
                      0
                      Ну понимаете, наращивание вычислительной мощности — это не дешевый процесс. И вопрос, стоит ли например университетам вкладываться во все более мощные машины, или может стоит обратить внимаение на другие аспекты.
                      Так что вопрос именно в том, КАК наращивать мощности, но в плане даже не способов и подходов, а в плане ресурсов. Является ли наращивание вычислительной мощности приоритетом?
                        0
                        Ну вот я сталкивался с такой проблемой, что доктора и аспиранты университетов знают, что они хотят посчитать, но их знания в программировании весьма поверхностны. В результате пишется «маленькая, но гаденькая программка» (с) на Матлабе, которая работает кучу времени и использует много памяти. Профессиональный программист может оптимизировать такую программу в десятки раз по обоим параметрам, но на это требуется время. Человеко-часы, человеко-дни. Шеф лаборатории предпочитает использовать время этого программиста для решения других задач, нежели оптимизация алгоритмов. Как-то приемлемо оно работает — и ладно.

                        Нанять больше программистов — не хватает денег. Самим разбираться в дебрях оптимального программирования — нет времени, его лучше использовать для собственно науки.

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

                          А вот с тем, что профессиональный программист иногда сможет ускорить имеющуюся реализацию, я согласен.
                            +1
                            Программисты уже разучились доказывать сходимость и оценивать погрешность алгоритмов?
                              0
                              Вот именно. Все вышеперечисленное является задачей скорее программиста, нежели ученого. Ученому надо просто посчитать, он знает формулы из теории. Подобрать подходящий алгоритм и реализацию — задача программиста. Ну или человека на стыке между двумя этими профессиями. Очевидно, что программист, работающий в этой области, должен иметь представление о задачах, которые решаются учеными.

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

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

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

                                  Спорное утверждение. :)
                    +1
                    Речь идет не только и не столько об оптимизации алгоритмов, а о том, какова должна быть аппаратура, чтобы эффективно решать поставленные задачи. Тезис в том, что флопсы в качестве (единственного) мерила производительности не годятся. Действительно, в большинстве численных задач достигается довольно низкий КПД (отношение реально полученной производительности к пиковой, и то и другое измеряется в тех же флопсах). На Линпаке КПД обычно бывает в пределах 50%...90%, но это самый легкий класс задач; а бывают задачи, где КПД составляет доли процентов и вовсе не из-за тупо написанных алгоритмов — затык в том, чтобы накормить вычислительные устройства данными.
                    +13
                    Правильно ли я понял что Производительность != Способности_решать_насущные_проблемы?
                    Так же как Мегапиксельность != Шедевральности, а Лошадинные_Силы != Мастерство_Вождения?
                      +1
                      Примерно так. Способность решать проблемы — это оптимальные алгоритмы решения.
                        +3
                        Оптимальные алгоритмы стоят дорого. Очень дорого.
                          +1
                          Поэтому «давайте докупим еще оперативки»
                            0
                            Сейчас это намного дешевле, чем применить голову.
                      0
                      Я считаю, что для таких мощностей нужны подходящие алгоритмы, которые, например, хорошо распараллеливаются
                        +12
                        Автор статьи прав, но на мой взгляд в заключении перевода есть неточность, которая искажает смысл статьи.
                        To make Exascale a reality, we need to stop talking just about Exascale.

                        некорректно переводить как:
                        Для того, чтобы новые рекордные производительности стали реальностью, мы должны перестать гнаться за производительностью.


                        И дело тут вот в чем. К настоящему времени сама мера FLOPS перестала быть адекватной мерой для решаемых задач. Метрика во FLOPS'ах — это производительность суперкомпьютера на одной конкретной задаче решения СЛАУ, а реальные вычисления строятся далеко не только на методах их решения. Даже производители процессоров в кулуарах говорят, что FLOPS'ы стали пузомеркой, а не отражением реальных задач.

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

                        И подвижки в этой области уже есть. Можно привести в пример рейтинги Top500, где измеряют FLOPSы и рейтинг Graph500, где измеряют производительность обработки больших массивов данных и места в этих рейтингах не совпадают.
                          0
                          Спасибо за ценное замечание. И да, с тех пор, когда это было близко к реальности, FLOPS'ы засели в мозгах как синоним к «производительности».
                            0
                            Мне кажется, что раньше FLOPS'ы еще меньше отражали реальную производительность, по крайней мере до того, как американцы сделали прорыв в области технологий разделяемой памяти количество разных архитектур больших вычислителей зашкаливало. И сравниваться они могли только на реальных задачах.
                              +1
                              Одна из причин, почему раньше FLOPSы могли отражать реальность — раньше не было всяких SSE, out-of-order исполнения и других страшных слов, по этому FLOPSы можно было конвертировать в операции из реальной задачи. Сейчас это соотношение слабопредсказуемо. Интерконнект скорее влияет на отношение пиковой и LINPACK-производительности, но эта относительная величина более близка к практике чем абсолютные значения сейчас.

                              как американцы сделали прорыв в области технологий разделяемой памяти

                              Расскажите пожалуйста подробнее, о чем идет речь?
                                0
                                Да просто система кэшей и их когерентности в связке с быстрыми шинами и другими SMP технологиями. До этого вычислители развивались, грубо говоря, путем разработки топологий и иерархических узлов.
                                  +1
                                  Для HPC эти технологии не так критичны, так как это машины с распределенной памятью и они даже не всегда поддерживают многозадачность в рамках одного вычислительного узла.

                                  А интерконнекты, топология и иерархия вычислительных узлов(ядер) — это сейчас еще большая головная боль, так как производительности процессоров выросли, скорости передачи данных выросли, а задержки никуда не делись из-за ограничения скорости света, а сетевые задержки могут всю производительность свести в ноль. Основные проблемы сейчас не в узлах, а в соединяющих их сетях по сути.
                                    0
                                    Согласен, интерконнект — одна из головных болей у HPC, но проблемы производительности не всегда есть проблемы измерения производительности.
                                0
                                А как Вы думаете считается производительность вашей функции умножения матриц или быстрого преобразования Фурье в этих самых ФЛОПСАХ?

                                Я ответ знаю, т.к. сам считал тесты линейной алгебры и FFT. Может быть и Вы, его знаете. Тогда, давайте, сравним знания и подходы.

                                Пусть Вы имеете теоретический алгоритм. На нем вычисляете количество операций. Потом Вы делаете замер реальных вызовов ваших функций, которые АКТИВНО используют все, что дает Вам процессор: SSE, кэши и то, на что хватит ума у программиста.

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

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

                                А как пошел Интерконнект в вашем кластере — тут да, тут начинается порнография )
                            +2
                            Железо легко продавать. Алгоритмы (библиотеки) продать немного сложней + всегда есть риск появления чужого (возможно открытого) решения. Как итог, железо развивается коммерческим сектором по естественным причинам. Алгоритмы, наоборот, рождаются/улучшаются в университетах на гранты. Что медленно, не так качественно, не так ориентированно на результат. Поменять это простым призывом нельзя, нужно чтобы фундаментальные исследования проблем кто-то покупал.
                              0
                              Напомнило мне CINT и тесты его производительности.
                                +5
                                Картинка в формате BMP с расширением JPG? Тонко…
                                  –1
                                  Да откуда ж вы такие беретесь. Такая тема для дискуссии богатая — нет, обязательно картинка не угодила…
                                    +5
                                    Между тем тут наблюдается некая легкая корреляция с темой статейки.
                                      0
                                      okay.bmp
                                  • UFO just landed and posted this here
                                    0
                                    Прикладная балталогия: если в результате рассуждений вы пришли к выводу, который начинается со слова «пора» или «надо» — значит где-то в рассуждения вкралась ошибка, можно передохнуть и начинать рассуждать с начала. Экономит уйму времени.
                                      +1
                                      Немного не в тему, но производителям мобильных устройств тоже стоило бы задуматься над прекращением наращивания разрешений, оперативки, мощности процессора и наконец задуматься над батарейкой
                                        0
                                        давай-те уж сразу сделаем так, чтобы телефоны собирались в магазинах автоматически по заказу покупателя, чтобы можно было батарейку увеличить, если надо.

                                        «народ, есть способ сбросить статы? я себе случайно памяти вкачал 4гига зачемто» :)
                                        +1
                                        вспомнился один из ярких примеров, как люди находят способ обойти ограничения вычислительной мощности не увеличивая флопсы.
                                          0
                                          <grammar_nazi_mode>
                                          Согласно ГОСТ 8.417-2002 кратная приставка для 10^18 пишется так: экса-.

                                          Хотя экза- мне тоже больше нравится.
                                          </grammar_nazi_mode>

                                          Only users with full accounts can post comments. Log in, please.