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 несколько лет назад привлекла к решению данной задачи учёных из разных американских университетов. В Интернете я встретил книги на данную тему (developer.nvidia.com/object/gpu_gems_2_home.html) и даже учебные пособия (см., например, www.gpgpu.org/sc2006). Вообще же по запросу “GPU vs CPU” в поисковике выдаётся пара сотен тысяч ссылок — тема в последние полтора года активно обсуждается. Очевидно, все идет к тому, что в ближайшие годы пользователь на уровне ПК получит суперкомпьютерную производительность. Вопрос только в том, что в подавляющем большинстве случаев он не знает, что с нею делать.