SX-Aurora TSUBASAではじめるベクトルプログラミング(PDF)

【比較】ベクトル型とスカラー型の演算処理の違い

この記事は約6分で読めます。

こんにちは、vectory(名前検討中) (@vectorywork)です。

 

ベクトルマシンとスカラマシンの違いって分かりますか?

私なりにかなり噛み砕いてみましたので参考にしてみてください。

 

ベクトルって何!?

くま
くま

ベクトルって知ってる?

ねこ
ねこ

うん、この前学校で習ったよ!

矢印(→)のことでしょ?

くま
くま

そうだね。それもベクトルだね。

「ベクトル=大きさと向きを持った量」って数学や物理で習ったかな?

ねこ
ねこ

うん、グラフで使った!

点Aから点Bに向かう→をベクトルABっていうんだよね!

くま
くま

偉い人の

「君たちのチームのベクトルは揃っているのかね?」

とかいうやつも矢印を意識した言葉の使い方だよね。

 

実は数学で習うベクトルは、ベクトルの中でも「幾何ベクトル」だったり、「空間ベクトル」っていうんだ。

ねこ
ねこ

コンピュータ処理でのベクトルって意味が違うの?

くま
くま

違くはないんだけど、もっと広い意味になるかな。

 

コンピュータ処理ではスカラデータベクトルデータというような言い方も良くするね。

 

スカラデータは、一つの数値のデータのことを言うんだ。

例えば「a=1」とか「b=2.56」とかだね。

 

ベクトルデータは、複数の数値の塊データのことを言うんだ。

例えば「c=(2, 6, 15, 100)」とか「d=(0.22, 23.4, 5.0)」とかだね。

ねこ
ねこ

数学で習う矢印ベクトルも向き大きさ2つの値を表してるからベクトルっていうんだね。

くま
くま

そのとおり。

ちなみに、ベクトル演算はベクトルデータに対する処理で、スカラ演算はスカラデータに対する処理って感じなんだけど…(続く

 

 

スカラー演算とベクトル演算の違い

スカラー演算とベクトル演算の違いをかなり簡単に説明したいと思います。

 

スカラー演算:SISD (Single Instruction, Single Data)

スカラー演算とは、一つの命令で、一つのデータ処理を行う演算を言います。

英語にするとSISD (Single Instruction, Single Data)です。

 

例えば、「積み木でお家作って」と一つ命令すると、指示された人が家を作るのが、スカラ(SISD)処理です。

 

ベクトル演算:SIMD (Single Instruction, Multiple Data)

ベクトル演算とは、一つの命令で、複数のデータ処理を行う演算を言います。

英語にするとSIMD (Single Instruction, Multiple Data)です。

 

例えば、「積み木でお家作って」と一つ命令すると、複数の指示された人が「同様の」が家を作るのが、ベクトル(SIMD)処理です。

 

ちなみにスカラ処理で同様の結果を出そうとすると、命令が3つ必要になるのでその分お家が出来上がるのが遅くなる、または計算パワーが必要になるということになります。

 

※上の図で運搬の形態が自転車からトラックに変わっているのは、材料を運ぶ能力(メモリバンド幅)が、ベクトル演算では重要であることを表しています。

 

(参考)フリンの分類

Single InstructionMultiple Instruction
Single DataSISDMISD
Multiple DataSIMDMIMD

ちなみにInstructionとDataに対して、SingleとMultipleがそれぞれあり、4種類のコンピュータ・アーキテクチャの分類されます。

この分類法を「フリンの分類」というらしいです。

これは興味がある人だけ、調べてみる程度で良いかなと思います。

 

スカラマシンとは

一般的なパソコンでも使われているパソコンなどは、スカラマシンに該当します。

一つの命令に一つずつ処理をしていくCPUが使われていますね。

 

最近はマルチコアなんていうCPUも登場していますが、あれも命令する人が増えただけでスカラ処理を行うCPUになります。

 

ベクトルマシンとは

参照:http://www.jamstec.go.jp/es/jp/

ベクトルマシンとは、地球シミュレータに代表される特定のスーパーコンピュータのみに使われる大規模なシステムで使われます。

 

今、ベクトル型スーパーコンピュータを生産している会社は、世界中で日本のNECのみとなります。

 

ベクトル⇒スカラ⇒ベクトル?

スーパーコンピュータにおけるトレンドについて簡単に見ていきます。

 

昔はスーパーコンピュータといえば、ベクトル型を指していました。

スーパーコンピュータ=ベクトル型という等式が完成していました。

 

ところが、スーパーコンピュータはあまりに高価であったために、自分のPC(スカラマシン)をつなぎ合わせて何とか安くスーパーコンピュータ並のシステムを作ろうという技術が生まれ、発展してきました。

 

今となって、普通(スカラ)のサーバを並べてつなぎ合わせて作るスーパーコンピュータが主流となっています。

なぜそうなっているかと言うと単純に安いからです。

 

ただ、最近またベクトルの技術が復権してきています。

最近の汎用CPUとしてはIntelのCPUが主流なのですが、性能がなかなか伸びず、AVX(Intel Advanced Vector eXtensions)というベクトル拡張機能を取り入れる様になって来ました。

 

AVXは、AVX→AVX2→AVX512と世代を重ねる毎に強化されていることからも、昔主流だったベクトル命令が再び注目されはじめています。

 

ベクトルは日本の誇れる技術ですので皆さん注目していきましょう◎

 

まとめ

ベクトルマシンの特長としては、メモリバンド幅が強力であったりだとか、パイプライン処理が行われているとかもあるのですが、今回は、

  • スカラ:一つの命令で単一データを処理するSISD
  • ベクトル:一つの命令で複数データ処理するSIMD

だけに注目して分類してみました。

 

スカラ型ベクトル型で比べるのはナンセンス?

ただ、最近はベクトル型コンピュータ、スカラ型コンピュータと言う区別をする時代でも無くなってきたように思います。

 

むか~し、むかしの人がスパコンとパソコンを区別するのに使われていましたが、最近ではスカラ型コンピュータの中にもベクトル用の演算器がありますので、あまり適切な表現で無くなっているかも知れませんね。

 

さてさて、こんな感じで少しずつ記事を更新できたらと思いますので、良かったら読んでやってください。

 

おわりっ!