7.2.09

Вычислительная моща

Я внимательно слежу за темой использования многоядерных процессоров, например, еще в октябре 2007 года писал про то, как "игры подбираются к ядрам". Прогресс стал виден на статистике "Из жизни игровых ПК", а в декабре я прочитал интересную статью "2 головы хорошо, а 4 лучше, или сколько ядер нужно играм вчера, сегодня (и даже завтра)".

Пока состояние дел можно обозначить пунктами
  • Использовать ядра могут серверные приложения (они это умеют давно), игры, и научные или вычислительные приложения (с определенными особенностями). Причем, Игры пока используют не более 3-х ядер. 4-ое ядро прибавки в производительности почти не дает, зато его может занять операционная система.
  • Нынешние прикладные программы (склад, бухгалтерия и т.п.) использовать ядра не в состоянии, потому что просто не для чего. Возможно, формирование отчетов будет вынесено в отдельные нити вычислений, но пока явно такая функциональность не афишируется. Так что для офисного десктопа двухъядерный процеессор - максимум.
Научные приложения, кстати, ринулись осваивать возможности графических процессоров для вычислений, например CUDA от NVidia. Недавно я обновил свой Boinc (который у меня на двухъядерном десктопе считает seti@home и einstein@home), и обнаружил что для seti@home написан новый вычислитель, который может использовать мою GeForce 8800GT.

Результаты просто убили. Если раньше блок данных обсчитывался на одном ядре около 3-х часов (AMD 64 x2 5200), то теперь такой же блок данных обсчитывается видеокартой за 9-25 минут. То есть, моя видеокарта по скорости вычислений для seti@home стала эквивалентом одновременного использования 12 ядер. Это еще цветочки, потому что в особенных случаях графический процессор дает ускорение до 100 раз.

В то же время, 64-разрядные операционные системы только-только начинают увеличивать свою долю против 32 разрядных. CodeGear начал бета-тестирование Delphi 64 bit. И тут совершенно ясно, что даже в вычислительных приложениях удастся получить максимум 30% производительности, ну и еще выиграть от возможности использования больше 4 гигабайт памяти. И это все?
Но это опять же больше относится к научным или серверным приложениям, которых подавляюще мало относительно обычных прикладных. Прикладным 64-разрядность в ближайшей перспективе вообще ничего не даст.

Общее ощущение - наступает некоторый технологический тупик. Многоядерные процессоры себя оправдали, но для массового применения больше 4-х ядер смысла пока нет, и то для игр. 64-разрядные системы и приложения дают слишком мало выигрыша. Использование графических карт также по производительности интенсивно развиваться не сможет. Что дальше?

На закуску еще немного здорового пессимизма - несколько печальная история о том, как распараллеливание вычислений может ухудшить производительность на многоядерных системах.

Комментариев нет: