Вице-президент NVIDIA: «Закон Мура мертв»

Билл Дэлли

Вице-президент NVIDIA Билл Дэлли в гостевой колонке журнала «Форбс» написал, что знаменитый закон Мура больше не работает и «мертв». По его словам, современные многопроцессорные решения становятся все менее эффективными, и простое увеличение числа ядер уже не дает результата. «Это как строить самолет путем прикрепления крыльев к поезду», — говорит он.

Решением проблемы Дэлли считает энергоэкономичные параллельные системы типа CUDA. «Сейчас нужно создавать энергоэффективные параллельные компьютеры, они же пропускные компьютеры (throughput computers). В них будет много процессорных ядер, оптимизированных не на последовательную скорость, а на эффективность решения определенной проблемы».

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

Дальше он объясняет: «Путь к параллельным компьютерам будет нелегок. После 40 лет последовательного программирования в индустрии сложилось мощное противодействие любым изменениям, ведь они требуют порвать с устоявшимися подходами. Будет очень непросто преобразовать огромное число существующих последовательных программ для работы в параллельном режиме, особенно с учетом острой нехватки программистов, имеющих опыт параллельного программирования».

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

75 Responses to “Вице-президент NVIDIA: «Закон Мура мертв»”

  1. Не спора ради, какие классы алгоритмов не поддаются?

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

  3. Как я понял, чтобы ребенок многого достиг в жизни его надо называть или Стив, или Билл

  4. Ну почему же? Еще можно назвать Чаком или Анатолием =)

  5. Это таки Nvidia признает что CPU Cell от IBM удачен? :)

  6. Вставлю и я свои 5 копеек.

    1) CUDA это вариация на тему SIMD, так? Если я не ошибаюсь, тогда с помощью такой технологии можно решить довольно небольшой класс задач, если не ошибаюсь то в основном задачи в базисе map, fold, scan.
    2) Сейчас многие приложения переходят в веб, а там проблем с параллельностью практически нету, там и без CUDA все хорошо.
    3) Действительно сложные задачи параллельного программирования связаны с concurrency, тут особенно интересны функциональные языки (STM) и акторная модель (erlang). CUDA со своим Си идет лесом.
    4) В последовательном программировании еще остались «хвосты». К примеру неблокирующий ввод/вывод, coroutines, continuations. Как минимум неблокирующий ввод/вывод необходим для светлого параллельного будущего. Так что тут есть еще куда копать.

    В любом случае будущее параллельного программирования явно не за CUDA.

  7. В последовательном программировании, ИМХО, неблокирующего ввода-вывода не может быть в принципе. Функция должна вернуть ожидаемый результат, от него будет зависеть дальнейший ход программы.

    Переходите на асинхронные алгоритмы с обработкой сообщений/состояний, тогда и параллельность будет.

  8. sam_reaper
    18.04.2010 в 01:10 »

    Нет, вы ошибаетесь) Почитайте про Event-Loop.

  9. Вы ошибаетесь в утверждении, что я ошибаюсь. Речь-то идет об одном и том же. Event-Loop и есть асинхронные алгоритмы с обработкой сообщенийостояний. =)

  10. Blooderst
    18.04.2010 в 01:44 »

    Ок, я понял что вы имеете ввиду. Однако я все же считаю, что последовательные алгоритмы и ассинхронность понятия ортогональные. Все таки программы на основе event-loop последовательные. И event-loop это concurrency а на parallelism, эти два проклятые слова оба переводятся как «параллельность». Под параллеьностью обычно имеют ввиду факт физического одновременного выполнения нескольких вычислительных процессов на разных устройствах, и event-loop под это определение не подходит.

  11. norguhtar
    18.04.2010 в 02:20 »

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

    Возможно, я ошибаюсь Тот же Erlang вроде бы не асинхронный, но замечательно распараллеливается.

  12. dborovikov
    18.04.2010 в 02:44 »

    >Асинхронность является обязательным условием для параллельности.

    Опять же путаница в терминологии. Получить результат ассинхроно это значит получить результат отложенно (defered), как только результат будет доступен. А как этот механизм реализуется — через многотредовость (параллельно), цикл событий (последовательно) не важно. Однако синхронные блокирующие вызовы, разделяемые в многотредовой среде это плохо — такие места как правило блокируются для доступа только одним тредом и являются узким местом.

    Говорить, что ассинхронность необходима для параллельности нельзя. Да она порой полезна, например при вводе/выводе.

    Erlang кстати говоря ассинхронный, там сообщения отправляются ассинхронно.

    Вообще параллельность бывает разной. Грубо можно выделить: «чистую» или детерменированную параллельность (как OpenMP), недетерминированную (за счет concurrency) параллельность (Erlang, Threads), паралельность по данным (SIMD)

    Плюс «не параллельность» чисто concurrency, например event-loop.

  13. Хм, разве в OpenMP полная изоляция потоков? Там вроде бы вполне себе shared resources, а как они shared (атомарно или блокировками) — компилятору виднее.

    Я считаю, что параллельность либо есть, либо делает вид, что есть. А уж как оно правильно называется — точно не знаю.

  14. dborovikov
    18.04.2010 в 04:05 »

    интересная тема… вот постоянно сижу в офисе и думаю… вот бы объединить все компы в 1 вычислительную единицу….и хотя бы видео общитывать можно было бы с нереальной скоростью :)
    а так 50 компов и несколько серверов (особенно ночью) тупо простаивают :)

  15. Вам сюда TSC! Russia, вы сможете помочь просчитывать белки и вести медицину, биологию и химию вперёд, к новым лекарствам.

  16. dborovikov
    18.04.2010 в 04:44 »

    Мне кажется nvidia выгоден такой поворот событий, так как у них нет своего x86 процессора, а вот если рынок конкретно лицом развернется в многопоточность и появиться множество корпративных хорошо распараллеливающихся приложений, то у них есть шанс выпустить свой процессор под какую нибудь отличную от x86 архитектуру. Почему под корпоратив? Потому, что для него легко использовать Linux как ОС. Linux быстро можно адаптировать почти к любой архитектуре и в короткие сроки. Все это происходит на фоне интеграции GPU в ядро CPU, видимо из за этого они и нервничают…

  17. В корпаративном секторе самым нагруженным и критичным местом является СУБД. Сможет ли векторный(!) процессор ускорить работу реляционной СУБД? Сомневаюсь. А вот у документно-ориентированных распределенных СУБД (вроде CouchDB) есть шанс. Правда и здесь NV со своим CUDA в пролете=) Ведь модель программирования здесь совсем другая (concurrency, а не pure parallel)

  18. dborovikov
    18.04.2010 в 05:59 »

    угу. закон Мура мёртв в отдельно взятой компании. хотя иногда и получается заталкать транзюки примерно по Муру но температуры >100C неодобряэ. проклятая физика, как бы хорошо жилось Нвидии если б не она.

    проектировать системы лучше надо тогда и Мур выполняться будет. по крайней мере до GT200 же перевыполняли. а может пора президентов менять, тото они перепугались?

  19. Вот вам пример черного пиара NVidia против Intel. «Ваш CPU мертв, всем юзать GPU. Пожалуй, за такие методы продвижения следующей моей видюхой станет опять Radeon :)

  20. (Я не помню, когда впервые услышал про параллелизм, но точно помню, что первый шаг в пиаре этого направления сделал именно Штеуд. Так «изящно» обвинить его в приверженности 40-летнему консерватизму, не понимая даже сущности закона Мура (и рассчитывая на тех, кто о нем только слышал издалека), похоже, могут только жефорсоделы.)

  21. этот день всё-таки настал!

  22. «Будет очень непросто преобразовать огромное число существующих последовательных программ для работы в параллельном режиме»
    — а нафига? Не припомню программу, с которой было бы некомфортно работать на современном железе. Для массового пользователя, если уж речь идет об «огромном числе программ», самыми прожорливыми были и остаются игры, а они и так GPU загружают.

  23. dborovikov
    18.04.2010 в 09:27 »

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

  24. disserman
    18.04.2010 в 09:46 »

    Думаю, дело идет к программным архитектурам на основе мини-сервисов (или миниемонов).

    Это небольшая автономная программа, что-то вроде java-апплета для мобильника, которая работает на отдельном ядре с отдельной памятью. Оно периодически поглядывает на расписание (очередь задач) и если есть задача, то оно ее решает. Само загружает данные и выгружает результат.

    Вот только задачи трудно придумать, особенно в сфере бизнеса и учета. Разве что в играх задач хватает просчитать область экрана, или поведение NPC, или траекторию движения частиц…

  25. кстати, а ведь есть уже параллельный обсчет видео у Sony Vegasа… правда ни разу не пробовал…

Post Info

Back to top · Copyright © 2010 Renovation Blog