Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Одна инструкция, несколько потоков ( SIMT ) - это модель выполнения, используемая в параллельных вычислениях, где одна инструкция, несколько данных (SIMD) сочетается с многопоточностью . Он отличается от SPMD тем, что все инструкции во всех «потоках» выполняются синхронно. Модель выполнения SIMT была реализована на нескольких графических процессорах и актуальна для вычислений общего назначения на графических процессорах (GPGPU), например, в некоторых суперкомпьютерах процессоры сочетаются с графическими процессорами.

Процессоры, скажем, число p из них, похоже, выполняют гораздо больше, чем p задач. Это достигается за счет того, что каждый процессор имеет несколько «потоков» (или «рабочих элементов», или «последовательности операций SIMD Lane»), которые выполняются с синхронизацией шага и аналогичны SIMD-дорожкам . [1]

История [ править ]

SIMT была представлена Nvidia в микроархитектуре Tesla GPU с чипом G80. [2] [3] ATI Technologies , в настоящее время AMD , выпустила конкурирующий продукт чуть позже 14 мая 2007 года TeraScale 1 -На "R600" GPU чипа.

Описание [ править ]

Поскольку время доступа всех распространенных типов оперативной памяти (например, DDR SDRAM , GDDR SDRAM , XDR DRAM и т. Д.) Все еще относительно велико, инженеры пришли к идее скрыть задержку, которая неизбежно возникает при каждом доступе к памяти. Строго говоря, скрытие задержки - это функция планирования с нулевыми накладными расходами, реализуемая современными графическими процессорами. Это может рассматриваться, а может и не считаться собственностью самой «SIMT».

SIMT предназначен для ограничения накладных расходов на выборку инструкций [4], т. Е. Задержки, связанной с доступом к памяти, и используется в современных графических процессорах (таких как Nvidia и AMD ) в сочетании с «скрытием задержки» для обеспечения высокопроизводительного выполнения, несмотря на значительная задержка в операциях доступа к памяти. Здесь процессор переподписан вычислительными задачами и может быстро переключаться между задачами, когда в противном случае ему пришлось бы ждать памяти. Эта стратегия сравнима с многопоточностью в процессорах (не путать с многоядерностью ). [5]Как и в случае с SIMD, еще одним важным преимуществом является совместное использование управляющей логики многими линиями передачи данных, что приводит к увеличению вычислительной плотности. Один блок управляющей логики может управлять N полосами данных вместо того, чтобы повторять управляющую логику N раз.

Обратной стороной выполнения SIMT является тот факт, что поток управления, зависящий от потока, выполняется с использованием «маскирования», что приводит к плохому использованию, когда потоки процессора следуют по разным путям потока управления. Например, для обработки блока IF - ELSE, в котором различные потоки процессора выполняют разные пути, все потоки должны фактически обрабатывать оба пути (поскольку все потоки процессора всегда выполняются с блокировкой), но для отключения и включения используется маскирование. различные потоки по мере необходимости. Маскирование избегается, когда поток управления согласован для потоков процессора, т. Е. Все они следуют одному и тому же пути выполнения. Стратегия маскирования - это то, что отличает SIMT от обычного SIMD, и имеет преимущество недорогой синхронизации между потоками процессора. [6]

См. Также [ править ]

Ссылки [ править ]

  1. ^ Майкл МакКул; Джеймс Рейндерс; Арка Робисон (2013). Структурированное параллельное программирование: шаблоны для эффективных вычислений . Эльзевир. п. 52.
  2. ^ "Технический документ по вычислительной архитектуре Nvidia Fermi" (PDF) . www.nvidia.com/ . Корпорация NVIDIA. 2009 . Проверено 17 июля 2014 .
  3. ^ Линдхольм, Эрик; Николлс, Джон; Оберман, Стюарт; Монтрим, Джон (2008). «NVIDIA Tesla: унифицированная графика и вычислительная архитектура». IEEE Micro . 28 (2): 6 (требуется подписка) . DOI : 10.1109 / MM.2008.31 .
  4. ^ Рул, Шон; Вандиерандонк, Ганс; D'Haene, Joris; Де Босшере, Коэн (2010). Экспериментальное исследование производительности переносимости ядер OpenCL . Symp. Ускорители приложений в высокопроизводительных вычислениях (SAAHPC). hdl : 1854 / LU-1016024 .
  5. ^ «Дополнительные темы в CUDA» (PDF) . cc.gatech.edu . 2011 . Проверено 28 августа 2014 .
  6. ^ Майкл МакКул; Джеймс Рейндерс; Арка Робисон (2013). Структурированное параллельное программирование: шаблоны для эффективных вычислений . Эльзевир. стр.209 и сл.
  7. ^ Джон Л. Хеннесси; Дэвид А. Паттерсон (1990). Компьютерная архитектура: количественный подход (6-е изд.). Морган Кауфманн. стр. 314 и сл  .