Процессоры против видеокарт

7 июль, 2010 - 13:15Андрей Дегелер

Интересные баталии разворачиваются сейчас между Intel и Nvidia. Меня крайне заинтересовал предмет спора, который на первый взгляд выглядит абсурдным: что лучше — CPU или GPU? Сторонники теории превосходства графических процессоров (а в ним относится не только Nvidia, но и AMD) уверены, что их производительность при параллельных вычислениях выше, чем у CPU, в сотни раз. Естественно, Intel от подобных предположений не в восторге.

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

Новый раунд споров развернулся после публикации специалистами Intel исследования под названием «Развенчание мифа о стократном превосходстве GPU над CPU. Оценка производительности вычислений с высокой интенсивностью данных в CPU и GPU» (Debunking the 100X GPU vs. CPU myth: an evaluation of throughput computing on CPU and GPU). В исследовании сравниваются 4-ядерный процессор Core i7 960 с частотой 3.2 ГГц и GPU прошлого поколения Nvidia GTX280.

Исследователи действительно «развенчали миф», при этом, впрочем, честно указав, что GPU в тестах оказался в среднем в 2,5 раза быстрее CPU, а в некоторых задачах — и в 14 раз. В официальном блоге Nvidia немедленно появился пост с несколько ироничными восторгами по поводу честности и объективности исследователей Intel и сожалениями о том, что последние предоставили крайне мало информации об условиях тестирования. Кстати, там же приводится тенденциозная подборка ссылок на другие исследования — для тех, кто всерьез интересуется данной темой.

Intel на заявления Nvidia отвечает, что приводимые данные вырваны из контекста и ничего не доказывают. Ну, не знаю, по-моему, всё там написано вполне однозначно.

С другой стороны, эксперты из IBM некоторое время назад написали статью «Хотите верьте, хотите нет: многоядерные CPU не уступают GPU в производительности в задачах, требующих интенсивных вычислений» (Believe it or Not! Multi-core CPUs Can Match GPU Performance for FLOP-intensive Application!). В ней встречаются в неравном бою CPU Intel Xeon (Nehalem) и IBM Power7 и GPU Nvidia GTX 285. В тестах, предложенных исследователями, они отработали, соответственно, за 1,82 с, 1,02 с и 1,75 с.

Глядя на статьи, написанные по данной проблеме, становится понятно: скорее всего, GPU действительно могут быть гораздо производительнее. Вопроса только три: во-первых, насколько серьезным будет отрыв, во-вторых, сколько усилий нужно приложить для оптимизации кода для исполнения силами графического процессора, в-третьих, стоит ли такая овчинка выделки.

Впрочем, Microsoft планирует задействовать GPU для ускорения работы с веб-сервисами в Internet Explorer 9, а Apple уже применяет подобное решение в Mac OS X Snow Leopard. Посмотрим, насколько сильным будет влияние изменений в параллельных вычислениях на привычную нам картину мира.