ベクトル化のプログラミングにおける主要ガイドライン

ベクトル化を行うコンパイラの目的は、SIMD (single-instruction multiple data) 処理を自動的に活用することですが、 コンパイラに追加情報 (ディレクティブなど) を提供することで、コンパイラのベクトル化を助けます。次に示すガイドラインと制約条件をよく確認し、先の項に示すコードの具体例を見て、それらに照らしてコードの良否を判断し、最適なベクトル化を阻害する曖昧な部分が見つかったら修正してください。

ループに変更が必要な場合がよくあります。ループ本体のガイドラインを次に示します。

好ましいもの:

避けるべきもの:

注意が必要な制約条件があります。ベクトル化は、2 つの主要な要因により制約されます。

コンパイラによるベクトル化の自動処理を阻害する多くの要因は、ループ構造の書きかたにあります。ループ本体にはキーワード、演算子、データ参照、およびメモリ演算が含まれており、それらが互いに作用し合うため、ループの動作がよく見えなくなるのです。

しかし、これらの制約を理解し、診断メッセージの読みかたを知れば、そうした既知の制約条件を克服して効率よくベクトル化できるようプログラムを修正できます。以降の各セクションでは、ループ構造についてベクトライザの機能と制約条件を簡単に述べます。