並列処理(Parallel Processing)

並列処理(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:
    画像の処理や大量の計算を、並列に高速で行う装置です。
  • スーパーコンピューター:
    膨大な計算を高速に行うために作られた、非常に高性能なコンピューターです。

コメント

タイトルとURLをコピーしました