並列処理とは?複数の計算を同時にこなして速くする技法

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

並列処理とは(全体像)

並列処理は、たくさんの計算を同時に進めて、全体を速くするやり方。1人で順番にこなすより、大勢で手分けしたほうが早く終わる、という発想だ。

工場でたとえると、職人1人で順にやる(並列でない)よりも、複数の部門が同時に作業するほうが速い。AIやグラフィックの計算のように「同じような計算が大量にある」場面で特に効く。

押さえたいのは、並列処理にはいくつかのやり方(型)があること。それを整理したのが、次のFlynnの分類だ。


詳しく:Flynn4分類とアムダールの法則だけ覚えれば戦える

ここが記事の心臓部。まずFlynnの4分類を表で押さえよう。「命令」と「データ」がそれぞれ単一か複数かで分ける。

Flynnの4分類

分類命令データ代表例
SISD単一単一昔ながらの1つのCPU(順番に処理)
SIMD単一複数GPU(同じ命令で大量のデータを一気に)
MISD複数単一まれ(ほぼ理論上)
MIMD複数複数マルチコアCPU・分散システム

現代の主役はSIMDとMIMD。SIMDは「同じ命令を、たくさんのデータに一気に」かける型でGPUが代表。MIMDは「それぞれが別々の命令を」並行で動かす型で、マルチコアCPUが代表だ。MISDはほとんど使われず、出てきたら外す選択肢と思ってよい。

次に大事なのがアムダールの法則。これは「並列にしても、速くなるには限界がある」ことを表す。

アムダールの法則(速くなる限界)

ポイント内容
言いたいこと並列にできない部分(順番にやるしかない部分)が、全体の速さを縛る
9割を並列にできても、残り1割が順番なら、最大でも約10倍までしか速くならない

つまり、コアを増やせばその数だけ速くなる、とはならない。順番にやるしかない部分が「足を引っぱる」ので、そこが全体の速さを決める、というわけだね。

わかりやすく言い換えると

要するに、並列処理は「手分けして同時にこなす」やり方だ。

Flynn4分類 … 命令とデータが単一か複数かで4つに分ける

主役 … SIMD=GPU(同じ命令で大量データ)、MIMD=マルチコア(別々の命令を並行)

アムダールの法則 … 順番にやる部分が残ると、いくらコアを増やしても限界がある

「nコアでn倍」とはならない、というのが大事なポイント。


試験のツボ

🔴 一番出る:Flynn4分類

①SISD=単一CPU、SIMD=GPU

②MIMD=マルチコア、MISDはまれ

🔴 次に出る:SIMDとMIMDの違い

①SIMDは同じ命令で大量のデータ(GPU)

②MIMDはそれぞれ別の命令を並行(マルチコア)

🟡 押さえると安定:アムダールの法則

①並列化には限界がある

②順番にやる部分が全体の速さを決める


よくある間違い

「nコアあれば必ずn倍速くなる」→ ✗  アムダールの法則により、順番にやる部分が残ると限界がある。

「SIMDとMIMDは同じもの」→ ✗  SIMDは同じ命令で大量データ、MIMDはそれぞれ別の命令。設計が違う。

「Flynnの分類はデータの量だけで決まる」→ ✗  命令とデータの「単一か複数か」の組み合わせで4つに分ける。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(Flynn4分類)

📝 オリジナル問題 1 Flynnの4分類

Flynnの分類に関する次の記述のうち、正しいものはどれか。

  1. Flynnの分類はデータの量だけで決まり、命令の数とはいっさい関係がないものとされる
  2. Flynnの分類は命令とデータが単一か複数かの組み合わせで4種類に分けるものである
  3. Flynnの分類はSISDの1種類しかなく、ほかの分類は存在しないものとされている
  4. Flynnの分類は記憶容量の大小で分けるもので、命令やデータとは無関係とされている
ネトスパ
ネトスパ 解答・解説

解答は 2 である。

Flynnの分類は命令とデータが単一か複数かの組み合わせで4種類に分けるのだ。SISD・SIMD・MISD・MIMDの4つなるぞ。

選択肢1の「データだけ」、選択肢3の「1種類だけ」、選択肢4の「記憶容量」はどれも誤りである。

選択肢判定理由
1命令の数も使う
2命令×データで4分類
34種類ある
4容量では分けない

オリジナル問題2(SIMDとMIMD)

📝 オリジナル問題 2 SIMDとMIMDの違い

SIMDとMIMDに関する次の記述のうち、正しいものはどれか。

  1. SIMDはGPUで同じ命令を大量データに、MIMDはマルチコアで別々の命令を並行する
  2. SIMDはそれぞれ別の命令を並行し、MIMDは同じ命令を大量データにかけるものとされる
  3. SIMDもMIMDもまったく同じもので、命令やデータの扱いに違いはないものとされている
  4. SIMDもMIMDも1つのデータしか扱えず、並列に処理することはできないものである
ネトスパ
ネトスパ 解答・解説

解答は 1 である。

SIMDはGPUの代表で、同じ命令を大量のデータに、MIMDはマルチコアで、別々の命令を並行するのだ。型の違いを取り違えないことなるぞ。

選択肢2はSIMDとMIMDが逆。選択肢3の「同じ」、選択肢4の「並列できない」も誤りである。

選択肢判定理由
1SIMD=GPU・MIMD=マルチコア
2SIMDとMIMDが逆
3設計が違う
4並列に処理できる

オリジナル問題3(アムダールの法則)

📝 オリジナル問題 3 アムダールの法則

アムダールの法則に関する次の記述のうち、正しいものはどれか。

  1. コアを増やせば増やすほど、どんなプログラムも必ずその数だけ速くなるものとされる
  2. アムダールの法則は並列処理とは無関係で、記憶容量の計算に使うものとされている
  3. 順番にやるしかない部分が全体の速さを縛るので、並列化には限界があるという法則だ
  4. すべての処理は並列にでき、順番にやるしかない部分は存在しないものとされている
ネトスパ
ネトスパ 解答・解説

解答は 3 である。

アムダールの法則は順番にやるしかない部分が全体の速さを縛るので、並列化には限界があるという法則なのだ。「nコアでn倍」とはならぬなるぞ。

選択肢1の「必ずその数だけ速い」、選択肢2の「記憶容量」、選択肢4の「順番の部分はない」はどれも誤りである。

選択肢判定理由
1並列化には限界がある
2並列処理の法則
3逐次部分が全体の速さを縛る
4順番の部分は残ることがある

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る