Статьи

О работе видеокарт при проведении многопотоковых вычислений

Видеокарта является сложным программно-аппаратным комплексом, предназанченным для вывода изображения и проведения сложных компьютерных вычислений.

Понимание конструктивных особенностей и взаимосвязи основных узлов видеокарт поможет пользователю получить от них наибольшую отдачу.

Рассмотрим подробнее назначение основных узлов видеокарты и то, как они взаимодействуют между собой.

Как устроена видеокарта?

Видеокарта работает на программном (потоки, блоки и массивы данных) и аппаратном (вычислительные блоки и память) уровнях:

Видеокарты с физической точки зрения представляют собой сложные электронные устройства, собранные на многослойной печатной плате с внутренними проводящими слоями, которая служит основой для установки электронных элементов, обеспечивающих необходимый функционал.

Основными функциями видеокарт являются вывод изображения на монитор и проведение сложных параллельных вычислений.

Для этого в составе видеокарты на физическом уровне имеются следующие основные узлы:

  • графический процессор (GPU, сокращение от англ. GraphicProcessorUnit), предназначен для проведения сложных многопотоковых вычислений для последующего вывода изображения. Внутри GPU есть блоки, ответственные за обработку 2D (прорисовка примитивов, перенос блоков, масштабирование, работа с окнами, преобразование цвета) и 3D-графики (просчет проекции виртуального динамического трехмерного объекта, зрительные эффекты, трассировка лучей и т.д.). Видеопроцессоры отличаются между собой архитектурой, поддерживающимися командами, наличием тех или иных вычислительных блоков, их количеством, быстродействием, размерами полупроводниковых элементов на кристалле GPU и т.д.;

Пример архитектуры видеочипа:

  • видеопамять — предназначена для хранения данных, которые обрабатываются GPU, а также используются видеоконтроллером. В качестве памяти, использующейся для обработки данных видеокартой, могут использоваться различные компоненты, отличающиеся между собой быстродействием и объемом доступного пространства: системная память (ОЗУ), основная графическая память, кэш на кристалле видеопроцессора и регистры GPU;

Иерархическое представление уровней быстродействия памяти, использующейся при работе видеокарт:

  • цифро-аналоговый преобразователь (RAMDAC, от англ. Random Access Memory Digital-to-Analog Converter) — предназначен для преобразования видеосигнала в соответствии со стандартом VGA. На современных видеокартах с выходами типа HDMI, DVI и т.д. не используется;
  • кварцевый генератор — используется для формирования опорной частоты для синхронизации работы видеокарты с центральным процессором на материнской плате;
  • микросхема BIOS, представляет собой постоянное запоминающее устройство, необходимое для инициализации видеокарты во время запуска. Содержит в себе микропрограмму, в которой указаны необходимые для работы вольтаж и частота памяти, видеопроцессора, алгоритм работы системы охлаждения и т.д.;
  • подсистема питания — отвечает за формирование напряжений, необходимых для работы электронных компонентов видеокарты;
  • система охлаждения — предназначена для отвода избыточного тепла, выделяющегося при работе электронных компонентов видеокарты и обеспечения оптимального температурного режима GPU, памяти и подсистемы питания.

Полноценное функционирование видеокарты невозможно без видеодрайвера, который представляет собой интерфейс между операционной системой, видеоадаптером и выполняющимися на нем программами. Быстродействие видеокарты зависит не только от ее аппаратных возможностей (производительности вычислительных блоков GPU, частоты и объема памяти), но и от их практического использования с помощью драйверов.

Драйвер обеспечивает взаимодействие видеокарты и центрального процессора:

Плохо написанные драйвера могут существенно снизить производительность видеокарты. Например, на официальных драйверах видеокарты AMD Radeon R9 290/390 в Windows выдают на алгоритме Ethash порядка 20 mh/s, а в Linux — 30 mh/s (разница в производительности — 50%).

Для повышения производительности компьютерных вычислений в настоящее время используется обеспечение их одновременного параллельного выполнения на множестве ядер. Это связано с тем, что практический порог увеличения частоты работы одного ядра уже достигнут. Гнать частоту работы процессоров до определенного порога не имеет смысла, проще увеличить их количество. Кроме того, увеличить производительность можно с помощью добавления аппаратной поддержки выполнения сложной последовательности команд.

Для проведения сложных многопотоковых вычислений в современных видеокартах в большинстве случаев используются две технологии: стандарт OpenCL (Open Computing Language) и SDK CUDA (Compute Unified Device Architecture).

Выполнение многопотоковых вычислений с помощью технологии CUDA:

OpenCL — универсальная технология, может работать на множестве разных устройств, включая GPU, CPU, FPGA, интегрированные видеокарты, в то время как SDK CUDA используется только на видеокартах компании Nvidia.

Что влияет на производительность видеокарты при компьютерных вычислениях?

К основным характеристикам видеокарты, влияющим на производительность компьютерных вычислений, относятся следующие:

  • частоты видеоядра (его архитектура и поддерживаемые команды) и памяти (в МГц) — чем больше, тем лучше;
  • число ядер, использующихся для многопотоковых вычислений;
  • объем видеопамяти, ее латентность (тайминги);
  • ширина шины памяти (пропускная способность) – задает количество бит информации, передаваемой за один такт;
  • вычислительная мощь видеоядра при проведении операций с плавающей запятой, в GFlops;
  • потребление электроэнергии — параметр тесно связанный с технологическим процессом, по которому выпущена карта. GPU содержит миллионы полупроводниковых транзисторов, каждый из которых потребляет небольшой ток, поэтому, чем меньше использующиеся электронные элементы, тем лучше.

https://csdl-images.computer.org/trans/td/2017/09/figures/yabut1-2677451.gif

За выполнение вычислений непосредственно отвечают вычислительные ядра и память, именно они ограничивают максимальную производительность видеокарты, если не учитывать энергоэффективность и качество драйверов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Chinese (Traditional) ZH-TW English EN French FR German DE Russian RU Spanish ES