Группа физиков из Научно-исследовательского института ядерной физики МГУ продемонстрировала способ, позволяющий на простом персональном компьютере проводить расчеты сложных уравнений квантовой механики, для которых сегодня используются мощные суперкомпьютеры. При этом расчеты, проделанные на персональном компьютере удалось провести быстрее. Статья «Fast GPU-based calculations in few-body quantum scattering», излагающая принцип и полученные результаты работы, была опубликована авторами в одном из последних номеров весьма авторитетного научного издания Computer Physics Communications.

image

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

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

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

Принципиально иной подход к вычислениям был продемонстрирован группой исследователей из НИИЯФ МГУ (Научно-исследовательского института ядерной физики имени Д. В. Скобельцина Московского Государственного Университета М. В. Ломоносова). Предложенный учеными вычислительный алгоритм было предложено запустить на персональном компьютере лаборатории, оснащенном графическим чипом Nvidia для игровых приставок. При этом, как утверждает первый автор статьи, заведующий лабораторией теории атомного ядра, профессор Владимир Кукулин, использованный в вычислениях процессор отнюдь не претендует на премиум сегмент и свободно продается в магазине за $300-500.

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

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

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

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

Оригинал публикации на странице сайта НИИЯФ МГУ
Публикация в Computer Physics Communications


На этом всё, с вами был Dronk.Ru. Не забывайте возвращать деньги за покупки в Китае и подписываться на наш блог, будет ещё много интересного.

image

Рекомендуем:
Экономим до 8% с каждой покупки на AliExpress и других интернет-магазинах Китая
Почему интернет-магазины отдают деньги за покупки?
Верните свои деньги — Выбираем кэшбэк-сервис для Aliexpress
История развития Dronk.ru — от выбора квадрокоптеров до возвращения денег за покупки на AliExpress и не только
Лучший кэшбэк сервис или 5 основных критериев оценки кэшбэк-сервиса
Поделиться с друзьями
-->

Комментарии (101)


  1. fivehouse
    30.06.2016 10:16
    +2

    масштабной двумерной таблицы в составе десятков миллионов строк и столбцов
    Эмм. А как хранили состояние этой матрицы на лабоработном ПК? Это ж как минимум (30'000'000*30'000'000*2байта=1'800'000'000'000'000) = 2Тбайта RAM.


    1. DrPass
      30.06.2016 10:24

      Очевидно, что на диске, подгружая блоками по мере необходимости.


      1. nazarpc
        30.06.2016 10:29
        +3

        Даже считать с типичного HDD данные объемом 2ТиБ даже с RAID будет много больше 15 минут


        1. DrPass
          30.06.2016 11:28

          Ну так в статье никто и не говорил о том, сколько времени занимает процесс чтения/записи данных. Только про то, что «что считает суперкомпьютер за 2-3 дня, мы считаем за 15 минут».


          1. igruh
            30.06.2016 11:32
            +8

            Напомнило
            Новый русский» купил фотосалон. Дал объявление в газету: «Требуется фотомодель на эротику. Час работы 10.000 баксов!»
            Пришло много претенденток, отобрали одну. Фотографировали ее три часа. Потом выходит хозяин, объявляет:
            — Расчет на месте, наличкой. Слышь, фотограф, сколько раз щелкнул?
            — Сто двадцать кадров.
            — Выдержку, какую ставил?
            — Одна пятисотая секунды.
            Хозяин поворачивается к фотомодели:
            — Ну, ты, в натуре, и на полсекунды не наработала…


          1. nazarpc
            30.06.2016 11:33
            +2

            Для проведение вычислений нужно иметь данные. Поскольку в памяти они не помещаются — их читают/пишут на диск. Значит в 15 минут вычислений должно быть включено время чтения/записи, разве нет?


            1. severgun
              30.06.2016 11:47
              -1

              Да. Но какой рыбак не любит приукрасить улов.


            1. DrPass
              30.06.2016 12:29
              +2

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


            1. truggvy
              30.06.2016 17:10
              +2

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


        1. vanAken
          30.06.2016 17:09
          +1

          2Tb SSD Intel P3600 Series, например. Думаю могут себе позволить.
          Опять же, как по мне, 15 минут занял непосредственно расчет. Сопутствующие задачи, для солидности, могли из расчета исключить.


        1. lion-sochi
          30.06.2016 17:11

          Samsung 950 pro (или аналоги): объём — 0,5 ТБ, цена — $350, скорость чттения — 2,.5 ГБ/с. Как раз около 15 минут на считывание 2 ТБ.


        1. Varkus
          30.06.2016 18:24
          -1

          SSD — измеренная скорость 400~450 МЕГАБАЙТ в СЕКУНДУ,
          т.е. 2 ТБ / 450МБ = 4444,44… сек = 74,07 мин = 1 час 14 минут
          GPU RAM память на PCI-Ex в 16 Гигабит(2 гигабайта) в секунду «сидит».
          Узкое место «пинг» между cpu ram и gpu ram около 1 милисекунды.
          Действительно речь не о минутах :(

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

          А что если эту матрицу раскидать на несколько SSD, да параллельно в GPU «лить», возможно прирост скорость будет существенный?


          1. Erenzil
            01.07.2016 14:03

            400-450 мегабайт в секунду это для SATA дисков
            да и по сравнению с суперкомпьютером, стоимость топового PCI-e SSD и хорошей видеокарты — копейки.
            Хотя все равно 15 минут выглядит слишком хорошо для правды.


        1. Alexsandr_SE
          01.07.2016 08:24

          Никто не мешает подключить внешний рейд контроллер на пару десятков дисков.


          1. Varkus
            02.07.2016 13:11

            а толку? всё упрётся в скорость интерфейса между рэйдом и шиной.


            1. Alexsandr_SE
              02.07.2016 14:34
              +1

              PCI-e 3.0 16x Скорость 128/256 Гбит/с Довольно таки не мало.


      1. progchip666
        30.06.2016 13:40

        И сколько же займёт это процесс внешней подгрузки матрицы? Даже если сами вычисления будут быстрыми сколько времени потребуется чтобы гонять туда — сюда терробайты?


        1. theg4sh
          30.06.2016 17:11

          Логично, что пока работает GPU, CPU может подготовить следующую порцию данных. Для такого объема разумно было бы использовать быстрые алгоритмы сжатия после чтения/перед записью на hdd, постраничная обработка данных и прочие трюки.
          Думаю эти два терабайта в сжатом виде могут уменьшиться до 500Гб на диске.


    1. DistortNeo
      30.06.2016 10:33
      +6

      Предполагаю, что матрица была сильно разреженной.


      1. severgun
        30.06.2016 11:47
        -2

        Предполагаю, что 15 минут взяты с потолка.


      1. geisha
        30.06.2016 14:19
        +4

        Совершенно верно, там даже картинки есть на этот счет. Хотя кто здесь читает источники…


    1. Trept
      30.06.2016 10:53

      Возможно, так же, как хранятся матрицы слово-словоместо в поисковиках.
      Там размеры могут достигать десятков миллионов (слов) на десятки миллиардов (словомест).


      1. VioletGiraffe
        30.06.2016 11:59

        А как они хранятся?


        1. Trept
          30.06.2016 13:53

          Кратко посмотрите здесь: Инвертированные списки. Если нужны подробности, то там же есть ссылка на статью с разъяснением.


    1. tzlom
      30.06.2016 12:40

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


    1. iv1
      30.06.2016 17:23
      +1

      Есть множество способов упаковывать разряженные матрицы, компрессия и скорость вычислений очень высокие получаются.


  1. DistortNeo
    30.06.2016 10:52
    +15

    На самом деле нет ничего удивительного.

    1. Вычислительные ядра BlueGene довольно медленные. Фактически, 1 чип BlueGene (16 вычислительных ядер) имеет производительность меньшую, чем современный Core i7.

    2. BlueGene имеет «неродную» для большинства программистов архитектуру и собственный компилятор (к тому же ооочень медленный). Если для x86 архитектуры можно добиться значительного ускорения за счёт векторизации с помощью SIMD intrinsics, то в случае BlueGene придётся от этих инструкций отказываться и полностью полагаться на компилятор.

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

    4. (не ругайтесь только, сужу по своему опыту) Человек редко бывает и хорошим математиком, и хорошим программистом. Математики редко пишут эффективный код. А программисты могут просто не потянуть математические задачи.

    В статье показано преимущество GPU над CPU где-то на 2-2.5 порядка. Т.е. CPU-версия на современном десктопе должна работать вместо 15 минут около 2-3 суток. Как же так получилось, что ровно столько же времени нужно для работы суперкомпьютера?


    1. andybelo
      30.06.2016 14:20

      Чудес не бывает.
      «Написание кода для GPU (к тому же ещё и непереносимого) или даже под CPU с векторными инструкциями занимает очень много времени» дело в том, что этот код исполняется много раз, но один и тот же во всех миллиардах нитей, он гораздо короче, чема код для BlueGene, я думаю.


    1. geisha
      30.06.2016 15:19

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


    1. beeruser
      01.07.2016 21:22

      1. Так и один поток GPU очень медленный сам по себе. Быстродействие обеспечивается лишь параллелизмом.
      2. С чего бы? BlueGene, AFAIK, поддерживает Power ISA v.2.06 specification, где SIMD инструкции есть.
      3. Под GPU писать и проще чем под SIMD на CPU как раз из-за программной модели и сложнее одновременно из-за наличия т.н. glass jaws. Неаккуратная работа и игнорирование особенностей архитектуры гарантированно убьёт производительность.


      1. DistortNeo
        01.07.2016 21:44

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

        2. Да, там тоже есть SIMD. Но вот в чём проблема: если использовать эти инструкции явно, то придётся тестировать и отлаживать программу непосредственно на суперкомьютере. Либо писать просто код и надеяться, что компилятор сделает авто-векторизацию.


        1. beeruser
          02.07.2016 01:17

          Как известно, лучше быть богатым и здоровым, чем бедным и больным.
          Но быстрые (в однопотоке) процессоры неэффективны ни с точки зрения энергопотребления, ни с экономической.
          А закон Амдала для сабжа, по-видимому не критичен. Иначе бы никакого ускорения на GPU не было.


        1. andybelo
          02.07.2016 13:19

          " чем много, но медленных, " — вы на человека намекаете?


  1. severgun
    30.06.2016 11:45
    -2

    Слава яйцам! Ученые открыли возможность использования CUDA вычислений.
    Вот только что им мешает делать тоже самое на оборудовании суперкомпьютеров? Те же NVIDIA TESLA есть у МГУ.


    1. DistortNeo
      30.06.2016 12:07
      +2

      > Слава яйцам! Ученые открыли возможность использования CUDA вычислений.
      Осталось теперь дорасти до распределённых CUDA-вычислений.

      > Вот только что им мешает делать тоже самое на оборудовании суперкомпьютеров?
      Наверное то, что нет необходимости использовать суперкомпьютер для задачи, на решение которой уходит 15 минут.

      > Те же NVIDIA TESLA есть у МГУ.
      Единственный суперкомпьютер МГУ, где есть GPU — это Ломоносов, там около 2 тысяч NVIDIA Tesla X2070 (что примерно равно 200 современным Tesla K80). Но там свои заморочки — иногда проще посчитать на обычном десктопе.

      Ещё есть просто вычислительная станция с довольно посредственными характеристиками.


      1. nihonam
        30.06.2016 17:11

        «Также карта Tesla K20c была вы_й_грана в конкурсе… „
        Если уж на сайте МГУ такие ошибочки…


  1. RomanArzumanyan
    30.06.2016 12:16
    -1

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

    На Playstation 3 считали?


    1. asd111
      01.07.2016 12:23
      -1

      На playstation 3 amd radeon.
      Считали скорее всего на Geforce GTX 9XX.


      1. RomanArzumanyan
        01.07.2016 13:13
        +1

        Вы ошибаетесь. На PS3 установлена карточка Nvidia. На Xbox 360 установлена карточка Ati. В этом и заключался смысл шутки про карту Nvidia для игровой приставки — она слишком старая.

        Вот ссылки на спеки:
        https://en.wikipedia.org/wiki/PlayStation_3_technical_specifications
        https://en.wikipedia.org/wiki/Xbox_360_technical_specifications

        P. S.
        Позволю себе занудство — в ту пору Ati ещё не была куплена AMD, и карта была не Radeon.


  1. upsilon
    30.06.2016 12:35

    1) Здесь присутствует какая-то специфика задачи или же тоже самое можно провернуть с широким кругом физических задач?
    2) Не понял, они считали тем же методом, что и производились вычисления на суперкомпьютере или дополнительно что-то упрощали?
    3)оффтоп: а у меня в задаче матрицы ~10^5 элементов, и если дальше увеличивать размеры, то численная погрешность ощущается очень сильно (возникают комплексные собственные числа, когда их не должно быть и т.д.), как с такими проблемами бороться?


    1. DronkRU
      30.06.2016 14:24

      Если вопросы действительно конструктивны, вы можете попробовать отписать автору исследования: kukulin@nucl-th.sinp.msu.ru


  1. Siper
    30.06.2016 13:13
    +2

    Ну расковыряли ребята cuBLAS, молодцы чо…
    В планне инновайций новость опоздала лет эдак на 8.


    1. progchip666
      30.06.2016 13:47
      +1

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


      1. Siper
        30.06.2016 15:09
        +2

        Вообще МГУ были одни из первых в мире кто расковыряли CUDA и начали обучать студентов.
        Неожиданно то что публикация по ссылке доступна для скачивания за деньги, и сложно сказать что именно было сделано (если вообще текст публикации позволяет в принципе это сделать).


        1. DistortNeo
          30.06.2016 15:19
          +2

          Препринт легко находится в Google Scholar
          http://arxiv.org/pdf/1508.07441.pdf


          1. Siper
            30.06.2016 15:58

            Спасибо за ссылку. Беглый просмотр подтвердил мое предположение — задача сведена к операциям с матрицами (в т.ч. разреженными), где GPU по определению на порядок-другой быстрее.


            1. Varkus
              01.07.2016 01:40
              -1

              Вы такие матрицы имеете ввиду?

              EnLight256 – это гибридный оптический процессор
              Производительность процессора составляет 8 триллионов операций в секунду: за один такт (8 нс) процессор умножает 256-байтный на матрицу 256х256.
              как это работает http://dkws.narod.ru/linux/etc/optical/pic5.jpg
              точнее фирму быстро купили и больше об оптике ни слуху ни духу.
              Хотя я пару лет назад прикидывал и пришёл к выводу, что если очень захотеть можно на таком же принципе свой оптический проц на коленке в гараже собрать. По нынешним ценам нужно около 1млн.руб.


        1. eazakutin
          01.07.2016 11:38

          Практически все научные публикации на IEEE, Elsevier и т.д. скачиваются за деньги, в среднем 30$ за статью. Факультеты институтов оформляют подписку, позволяющую скачивать бесплатно для студентов и научных сотрудников.


          1. DistortNeo
            01.07.2016 11:49

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


  1. SchmeL
    30.06.2016 13:26

    Да уже давно юзают, ребята переоткрыли CUDA :)
    https://habrahabr.ru/post/96122/


    1. progchip666
      30.06.2016 13:51
      -1

      На этом всё, с вами был Dronk.Ru. Не забывайте возвращать деньги за покупки в Китае и подписываться на наш блог, будет ещё много интересного.

      Не требуйте многого. Весь смысл статьи заключён в этих двух последних строчках


  1. Vjatcheslav3345
    30.06.2016 14:11
    +1

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


    1. DistortNeo
      30.06.2016 14:13
      +1

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


      1. marenkov
        30.06.2016 14:20

        Опередил


        1. DistortNeo
          30.06.2016 14:39
          +1

          Кстати, не понимаю несогласных со мной — я писал на полном серьёзе.

          Работаю научным сотрудником преимущественно из дома, соответственно, основной рабочий компьютер — домашний десктоп. Днём работаю, вечером играю, на ночь ставлю вычисления (если есть). Планирую обновиться до GTX 1080, чтобы поиграть в современные игры. А то, что просчёт нейросети будет занимать около суток вместо 3-5 дней — это просто приятный бонус.


          1. andybelo
            30.06.2016 17:29

            Уважаемый научный сотрудник!
            К вам просьба от сельских механизаторов. Не могли бы вы просчитать нейросеть для ловли насекомых. Например, тараканов. Понимаете, у Гуглов И Яндексов почемуто в основном нейросети про распознавание голоса, а в народном хозяйстве гораздо полезнее нейросеть по распознаванию насекомых вредителей. И сельскому хозяйству польза, и вы бы миллиардером стали.
            С уважением, сельский механизатор.


            1. DistortNeo
              30.06.2016 20:14

              Хорошая задача. Ещё и лазер с автонаведением приспособить для возгонки ччужеродных объектов.
              А если серьёзно, то есть интерес со стороны металлургов.


              1. andybelo
                30.06.2016 20:16

                И много обещают?


                1. DistortNeo
                  30.06.2016 20:38
                  +1

                  Нисколько. В научной среде финансирование исследований идёт по следующей схеме:

                  1. Делаем исследование.
                  2. Получаем финансирование под почти полностью выполненное исследование.
                  3. Пока есть финансирование, занимаемся другими задачами.


                  1. andybelo
                    30.06.2016 22:21

                    В нейросети не верю уже 50 лет


  1. marenkov
    30.06.2016 14:19

    Ученым понравились ПК с мощными графическими картами и они хотят еще… а то приходится ждать пока коллега наиграется закончит вычисления. Чего только ради этого не придумаешь.


  1. arteast
    30.06.2016 14:20

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


    1. DistortNeo
      30.06.2016 15:17

      Важно ещё уметь использовать эту вычислительную мощность. Разница в пиковой производительности указанных в работе процессора и видеокарты — около 10 раз. В реальности при работе со своими задачами я это и наблюдал (CUDA-код работал в 10 раз быстрее CPU).

      В статье же пишут, что удалось достигнуть преимущество до 400 раз. Это означает только одно: код под CPU крайне неоптимизирован. Указание в тексте статьи языка и компилятора только подтвердило мои догадки.


    1. wmtoolsnet
      30.06.2016 15:17

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


    1. oWeRQ
      30.06.2016 15:41

      — либо для BlueGene написан крайне не оптимизированный код


  1. dtBlack
    30.06.2016 14:21
    +7

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

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

    Ощущение, что люди внимательно прочитали только заголовок.


    1. DistortNeo
      30.06.2016 14:30

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


  1. Alex_ME
    30.06.2016 14:44
    +1

    65 тысяч потоков. Tesla k80 имеет 4992 CUDA-ядер.
    Либо я что-то не понимаю, либо напрашивается одно: WAT?

    Ученые открыли GPGPU? Так многие современные суперкомпьютеры используют GPGPU. Что-то нечисто.


    1. DistortNeo
      30.06.2016 15:01
      +2

      The calculations are performed on a PC with the processor i7-3770K (3.50GHz) and the video card NVIDIA GTX-670

      А что касается потоков — изучайте матчасть, как работает CUDA.
      «Поток» в данном случае переводится как Stream.

      65 тысяч потоков означает, что задачу разбили на соответствующее число независимых по данным подзадач.


      1. Alex_ME
        30.06.2016 15:01

        Ясно. Спасибо, не прав был.


  1. a5b
    30.06.2016 15:51
    +1

    Полный текст статьи Fast GPU-based calculations in few-body quantum scattering — http://arxiv.org/abs/1508.07441 http://arxiv.org/pdf/1508.07441v1.pdf


  1. ProgrammerAlias
    30.06.2016 15:55

    «приблизиться к конченой цели ученым долгое время не удавалось.»


  1. edd_k
    30.06.2016 16:31
    -1

    О чем статья? Что именно эти ребята придумали? Т.е. что до них не получалось у тех, кто тоже этой задачей занимается. Я так и не понял. То, что GPU сейчас позволяют прилично ускорить решение многих задач — вроде не ново.


    1. geher
      30.06.2016 20:14
      +1

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

      А по вашей логике получается, что в любой программе ничего нового, поскольку уже давно (еще до появления GPU) компьютеры могут выполнять программы.


      1. edd_k
        30.06.2016 20:24

        У меня нет в сообщении такой логики. У меня в сообщении — вопрос. Возникший после того, как я в статье несколько раз прочитал капитанство о преимуществах GPU (которое не ново и всем известно). Но не прочитал, почему весь мир эту задачу не пытался еще на GPU переложить. Может трудность в чем была. Может еще что. А может и вовсе не уникально решение и аналоги есть (т.е. заявление, что весь мир считает 2-3 дня вместо 15 минут — всего-лишь пафос). Вот об этом и спросил.


  1. Snaker
    30.06.2016 17:11
    -1

    О, дошла очередь – импортозамещение британских учёных!


  1. DenerKup
    30.06.2016 20:13
    +3

    Господа, я не могу понять, почему статья снова вызвала такой шквал саркастического негодования в духе «Ахаха, русские ученые только-только добрались до CUDA»? Прослушав несколько курсов по этой технологии, я пришел к выводу: написать эффективную программу на CUDA не так-то просто, как кажется. В CUDA нетривиальная модель памяти, потоки далеки от потоков в смысле CPU + миллион тонкостей с кэшами, константной памятью, ветвлениями и циклами. Это не openMP, где можно тупо расставить #pragma omp parallel for и добиться ускорения. Часто алгоритм приходится почти полностью перерабатывать или даже создавать новый, учитывающий особенности архитектуры. Безусловно, без глубокого понимания уравнений, которые решали авторы статьи, невозможно создать эффективный численный метод решения.

    Т.е. если кратко: идея использовать GPU для вычисления — далеко не новая, а вот сама адаптация каждого конкретного алгоритма под графические карты — это уже достижение.


    1. Varkus
      30.06.2016 20:39

      Потому что по вот таким статьям https://habrahabr.ru/company/epam_systems/blog/245503/ на одном известном ресурсе, сейчас каждый школьник может писать под CUDA, а тут речь про Учёных(с большой буквы).

      И лично для меня эта ситуация выглядит так:
      Сидят деды и кубаторят, как же им сделать расчёты на суперПК не имея суперПК?
      Один из студентов сидевший неподалёку: Иван Иваныч, а вы слышали про CUDA, 4096 ядер в потоке и память DDR5?
      Иван Иваныч: ну вроде да, но это баловство какое-то детское, впрочем, хочешь попробуй, а мы научную статью потом накатаем. profit.
      и ведь «стрельнуло».
      (нажимая отправить не покидало чувство, что хабрасуицид делаю :)


      1. DenerKup
        30.06.2016 20:53
        +3

        Рассказываю мой личный опыт. Участвовал я в этом конкурсе: http://www.dislab.org/GraphHPC-2015/en/contest.php Суть конкурса кратко: есть 3 вида систем: 2xCPU, CPU+GPU, какой-то суперкомпьютер, нужно: реализовать наиболее эффективный алгоритм построения минимального остовного дерева в графе.

        В один момент я решил воспользоваться мощью CUDA. Все написал, исправил баги, работает правильно… но в 4 раза медленней чем на CPU в 8 потоков. Как же так? А вот в CUDA каждое ветвление в коде (if, for, while) работает не как на обычном CPU: группы потоков в CUDA выполняет одни и те же операции с разными данными. В случае ветвлений группы приходится делить на части по ветви условий. Причем группы сопоставляются каким-то вычислительным частям, которых ограниченное количество. В итоге все начинает дико тормозить. Сейчас точно всех тонкостей не помню, т.ч. выше могу где-то быть не прав.

        В общем: CUDA поддается для изучения даже школьникам — там нет сложного API. Но написать алгоритм так, чтобы он всеми инструментами мог эффективно воспользоваться — нетривиально. В качестве примера можете посмотреть стандартные вещи — нахождения максимума в массиве, подсчет суммы элементов или перемножение матриц. Это довольно простые вещи, но чтобы работали эффективно на CUDA приходится придумывать нетривиальные приемы.


        1. Varkus
          30.06.2016 21:07

          Больше 10 лет пишу код(с++, cpu, arm), а вот CUDA как-то не пришлось, к сожалению.
          Потому не могу с вами предметно беседовать, но послушать было приятно.

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


    1. kumbr_87
      30.06.2016 21:43
      -2

      Так этож тут традиция, хлебом не корми дай пофапать на америку/европу и обосрать свою/соседскую страну. Модно это нынче среди тех кто ничего не добился, сваливать вину в своей никчемности на других :)


  1. Dum_spiro_spero
    01.07.2016 00:45
    +1

    Хороший результат.
    Самое главное: «260 миллионов… интегралов». Интегралы ОЧЕНЬ хорошо параллелятся,
    Мы как-то на GTX 660 запрограммировали расчет неких интегралов — получили ускорение в 110 раз по сравнению с одним ядром на i7-4770.
    C расчетом на всех 4-х ядрах (8-ми потоках) CPU не сравнивали.
    Сейчас собираемся сделать кластер на коленке и на нескольких видеокартах. Сделаем — напишу статью.


    1. Varkus
      01.07.2016 01:16

      Во, давай, давай!!! я уже второй год всё вокруг да около хожу, как-бы свой кластер на GPU собрать.
      Глядишь после Вашей статьи всё-таки хватит духу.


    1. eGor007
      01.07.2016 02:43

      Машинка у них такая: «i7-3770K (3.50GHz) and the video card NVIDIA GTX-670»

      Меня больше интересует вопрос точности. Видюха игровая и обычно в таких видюхах в драйверах идёт приоритет скорости перед точностью. При выполнении на quadro той же частоты (что и игровая) скорость ниже. Если сравнивать по программам рендеринга, то качество рендернига на игровых уступает. Но что с вычислениями? Хорошо бы кто сравнил теслу или квадро с игровой, чтобы понять, есть ли смысл использовать игровые для таких целей. А то получится, что быстро что-то посчитали, а потом ракета не в ту страну приземлится.


      1. DistortNeo
        01.07.2016 08:19

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


        1. eGor007
          01.07.2016 09:37
          -1

          Стандарты стандартами, но это не мешает регулярно создавать процессоры, которые делают вычисления с ошибками. Пример у компании интел:
          https://habrahabr.ru/company/pt/blog/274939/
          Вопрос в том, в каком масштабе это у энвидиа?


          1. DistortNeo
            01.07.2016 10:13
            +1

            Ошибка в вычислениях — это действительно что-то из ряда вон выходящее. Ещё более вероятно просто битую память получить (частое явление для видеокарт).

            А небольшие различия бывают, это да:
            http://stackoverflow.com/questions/13937328/division-of-floating-point-numbers-on-gpu-different-from-that-on-cpu

            Но существенными я бы их не назвал. Если результат вашего алгоритм зависит от значения бита в младшем разряде, значит, вы что-то делаете не так. Гарантируется только определённая точность до определённого разряда.


            1. andybelo
              01.07.2016 21:00
              -1

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


        1. Siper
          01.07.2016 10:26

          CUDA для некоторых операций позволяет отходить от IEEE 754 (--use_fast_math) и получать дополнительный выигрыш в скорости за счет потери точности (от одинарной). А с какими настройками проводились бенчмарки обычно не пишут)


          1. DistortNeo
            01.07.2016 11:18
            +1

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

            И, кстати, для CPU эта опция также доступна: там тоже есть возможно быстро (в ~3 раза быстрее) вычислять обратное значение и корень.


            1. eGor007
              03.07.2016 06:04

              А что с вычитанием? Ведь именно от него и появляются ошибки из-за округления не там. Пример при вычитании близких по значению чисел и отличающихся по значениям лишь на доли процента. А потом умножении или делении результата. При особо неудачном округлении ответ может отличаться на несколько порядков.

              Или Вы под сложением подразумеваете и вычитание?

              Был у меня случай с исправлением ошибок профессоров из МИФИ, которые неудачно округляли.


              1. DistortNeo
                03.07.2016 12:58

                Вычитание должно выполняться так же, как и на CPU.
                Ну а если алгоритм неустойчивый и зависит от точности округления — это плохой алгоритм.


                1. eGor007
                  03.07.2016 13:32
                  +1

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


  1. Moog_Prodigy
    01.07.2016 01:10

    Не знаю почему, но вспомнился Волков Коммандер, 64кб. В условиях ограниченных ресурсов иногда такие вещи получаются!


  1. Temtaime
    01.07.2016 02:29

    CUDA не нужна. OpenCL.


    1. Robotex
      01.07.2016 17:19
      -1

      OpenCL существенно медленнее


      1. Dum_spiro_spero
        03.07.2016 15:16
        +1

        Основная проблема с OpenCL — его не развивают так как развивают CUDA. Хотя вроде видеокарты от AMD/ATI более выгодны (в плане терафлопс на доллар — хотя не уверен). По CUDA имеются тонны инфы, проводятся бесплатные курсы, семинары, выходит журнал, и т.п… А по OpenCL — увы. Инфы на порядки меньше. У меня вокруг есть люди кто программирует на CUDA — но ни одного кто бы прогал на OpenCL — а среда вроде научная. Я думаю это существенная недоработка AMDшников.


  1. claymen
    01.07.2016 08:29
    +1

    Ребята молодцы, они сделали то что и должны делать настоящие программисты, оптимизировали решение одной из задач. (мы все снимаем шляпу когда видим intro на 4kb которая показывае то что в гигабайт обычные прогеры не запихнут). И я рад если они на этом сделают денег.


  1. Saffron
    01.07.2016 19:27

    Нельзя ли хоть капельку технической информации добавлять? Это всё же хабр(гиктаймс), а не первый канал. Там случаем не тензорный поезд использовали? Вроде его давно уже крутят в МГУ: https://www.youtube.com/watch?v=W7zkRQda98k


  1. RioMan
    04.07.2016 02:45

    То-есть нежелание государства покупать суперкомпьютеры принесло свои плоды?


    1. andybelo
      04.07.2016 06:46

      Если можно что-то сделать без государства, оно всегда будет сделано