Векторный потенциал
- 1 year ago
- 0
- 0
Векторный процессор — это процессор , в котором операндами некоторых команд могут выступать упорядоченные массивы данных — векторы . Отличается от скалярных процессоров , которые могут работать только с одним операндом в единицу времени. Абсолютное большинство процессоров является скалярным или близким к нему. Векторные процессоры были распространены в сфере научных вычислений, где они являлись основой большинства суперкомпьютеров начиная с 1980-х до 1990-х. Но резкое увеличение производительности и активная разработка новых процессоров привели к вытеснению векторных процессоров из сферы повседневных процессоров .
В большинстве современных микропроцессоров имеются векторные расширения (см. SSE ). Кроме того, современные видеокарты и физические ускорители можно рассматривать как векторные сопроцессоры .
Для иллюстрации разницы в работе векторного и скалярного процессора рассмотрим простой пример попарного сложения двух наборов по 10 чисел. При «обычном» программировании используется цикл , который берёт пары чисел последовательно, и складывает их:
повторить цикл 10 раз прочитать следующую инструкцию и декодировать получить первое слагаемое получить второе слагаемое сложить сохранить результат конец цикла
Для векторного процессора алгоритм будет значительно отличаться:
прочитать следующую инструкцию и декодировать получить 10 первых слагаемых получить 10 вторых слагаемых сложить сохранить результат
Реализация Cray расширила возможности вычислений, позволяя выполнять несколько различных операций сразу. Для примера рассмотрим код, складывающий 2 набора чисел и умножающий на третий, в Cray эти операции осуществились бы так:
прочитать следующую инструкцию и декодировать получить 10 чисел получить 10 чисел получить 10 чисел сложить и умножить их сохранить результат
Таким образом, математические операции выполняются гораздо быстрее, основным ограничивающим фактором становится время, необходимое для извлечения данных из памяти.
Различные машины были спроектированы с применением и традиционных и векторных процессоров, например, Fujitsu AP1000 и AP3000. Программирование для таких гетерогенных машин может оказаться затруднительным, так как разработка программ, которые используют наилучшим образом характеристики разных процессоров, повышает нагрузку на программиста. Это увеличивает сложность кода и снижает его переносимость , так как участки кода, требуемые для каждого из процессоров, будут чередоваться на протяжении всей программы . Балансировка рабочей нагрузки приложений на процессорах может быть проблематичной, особенно если учесть, что они обычно имеют различные характеристики производительности. Существуют различные концептуальные модели для решения этой проблемы, например, использование и программных стандартных блоков ( библиотек и/или функций высшего порядка ). Каждый блок может иметь различные собственные реализации для каждого типа процессоров. Программист просто использует эту абстракцию, а выбирает лучшую реализацию, основываясь на контексте .
{{
citation
}}
: Википедия:Обслуживание CS1 (множественные имена: authors list) (
ссылка
)
{{
citation
}}
: Википедия:Обслуживание CS1 (множественные имена: authors list) (
ссылка
)
. Дата обращения: 16 декабря 2012. Архивировано 8 июня 2013 года.