Векторная обработка данных
Ве́кторная обрабо́тка да́нных, способ обработки множества независимых однотипных данных, расположенных в памяти компьютера на одном и том же расстоянии друг от друга, т. е. организованных в виде векторов (массивов).
Используя прилагательное «векторный», делают акцент на обработке векторов в противовес классической скалярной обработке, при которой происходит работа лишь с единичными данными, т. е. со скалярами. При этом, говоря о векторной обработке, могут подразумевать специальные конструкции в языках программирования или инструкции в системе команд компьютера, у которых в качестве по крайней мере одного из аргументов используется вектор. В этом случае не так важно, как реально происходит выполнение языковых конструкций на компьютере – в параллельном или последовательном режиме: их ориентированность на работу с векторами позволяет с полным правом говорить о векторной обработке. С другой стороны, говоря о векторной обработке данных, могут иметь в виду и особенности архитектуры вычислительных систем, поддерживающих обработку векторов данных на аппаратном уровне.
Примером использования принципа векторной обработки в языках программирования могут служить векторные конструкции языка Cray MPP Fortran, в котором можно написать оператор присваивания, предполагающий возможность независимого выполнения операций над всеми указанными элементами массивов A, B и C.
A(2:100) = B(2:100)/C(2:100)
Векторные конструкции в языках программирования полезны по крайней мере по двум причинам. Они делают запись программ короче и выразительнее, а также привносят дополнительное знание об информационной структуре программы, отражая возможность независимой (параллельной, одновременной) обработки элементов векторов.
Поддержка векторной обработки на уровне аппаратуры, как правило, реализуется либо через параллельную обработку некоторого числа элементов вектора в SIMD-режиме (см. Классификация Флинна), либо через обработку векторов с помощью конвейерных функциональных устройств. Вариант параллельной обработки реализован, например, в инструкциях AVX-512, являющихся расширением системы команд x86, где операции одновременно выполняются над восемью 64-разрядными словами, или в процессорах NEC SX-Aurora TSUBASA, в которых операции выполняются над 256 элементами. Конвейерная обработка векторов активно использовалась, например, в суперкомпьютерах компании Cray, что дало и название этому классу машин – «векторно-конвейерные вычислительные системы».