コンパイラ
コンパイラの自動ベクトル化で使われる命令の種類として正しいものはどれか。
- A割り込みを発生させる命令
- B複数のデータを同時に扱うSIMD命令
- Cキャッシュの内容を、まとめてすべて消去する命令
答えと解説を見る
正解:B. 複数のデータを同時に扱うSIMD命令
自動ベクトル化は、配列の要素ごとに同じ計算をするループを見つけ、複数の要素をまとめて処理するSIMD命令に置き換える最適化です。例えば128ビットのSIMDレジスタなら32ビットの数を4つ同時に足せるので、うまくいけばループの演算の回数が4分の1になります。繰り返しの間に依存がないこと、データの並びが連続していることなどが条件になり、ポインタの重なりの可能性があると見送られることもあります。割り込みやキャッシュの操作の命令とは関係ありません。
- A. 割り込みを起こす命令は使いません。
- B. 正しい。SIMD命令で複数の要素をまとめて処理します。
- C. キャッシュを消す命令とは関係ありません。