CUDA
CUDA (Compute Unified Device Architecture) — технология, разработанная компанией NVIDIA для выполнения программ общего назначения на видеокарте. CUDA поддерживают все видеокарты NVIDIA на чипсете G80 и выше (серия GeForce 8xxx).
Для написания программ используется расширение языка C/C++, позволяющее манипулировать с данными, находящимися как в оперативной памяти компьютера, так и в памяти видеокарты.
Теоретически CUDA даёт достаточный контроль над действиями видеочипа, чтобы утилизировать всю его громадную вычислительную мощность, которая, опять же, теоретически, может в сотни раз превосходить пиковую вычислительную мощность CPU. Но на практике максимально эффективно использовать всю эту вычислительную мощность удаётся далеко не всегда по ряду причин:
- * В силу архитектурных особенностей чипсета видеокарты, её ядра, количество которых доходит до нескольких сотен, максимально эффективно работают в так называемом SIMD (Single Instruction, Multiple Data) режиме, когда все они в один такт выполняют одну и ту же операцию с разными ячейками памяти. В противном случае производительность резко снижается, различные ядра будут работать на различные такты, появляется необходимость в особо дорогостоящих механизмах их синхронизации.
- Доступ к памяти максимально эффективен при когерентном режиме чтения, когда i-ое ядро читает j-й блок памяти, i+1-ое читает j+1 и так далее, в противном случае, опять же, будет наблюдаться существенное уменьшение производительности.
- Shared Memory(общая память ядер видеокарты), сильно ограниченна, приходится гонять данные по шине из оперативной памяти, что, разумеется, ставит крест на производительности.
Стоит отметить, что стандартная для видеокарты задача — собственно, просчёт графики, отлично ложится на все эти три принципа и поэтому обычно выполняется максимально эффективно.
Подытожив, можно сказать, что CUDA — это очень мощная технология для реализации высокопроизводительных алгоритмов, но для эффективного использования которой нужно основательное продумывание поведения своего алгоритма, делая поправку на его аппаратную реализацию. При неумелом использовании этой технологии Вы не только не получите выигрыша производительности, но и нагрузите видеокарту, что негативно скажется на выполнении других задач, выполняемых ей, к примеру, на скорости визуализации.
Что такое CUDA?
10 июня 2009 (Обновление: 1 июня 2010)
Комментарии [3]