23 мая на конференции Microprocessor Forum 2007 в Сан-Хосе директор компании NVIDIA по архитектуре Джон Николс сделал нашумевшее заявление о том, что производительность ЦП может быть значительно увеличена при использовании графических процессоров NVIDIA в качестве дополнительных процессоров.

Графические процессоры (ГП) установлены в любой плате графического ускорителя. Если вы не играете в компьютерные игры, то эта мощная плата простаивает и ее можно загрузить другими задачами. Такой подход дает дополнительные 200 Мфлопс производительности, которые можно использовать для научных, медицинских и финансовых расчетов.

В феврале NVIDIA выпустила бета-версию программного обеспечения CUDA (Compute Unified Device Architecture), окончательная версия которого должна появиться во втором полугодии.

CUDA позволит разработчикам писать программы, в которых ГП будет решать некоторые вычислительные задачи, разгружая ЦП.

CUDA работает только с графическими процессорами NVIDIA GeForce 8800 и 8600, а также Quadro FX 4600 и 5600. Графический процессор - это чрезвычайно сложная микросхема. Так, ГП GeForce 8800 содержит в себе 681 млн. транзисторов, его процессорное ядро работает на тактовой частоте 575 МГц и состоит из 128 потоковых процессоров (АЛУ) с архитектурой SIMD (один поток команд - много потоков данных), поддерживающих 32-разрядные операции плавающей арифметики в стандарте IEEE 754, причем эти АЛУ работают на удвоенной тактовой частоте и каждый имеет собственную кэш-память. Так что устройство ГП весьма характерно для массивно-параллельных процессоров.

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

На самом деле вопрос использования ГП в качестве ускорителя для ЦП далеко не прост, поскольку ГП проектируется в расчете на параллельность на уровне данных, а не команд или тредов, как это делается в ЦП, поэтому ГП далеко не для всех классов задач можно эффективно загрузить вычислениями. NVIDIA несколько лет назад привлекла к решению данной задачи ученых из разных американских университетов. В Интернете я встретил книги на данную тему (http://developer. nvidia.com/object/gpu_gems_2_home.html) и даже учебные пособия (см., например, www.gpgpu.org/sc2006). Вообще же по запросу "GPU vs CPU" в поисковике выдается пара сотен тысяч ссылок - тема в последние полтора года активно обсуждается. Очевидно, все идет к тому, что в ближайшие годы пользователь на уровне ПК получит суперкомпьютерную производительность. Вопрос только в том, что в подавляющем большинстве случаев он не знает, что с нею делать.