GPU в помощь? | ||
Программирование | ||
Когда в прошлом году Intel добавила в свои процессоры графическое ядро, это было воспринято с одобрительным пониманием, но, что называется, без фанфар. В конце концов, если до этого в CPU переехал кон ... |
Когда в прошлом году Intel добавила в свои процессоры графическое ядро, это было воспринято с одобрительным пониманием, но, что называется, без фанфар. В конце концов, если до этого в CPU переехал контроллер памяти, так чего бы не перевести туда же остальной функционал северного моста? И стала встроенная графика жить да поживать повсеместно, от Intel Atom до мобильных Core i7. Кто хотел – использовал ее, кто не хотел – выбирал компьютер с дискретным ускорителем. В общем, ничего, по большому счету, не изменилось. А то, что графическая составляющая потихоньку помогала CPU в декодировании видео, так это вроде нормально, привыкли.
Между тем коллегам по бизнесу идея нравится, и скоро в их процессорах тоже обоснуются графические ядра. Но этим не ограничится: в планах использовать последние в максимальном спектре задач, и даже официальное именование чипов поменяется с CPU на APU. Вообще, по мнению AMD, число ядер x86 нельзя увеличивать бесконечно, потому что начинают возникать «бутылочные горлышки», снижающие эффективность от преумножения ядер. А GPU – он как бы совсем рядом, но, в силу своей непохожести, обычным ядрам не мешает, и ежели его надрессировать…
В общем, посмотрите вот на этот слайд.
Согласно ему, на пятки многоядерным процессорам наступают т.н. «неоднородно-ядерные», и это в строгом соответствии с законом Мура. Достоинств у последних много, но и недостатки весьма серьезные. Пожалуй, самый неприятный – гибридные процессоры пока очень плохо вписываются в привычные модели программирования. И заставить усталого программиста переключиться ох как непросто. Тем не менее, уже инвестируются силы и средства в поддержку разработчиков, включается маркетинговый аппарат, работа идет.
У меня под руками сейчас нет волшебного хрустального шара, заглянув в который можно узнать о далеко идущих планах Intel. Но, если включить логику и посмотреть на архитектуру будущих процессоров Sandy Bridge, можно предположить, что графическая составляющая из процессора исчезнет вряд ли, и, следовательно, она будет от модели к модели становиться все быстрее. Собственно, уже сегодня прогресс налицо – в Sandy Bridge технология Turbo Boost проникла и в интегрированное графическое решение, в результате чего его частота со стандартных 650-850 мегагерц может под нагрузкой увеличиваться аж до 1350. Игрушкам это нравится. Ну и, раз так, было бы логично однажды начать использовать графические мощности для ускорения разного рода вычислений.
О том, как графические чипы «помогают» сегодня, я уже писал не раз. Скажем так, не все там гладко (например, можно посмотреть вот этот пост в ISN об эффективности GPU в конвертации видео). Но давайте предположим, что завтра интегрированные GPU останутся не слишком умными в не очень типичных для них задачах, но зато научатся аккуратности, не утратив скорости. И возникает вопрос: а не намучаемся мы с их включением в борьбу за общее дело еще больше, чем с многоядерными процессорами?
Ведь само по себе ничего на компьютере не случается, и внедрение таких красивых в презентациях технологий невозможно без кропотливых усилий разработчиков ПО. Как обстоят дела сегодня? Есть ли нравящиеся лично вам примеры успешного применения GPU в вычислениях? Захотят ли разработчики содействовать дружбе CPU и GPU в промышленных масштабах? Насколько эффективна будет эта связка на самом деле? Если эффективна – как быстро можно будет переучиться на новый стиль программирования? И пойдет ли речь о неком стандартном подходе, или каждый профессионал будет искать (и находить) свой путь?
Вопросов больше, чем ответов, но это и не удивительно: CPU и GPU пока только присматриваются друг к другу, и прикидывают – какую пользу можно извлечь из отличий соседа по кристаллу. Но может быть вы уже думали об этом союзе, и можете сделать свой прогноз?