並列処理(Parallel Processing)とは、ひとつの大きな仕事を複数に分け、複数の処理装置で同時に実行することで、全体の処理時間を短くする方法のことです。CPUの複数のコアやGPU、さらには多数のコンピューターを使って、膨大な計算を素早く終わらせるために使われています。
現実世界に例えると、並列処理は大量の年賀状の宛名書きを、家族全員で分担して一斉に書くことのようなものです。1人で書けば一日かかる枚数でも、4人で分ければおよそ4分の1の時間で書き終えられます。
逐次処理との違い
基本となる考え方です。処理を1つずつ順番に行う方法を「逐次処理」と呼び、並列処理はそれを複数同時に進める方法です。逐次処理は仕組みが単純で分かりやすい一方、処理の量が増えるとそのぶん時間がかかります。並列処理は、処理装置の数を増やすことで、この時間を短くしようとする考え方です。
並行処理との違い
混同しやすい言葉です。並行処理は、複数の仕事を細かく切り替えながら進めて、同時に動いているように見せる考え方で、処理装置が1つでも成り立ちます。並列処理は、実際に複数の装置で同じ瞬間に計算します。並行処理は「同時に扱う」、並列処理は「同時に実行する」と覚えると区別しやすくなります。
| 項目 | 並列処理 | 並行処理 |
|---|---|---|
| 同時に動く仕組み | 実際に同じ瞬間に計算する | 切り替えて同時に見せる |
| 処理装置の数 | 複数が必要 | 1つでも成り立つ |
| 主な目的 | 処理を速く終わらせる | 待ち時間を有効に使う |
並列処理を支える装置
実現の手段です。身近なところでは、1つのCPUに複数のコアを持つマルチコアCPUが、並列処理の土台になっています。さらに、単純な計算を何千もの小さなコアで一斉にこなすGPUや、多数のコンピューターをネットワークでつないだスーパーコンピューターなど、規模に応じたさまざまな仕組みがあります。
分け方の2つの考え方
仕事の分け方です。大量のデータを分割し、同じ処理をそれぞれに同時に行う方法を「データ並列」、異なる種類の処理をそれぞれ別の装置に任せる方法を「タスク並列」と呼びます。画像の画素ごとの計算はデータ並列、表示と通信と保存を同時に進めるのはタスク並列の例です。
装置を増やしても限界がある
知っておきたい法則です。仕事の中に、どうしても順番に行わなければならない部分があると、装置をいくら増やしても、その部分の時間は短くなりません。たとえば全体の1割が順番に行う部分なら、どれだけ装置を増やしても、速くなるのは最大で10倍までです。この考え方は「アムダールの法則」と呼ばれています。
分けることにも手間がかかる
実際の難しさです。仕事を分けて配り、終わった結果を集めてまとめる作業にも時間がかかり、装置どうしの連絡が増えるほど、その負担は大きくなります。小さな仕事を無理に細かく分けると、かえって遅くなることもあります。並列処理で効果が出るかどうかは、仕事の性質と分け方次第です。
同じデータの取り合いに注意
プログラムを作るときの課題です。複数の処理が同じデータを同時に書き換えると、結果が実行のたびに変わるような不具合が起きることがあります。これを防ぐには、順番を待たせる仕組みを入れるなどの工夫が必要です。こうした不具合は再現しにくく見つけにくいため、並列処理のプログラムは慎重に作る必要があります。
身近な活用の場面
使われている例です。動画の書き出し、写真の加工、3次元のグラフィックスの描画、天気予報のための計算、AIの学習など、計算量の多い処理の多くで並列処理が活躍しています。特にAIの分野では、大量のGPUを並列に動かすことが、性能を高めるための前提になっています。
あわせて知っておきたい用語
- マルチコア:
1つのCPUの中に、処理を行うコアを複数持つ構造です。 - マルチスレッド:
1つのプログラムの中で、複数の処理の流れを同時に動かす仕組みです。 - GPU:
画像の処理や大量の計算を、並列に高速で行う装置です。 - スーパーコンピューター:
膨大な計算を高速に行うために作られた、非常に高性能なコンピューターです。


コメント