3.9 NEON ベクトル化によるパフォーマンスに影響を与える要因

自動ベクトル化処理および生成されるコードのパフォーマンスは、以下の多くの条件の影響を受けます。

ループの構成
最高のパフォーマンスを得るには、ネストしたループの最深部のループは 1 つのストライドで配列にアクセスする必要があります。
データの構造
データ型は NEON レジスタで保持できるデータ要素の数に影響を与え、そのために並列に実行できるオペレーションの数に影響が及びます。
ループの繰り返し回数
一般的に、繰り返し回数が多い場合は、ループのオーバーヘッドは繰り返しの中で小さくなるので、繰り返し回数が多い方が有利です。2 つか 3 つの要素など、非常に繰り返し回数が少ない場合は、ベクトル化しない処理の方が早くなることがあります。
配列のデータ型
一例として、NEON では倍精度浮動小数点の配列が使用されている場合はパフォーマンスは向上しません。
メモリ階層の使用
現在のプロセッサの大部分では、メモリの帯域幅とプロセッサの容量とのバランスが相対的に取れていません。たとえば、メインメモリから取得した大規模なデータセット上で比較的少ない算術演算を実行することは、システムのメモリ帯域幅によって制限されます。
関連する概念
3.17 条件付き終了の非ベクトル化
3.16 ポインタおよび間接アドレス指定を含むループの非ベクトル化
3.15 ポインタを含むループのベクトル化
3.14 ベクタのスカラへの縮退
3.13 キャリーアラウンドスカラ変数とベクトル化
3.12 コードをベクトル化するときのデータの依存関係による競合
関連する参考文書
3.11 ベクトル化のために推奨されるループ構造
8.192 --vectorize、--no_vectorize
3.10 NEON ベクトル化によるパフォーマンスの目標
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.