Loading AI tools
ウィキペディアから
ベクトル化(ベクトルか、英: vectorize)
ベクトル化とは、コンピュータのプログラムにおいて、繰り返し処理で配列(ベクトル)の要素をひとつひとつ計算しているような部分を、手動あるいはコンパイラで(自動ベクトル化)、ベクトル計算機で高速に演算できるよう変形すること。近年のSIMD演算のための並列化やスーパースカラ機でのソフトウェアパイプラインに応用できる内容もある。
High Performance Fortranはこれらの高速化を意識したプログラミング言語である。
以下ではFortranのコードを例にとって説明する。基本的に、ループ演算を1つのベクトル演算命令にするので、doループがベクトル化対象となる。なお、ベクトル命令に出来るパターンは各機種毎、コンパイラ毎に多少異なる。
たとえば以下のようなdoループは1つのベクトル命令に出来る。
do i = 1, 100
a(i) = a(i) * b(i)
end do
以下のような、if文を含むdoループは、それをサポートするハードウェアがあればベクトル化が可能である。
do i = 1, 100
if (a(i) > 0.0) then
a(i) = a(i) * 2.0
end if
end do
この場合、たとえばSXシリーズでは、
という方法でベクトル化を行なう。
多重ループは、全部まとめて1つのベクトル命令を生成することもある。また、効率化をはかるために、内側のループと外側のループを入れ替える場合もある。これは、ベクトル化を行なうためには、データがメモリ上で連続している必要があるからである。 たとえば、二次元配列を演算する場合、内側のループが連続したメモリをアクセスするようになっていない場合には、演算する順番を入れ替えて(すなわちdoループの内側と外側を入れ替えて)ベクトル化が容易になるようにする。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.