Category: компьютеры

Category was added automatically. Read all entries about "компьютеры".

glider

Зачем нужны GPU? Зачем нужна CUDA?

Этот пост логически принадлежит гайду по CUDA, но из-за ограничений ЖЖ на максимальный размер поста я вынужден был разбить гайд на несколько частей: 1) Зачем нужны GPU? Зачем нужна CUDA? (сейчас вы читаете эту часть), 2) Программная модель CUDA, 3) Хардварная реализация CUDA, 4) CUDA-совместимые видеокарты.

Disclaimer.
  1. Здесь будут затронуты лишь архитектура и спецификации устройств, имеющих compute capability 1.0-1.3, а именно: 1) десктопных карточек GeForce 8, GeForce 9, GeForce 1xx и GeForce 2xx, 2) их мобильных аналогов, 3) их профессиональных или, как сейчас модно выражаться, HPC аналогов семейств Quadro и Tesla. Более подробно читаем в CUDA Programming Guide 2.3 (Appendix A. Technical Specifications).
  2. Соответственно, инфа в этом гайде неприменима к: 1) видеокартам GeForce 7 и ниже (у них кардинально иная микроархитектура), 2) видеокартам ATI/AMD (несмотря на сходства высокоуровневой модели программирования, на низком уровне эти GPU очень сильно отличаются от решений NVIDIA), 3) видеокартам GeForce 300 и Tesla 2xxx (они построены на несколько отличной архитектуре, известной под кодовым названием Fermi; о ней поговорим как-нибудь в другой раз).
  3. В этом посте будет очень сжатый саммари (минимум воды и ноль картинго), поэтому для более мягкого погружения в архитектуру CUDA рекомендую ознакомиться с тремя презентациями на эту тему: общая инфа про архитектуре GPU, описание CUDA - много топиков сразу, но, на удивление, с хорошей детализацией, оптимизация алгоритмов для CUDA - там все последовательно, с необходимой для фтыкания с нуля избыточностью информации и с пачкой картинго. Не стоит забывать и про референсные документы, но они будут потяжелее для восприятия: CUDA Programming Guide 2.3, Best Practices - CUDA 2.3, CUDA PTX ISA 1.4.
  4. Здесь не будет информации о результатах на реальных задачах, ибо они индивидуальны для каждого алгоритма.
  5. Наконец, этот гайд - work in progress, поэтому что-то в нем может быть неточным, а что-то тупо неправильным. Со временем гайд будет расширяться и дополняться. Замечания и дополнения по делу всяко приветствуются. Вопросы о непонятных местах приветствуются еще больше (разрешены анонимные каменты, такчт задать вопрос очень легко - а мне ответить будет только в радость)!

Зачем нужны GPU? Зачем нужна CUDA?

На сегодняшний день графические процессоры (GPU) представляют собой самое яркое воплощение архитектуры SIMD. Их ALU многочисленны и быстры (см. сравнение пиковой single-precision floating point производительности CPU и GPU NVIDIA (2003-2008й годы)), их память обладает впечатляющей пропускной способностью (см. сравнение пропускной способности DRAM CPU и GPU NVIDIA (2003-2007й годы)), а темпы роста производительности являются самыми значительными в индустрии (сравните уклон двух приведенных графиков для CPU и GPU).

Несмотря на провоцирующую букву G (graphical) в названии, GPU хорошо подходят не только для расчета и отрисовки графики, но и для выполнения многих (но не всех!) general-purpose вычислительных задач (отсюда и название области исследований - GPGPU). Производительность GPU на выполнении подходящих алгоритмов в десятки и сотни раз превосходит производительность современных CPU (примеры ускорения алгоритмов на GPU NVIDIA можно посмотреть на страничке CUDA Zone - там еще можно поиграться с чекбоксами в категории "Filter by Application Type").

Впечатляющая вычислительная мощь GPU достигается за счет ограничений программной модели и неудобства программирования. Первую из этих проблем устранить невозможно, ибо это фундаментальный trade-off в проектировании железа - та цена, которую надо платить за непревзойденную производительность (больше на эту тему можно прочитать вот тут). Вторую проблему призвана устранить CUDA, отходя от канонического подхода к выражению параллелизма по данными при помощи векторных инструкций (как, например, сделано в SSE) и предоставляя более удобную модель программирования массово параллельных (massively-parallel) SIMD-устройств (подход CUDA концептуально не оригинален и во многом похож на шейдерные языки HLSL/GLSL, но зато предоставляет существенное расширение программной модели).
glider

Секта ненавистников ClearType

По моему опыту мир делится на три части: 1) тех, кому не важно - алиаснутые или антиалиснутые шрифты в системе, 2) тех, кто видеть не может сглаженные шрифты, 3) тех, кому пофигу на топик. К слову, если кто не в курсе, что такое сглаживание шрифтов, про это в деталях можно прочитать по ссылке Engineering Changes to ClearType in Windows 7, или просто посмотреть картинки:

сравнение сглаженного и несглаженнего шрифтов (слева и справа соответственно)

К сожалению, я принадлежу к счастливчикам, которые попадают в категорию 2 - при долгой работе с системой, на которой включен ClearType, начинают слезиться глаза, болеть голова и весь набор. Сколько я уже ни пробовал привыкнуть, но ничего не помогает - самая длинная моя попытка продлилась около недели в начале июля, когда я юзал бету Win7. Некоторое время я думал, что что-то не так лично со мной, но нас таких, оказывается, много.

Так как Microsoft весьма настойчива в желании задвинуть сглаживание буквально во все свои современные продукты, то по умолчанию для меня они становятся непригодными. Вот небольшой список, как можно с этим бороться - легитимно или при помощи хаков, в случае, когда создатели софта "забыли" добавить опцию выключения сглаживания:
* WPF до 4.0 beta 2: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=467943.
* VS 2010 beta 1: http://social.msdn.microsoft.com/forums/en-US/wpf/thread/5289ee56-6d06-4f66-84f2-69865b6dc401/.
* Office 2007: http://geekswithblogs.net/glozano/archive/2006/11/14/97082.aspx, http://support.microsoft.com/kb/926705.
* IE 7+: Tools > Internet Options > Advanced > Multimedia > будет галочка, название которой iirc отличается между версиями, но смысл одинаков.
* Windows 7: http://social.answers.microsoft.com/Forums/en-US/w7desktop/thread/f180e803-3317-4433-8fd2-63aadaecc2d2 (все равно не работает до конца, ибо дефолтный шрифт семерки - SegoeUI - очень фигово смотрится без сглаживания, а заменить его на Tahoma из XP не получается ибо возникает трабл с размером шрифта).
* Для веб-сайтов, на которых юзаются сглаженные шрифты, можно использовать Opera и ее UserMode - это обычно сбивает стайлшиты и, как следствие, лаяут, но хоть текст становится пригодным к прочтению.

Напоследок, еще немного ужосов:

ужос сглаженных шрифтов