Туманные вычисления
- 1 year ago
- 0
- 0
Векторизация (в параллельных вычислениях ) — вид распараллеливания программы, при котором однопоточные приложения, выполняющие одну операцию в каждый момент времени, модифицируются для выполнения нескольких однотипных операций одновременно.
Скалярные операции, обрабатывающие по паре операндов, заменяются на операции над массивами (векторами), обрабатывающие несколько элементов вектора в каждый момент времени.
Векторная обработка данных используется как в бытовых компьютерах, так и в суперкомпьютерах .
Автоматическая векторизация — это важная область исследований в информатике, цель которой — поиск методов, которые бы позволили компилятору автоматически преобразовывать скалярные программы в векторные.
Показан фрагмент программы, который поэлементно перемножает два массива, состоящие из чисел:
for (i = 0; i < 1024; i++)
C[i] = A[i] * B[i];
Данный цикл может быть векторизован так:
for (i = 0; i < 1024; i+=4)
C[i:i+3] = A[i:i+3] * B[i:i+3];
Во втором фрагменте запись
C[i:i+3]
означает вектор из 4 элементов — от
C[i]
до
C[i+3]
включительно, а под
*
понимается операция поэлементного умножения векторов. Векторный процессор в данном примере сможет выполнить 4 скалярные операции при помощи одной векторной инструкции за время, близкое к выполнению скалярной операции. Таким образом, векторных операций потребуется в 4 раза меньше, и программа исполнится быстрее.
Векторные операции могут добавляться в скалярные процессоры, тогда они называются векторными расширениями команд. Примеры: MMX , SSE , SSE2 , AltiVec .
int main()
{
printf("Hi");
return 0;
}
|
Это
заготовка статьи
о
программировании
. Помогите Википедии, дополнив её.
|
|
В статье
не хватает
ссылок на источники
(см.
рекомендации по поиску
).
|