Одна инструкция, несколько потоков - Single instruction, multiple threads
Одна инструкция, несколько потоков (SIMT) - модель исполнения, используемая в параллельные вычисления куда одна инструкция, несколько данных (SIMD) сочетается с многопоточность. Это отличается от СПМД в том, что все инструкции во всех «потоках» выполняются синхронно. Модель исполнения SIMT была реализована на нескольких GPU и актуально для универсальные вычисления на графических процессорах (GPGPU), например немного суперкомпьютеры комбинировать процессоры с графическими процессорами.
Процессоры говорят число п из них казнили гораздо больше, чем п задачи. Это достигается за счет того, что каждый процессор имеет несколько «потоков» (или «рабочих элементов», или «Последовательности операций 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 является тот факт, что поток управления, зависящий от потока, выполняется с использованием «маскирования», что приводит к плохому использованию, когда потоки процессора следуют по разным путям потока управления. Например, для обработки ЕСЛИ-ЕЩЕ блок, в котором различные потоки процессора выполняют разные пути, все потоки должны фактически обрабатывать оба пути (поскольку все потоки процессора всегда выполняются в блокировке), но используется маскирование для отключения и включения различных потоков по мере необходимости. Маскирования избегают, когда поток управления согласован для потоков процессора, то есть все они следуют одному и тому же пути выполнения. Стратегия маскирования - это то, что отличает SIMT от обычного SIMD, и имеет преимущество недорогой синхронизации между потоками процессора.[6]
Nvidia CUDA | OpenCL | Хеннесси и Паттерсон[7] |
---|---|---|
Нить | Рабочий элемент | Последовательность операций SIMD Lane |
Деформация | Волновой фронт | Резьба инструкций SIMD |
Блокировать | Рабочая группа | Тело векторизованного цикла |
Сетка | NDRange | Векторизованный цикл |
Смотрите также
Рекомендации
- ^ Майкл МакКул; Джеймс Рейндерс; Арка Робисон (2013). Структурированное параллельное программирование: шаблоны для эффективных вычислений. Эльзевир. п. 52.
- ^ «Технический документ по вычислительной архитектуре Nvidia Fermi» (PDF). http://www.nvidia.com/. Корпорация NVIDIA. 2009 г.. Получено 2014-07-17. Внешняя ссылка в
| сайт =
(помощь) - ^ Линдхольм, Эрик; Николлс, Джон; Оберман, Стюарт; Монтрим, Джон (2008). «NVIDIA Tesla: унифицированная графика и вычислительная архитектура». IEEE Micro. 28 (2): 6 (Требуется подписка.). Дои:10.1109 / MM.2008.31.
- ^ Рул, Шон; Вандиерандонк, Ганс; D’Haene, Joris; Де Босшере, Коэн (2010). Экспериментальное исследование переносимости производительности ядер OpenCL. Symp. Ускорители приложений в высокопроизводительных вычислениях (SAAHPC).
- ^ «Продвинутые темы в CUDA» (PDF). cc.gatech.edu. 2011. Получено 2014-08-28.
- ^ Майкл МакКул; Джеймс Рейндерс; Арка Робисон (2013). Структурированное параллельное программирование: шаблоны для эффективных вычислений. Эльзевир. стр.209 и сл.
- ^ Джон Л. Хеннесси; Дэвид А. Паттерсон (1990). Компьютерная архитектура: количественный подход (6 изд.). Морган Кауфманн. стр.314 ff.
Этот Информатика статья - это заглушка. Вы можете помочь Википедии расширяя это. |