Инновации. Наука. Образование
Причина, по которой производители GPU не столкнулись с этой проблемой очень
простая: CPU (Central Processing Unit, центральный процессор) разрабатываются для
получения максимальной производительности на потоке инструкций, которые
обрабатывают разные данные (как целые числа, так и числа с плавающей запятой),
производят случайный доступ к памяти и т.д. До сих пор разработчики пытаются
обеспечить больший параллелизм инструкций - то есть выполнять как можно большее
число инструкций параллельно.
Работа GPU относительно простая. Она заключается в принятии группы полигонов
с одной стороны и генерации группы пикселей с другой. Полигоны и пиксели независимы
друг от друга, поэтому их можно обрабатывать параллельно. Таким образом, в GPU
можно выделить крупную часть кристалла на вычислительные блоки, которые, в отличие
от CPU, будут реально использоваться.
Рисунок 1. Архитектура GPU
Источник: статья «Computing with GPU — Why, When, How and Some Test’s Results» [2]
GPU отличается от CPU не только этим. Разумно организуя память, можно
получить производительность, близкую к теоретической пропускной способности. Это
означает, что GPU, в отличие от CPU, не требует большого кэша, поскольку его роль
заключается в ускорении операций текстурирования.
Есть два факта, их можно назвать законами вычислительной техники, которые
составляют
теоретическую
основу
востребованности
высокопараллельных
955
Научный журнал «Инновации. Наука. Образование»
Индексация в РИНЦ
н
Инновации. Наука. Образование
вычислительных архитектур. Потребляемая мощность процессора пропорциональна,
примерно, квадрату тактовой частоты, точнее степени 2,5. То есть, процессор с тактовой
частотой 3 ГГц потребляет больше, чем 9 процессоров частотой 1 ГГц [5, c.114].
Многоядерный процессор, с той же потребляемой энергией, будет в три раза
производительнее при исполнении параллельного кода.
Второй факт: чем большее количество потоков уже распараллелено, тем больше
вероятность, что задача может быть распараллелена на ещё большее количество потоков.
Такая ситуация типична для вычислительных задач с большими объемами данных,
которые по своей природе, в принципе, допускают параллельный алгоритм решения. А
если такого нет, то можно и не надеяться на увеличение производительности в обозримом
будущем, ибо тактовая частота современных CPU растет очень медленно. В таких
случаях, выгодно реализовать многопоточный алгоритм, пусть он будет и на порядок
более вычислительно затратным, все равно, площади кристаллов девать некуда и, на
мультипроцессорной системе такой малоэффективный алгоритм будет работать быстрее.
Но, уже имея задачу с тысячами потоков, можно заранее адаптировать вычислительную
архитектуру, с учетом мультипоточности, и сконцентрироваться на общей
производительности программы, а не на каждой отдельной нити, сильно сэкономив на
многих традиционных архитектурных деталях.
Важно также, что конструировать низкочастотный процессор гораздо легче [3, с.
27]. Проще реализовать разнообразную сложную логику, так как большинство инструкций
исполняются за один такт, что упрощает планировщик выполнения инструкций и требует
меньшего количества разнообразных буферов и очередей инструкций. Это также
упрощает и делает более удобной саму ISA. (ISA — Instruction Set Architecture,
архитектура системы команд). При этом пропускная способность памяти растет гораздо
быстрее, чем уменьшается её латентность. Таким образом, обеспечить данными
множество низкочастотных CPU гораздо проще и дешевле, чем один высокочастотный,
так как он будет часто простаивать в ожидании данных из медленной памяти. Эти факты,
взятые вместе, делают многопоточную технологию CUDA востребованной и
перспективной.
Перспективность данной технологии, также, доказывает тот факт, что видеокарты
NVIDIA используются даже в современных суперкомпьютерах, например, таких как Titan.
Для создания мощного вычислительного сервера требуется разместить в нем множество
процессоров, которые будут заниматься обработкой данных. Также, часто бывает, что
956
Научный журнал «Инновации. Наука. Образование»
Индексация в РИНЦ
н
Достарыңызбен бөлісу: |