ベクトル化

ベクトル化とは配列などに対して、同じ処理を行う場合にその処理の部分を逐次的に行う逐次演算ではなく、一度に行うベクトル演算を用いて計算を行うようにすることである。1980年代から1990年代にかけてはベクトル演算機能を持たせることはスーパコンピュータでは広く行われていた。
ベクトル化の利点を生かせる対象としてはLinear Algebra(線形代数)問題が挙げられる。Linear Algebra algorithmsはベクトル積演算やベクトル和演算の組み合わせで計算することができるのでほとんどのコンピューティングプラットフォームにおいてピーク性能に近い性能を発揮することができる。ただし、主な演算がLevel 1,Level 2 BLAS演算の場合にはデータ転送がネックになってしまい望ましい性能が得られないこともある。
現在、ベクトル化の一種である Single Instruction Multiple Data (SIMD)演算と呼ばれる一回の命令で複数データに対する処理を同時に行う演算機能を備えた様々なプロセッサが存在する。例えば、Pentium系ではSSE、PowerPC系ではAltiVecと呼ばれるSIMDユニットを搭載している。SIMDを用いることができれば一クロックで通常の2倍、4倍というように一度に処理できるデータ倍分だけの性能向上が見込める。
しかし、SIMD命令を有効に用いるためにはデータを並び替えるなどの前処理が必要になってくる。また、SIMD化することでプログラムの可読性は著しく低下する。ループアンローリングなどの他の最適化手法と組み合わせた場合それは顕著である。