3.14 ベクタのスカラへの縮退

ループ内のスカラの使用方法の特別なカテゴリは縮退演算です。このカテゴリには、スカラ結果まで値のベクタを減らしていくことが含まれます。

最も一般的な縮退は、ベクタのすべての要素を合計することです。その他の縮退には、以下が含まれます。
  • 2 つのベクタのドット積。
  • ベクタ内の最大値。
  • ベクタ内の最小値。
  • すべてのベクタ要素の積。
  • ベクタの最大値の要素と最小値の要素のインデクス。
以下の例に、ドット積による縮退を示します。ここで、x は縮退スカラです。
float a[99], b[99], x;
int i, n;
...
for (i = 0; i < n; i++) x += a[i] * b[i];
縮退演算は多数使用されるので、ベクトル化が効果的です。一般的に、縮退演算は部分的に縮退したベクタを作成してベクトル化を行い、最終的にスカラに縮退します。
関連する概念
3.17 条件付き終了の非ベクトル化
3.16 ポインタおよび間接アドレス指定を含むループの非ベクトル化
3.15 ポインタを含むループのベクトル化
3.13 キャリーアラウンドスカラ変数とベクトル化
3.12 コードをベクトル化するときのデータの依存関係による競合
3.9 NEON ベクトル化によるパフォーマンスに影響を与える要因
関連する参考文書
3.11 ベクトル化のために推奨されるループ構造
3.10 NEON ベクトル化によるパフォーマンスの目標
8.192 --vectorize、--no_vectorize
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.