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

コード内のデータ参照は、次の 3 種類のいずれかに分類できます。

スカラ

ループのすべての繰り返しを通して変化しない単一の値です。

インデクス

ループの 1 パスごとに一定量インクリメントされる整数量です。

ベクタ

連続する要素間に一定のストライドを持つメモリ位置の範囲です。

Example 1 に、ループ内の変数の分類を示します。

i、j

インデクス変数

a、b

ベクタ

nx

スカラ

Example 1. ベクトル化可能なループの分類

float *a, *b;
int i, j, n, x;
...
for (i = 0; i < n; i++)
{
    *(a+j) = x + b[i];
    j += 2;
};

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

Show/hide関連項目

Copyright © 2010 ARM. All rights reserved.ARM DUI 0472BJ
Non-ConfidentialID011811