Гетерогенные вычисления — Архитектура CUDA

1. Что такое CUDA?

  CUDA (Compute Unified Device Architecture), вычислительная платформа, запущенная производителем графических карт NVIDIA, представляет собой архитектуру параллельных вычислений общего назначения, которая позволяет графическим процессорам решать сложные вычислительные задачи. Проще говоря, мы можем использовать графический процессор для распараллеливания программ, интенсивно выполняющихся на центральном процессоре, таких как нейронные сети и алгоритмы обработки изображений. Благодаря графическим процессорам и высокому уровню параллелизма мы можем значительно увеличить скорость работы этих алгоритмов.

2. Архитектура процессора и CUDA

  В структуре процессора есть два показателя, которые следует часто учитывать: задержка и пропускная способность. Задержка относится к интервалу времени между выдачей инструкции и возвратом конечного результата; пропускная способность относится к количеству инструкций, обрабатываемых в единицу времени. Поскольку основной задачей ЦП является обработка вычислений и управление, концепция проектирования представляет собой ядро, ориентированное на задержку; поскольку основной задачей графического процессора является параллельная обработка, концепция проектирования представляет собой ядро, ориентированное на пропускную способность.

(1) ЦП

  CPU (Central Processing Unit) центральный процессор представляет собой очень крупную интегральную схему.Основная логическая структура включает в себя блок управления Control, операционный блок ALU и кэш-память (Cache) и данные (Data), управление и состояние, которые реализовать связь между ними Шина (Bus). Проще говоря, это вычислительный блок, блок управления и блок хранения.
Схема архитектуры выглядит следующим образом:
вставьте сюда описание изображения

  ЦП следует архитектуре фон Неймана, и его ядром является хранение программ/данных и их последовательное выполнение. Поэтому архитектуре ЦП требуется много места для размещения блока хранения (Кэш) и блока управления (Управление), по сравнению с блоком вычислений (АЛУ), который занимает лишь небольшую часть, поэтому ЦП подвержен влиянию крупномасштабных операций. параллельные вычисления Ограничения относительно лучше справляются с логическим управлением. Центральный процессор не может обеспечить возможность параллельного вычисления большого количества данных, а графический процессор может.

(2) графический процессор

  GPU (Graphics Processing Unit), то есть графический процессор, представляет собой крупномасштабную архитектуру параллельных вычислений, состоящую из большого количества вычислительных блоков. Ранее он был отделен от ЦП для обработки данных параллельных вычислений изображения. Он предназначен для обработки несколько параллельных вычислительных задач одновременно. Графический процессор также включает в себя базовые вычислительные блоки, блоки управления и блоки хранения, но архитектура графического процессора сильно отличается от архитектуры центрального процессора, и его архитектурная схема показана ниже.
вставьте сюда описание изображения

  По сравнению с ЦП, менее 20% пространства чипа ЦП занимает АЛУ, а более 80% пространства чипа ГП — АЛУ. То есть GPU имеет больше ALU для параллельной обработки данных. Вот почему GPU может иметь мощные возможности параллельных вычислений.
С точки зрения анализа аппаратной архитектуры ЦП и ГП кажутся очень похожими.Оба имеют память, кэш-память, АЛУ и ЦП, и оба имеют много ядер.Очень сложная логика управления, прогнозирование ветвлений, неупорядоченное выполнение, многозадачность. -этапные конвейерные задачи и т.д. Условно говоря, ядро ​​графического процессора относительно легкое и используется для оптимизации параллельных задач данных с простой логикой управления, ориентируясь на пропускную способность параллельных программ.
  Проще говоря, ядро ​​ЦП хорошо справляется с выполнением нескольких сложных задач, фокусируясь на логических и последовательных программах; ядро ​​графического процессора хорошо справляется с задачами с простой логикой управления, фокусируясь на вычислениях и параллелизме.

3. Гетерогенные вычисления

  Так называемые гетерогенные вычисления относятся к совместным вычислениям CPU+GPU или CPU+другие устройства (например, FPGA и т. д.). Как правило, наши программы рассчитаны на CPU. Однако, когда необходимо вычислить большой объем данных, центральный процессор оказывается бессильным. Итак, можем ли мы найти другие способы решения скорости расчета? Это гетерогенные вычисления. Например, вычислительная мощность вычислительных устройств, таких как CPU (центральный процессор), GPU (графический процессор) и даже APU (ускоренные процессоры, слияние CPU и GPU), может использоваться для увеличения скорости системы. Гетерогенные системы становятся все более распространенными, и вычислениям для поддержки таких сред уделяется все больше внимания.
  В настоящее время наиболее широко используемым гетерогенным вычислением является использование графического процессора для ускорения. Все основные графические процессоры используют унифицированную архитектуру.Благодаря мощной линейке программируемых потоковых процессоров графические процессоры значительно отстают от центральных процессоров с точки зрения операций с плавающей запятой одинарной точности. Как показано на рисунке, это схематическая диаграмма гетерогенных вычислений ЦП + ГП, в которой ГП в основном отвечает за параллельные вычисления.
вставьте сюда описание изображения

4. Связь между OpenCL и CUDA

  Архитектура CUDA от NVIDIA не конфликтует с OpenCL от KHRONOS.Отношения между ними - это отношения между API и архитектурой выполнения.Приведу простой пример: знакомая нам архитектура X86 - это архитектура ЦП и различные языки программирования, такие как : язык ассемблера, язык C и другие низкоуровневые или высокоуровневые языки являются лишь средой программирования, основанной на вычислительной архитектуре X86. Что ж, связь между архитектурой CUDA и OpenCL такая же, как связь между X86 и языками программирования.
  Архитектура CUDA является одной из операционных платформ OpenCL, поэтому между ними нет никакой зависимости, кто кого заменяет. OpenCL просто предоставляет программируемый API для архитектуры CUDA.
вставьте сюда описание изображения
См. исходный текст
[1] http://t.zoukankan.com/liuyufei-p-13259264.html

Supongo que te gusta

Origin blog.csdn.net/qq_44924694/article/details/126202388
Recomendado
Clasificación