3.7 ベクトル化可能なループ内のデータ参照

ベクトル化するには、コンパイラがベクタアクセスパターンで変数を識別する必要があります。また、ループの繰り返しの間でデータの依存関係が生じないようにする必要もあります。

コード内のデータ参照は、次の 3 種類のいずれかに分類できます。
スカラ
ループのすべての繰り返しを通して変化しない単一の値です。
索引
ループの 1 パスごとに一定量インクリメントされる整数量です。
ベクタ
連続する要素間に一定のストライドを持つメモリ位置の範囲です。
以下の例はループ内の変数の分類を示しています。
ij
インデクス変数
ab
ベクタ
nx
スカラ
float *a, *b;
int i, j, n, x;
...
for (i = 0; i < n; i++)
{
    *(a+j) = x + b[i];
    j += 2;
};
関連する概念
3.8 ストライドパターンとデータアクセス
関連する参考文書
8.192 --vectorize、--no_vectorize
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.