この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "並列計算"
並列計算(へいれつけいさん、英語: parallel computing)は、コンピュータにおいて特定の処理をいくつかの独立した小さな処理に細分化し、複数の処理装置(プロセッサ)上でそれぞれの処理を同時に実行させることである[1]。並列コンピューティングや並列処理ともいう。 大きな問題を解いたり、大量のデータを処理したりする過程は、より小さなサブタスクやサブデータグループの処理に分割できることが多い、という事実を利用して単位時間あたりの処理効率(スループット)の向上を図る手法である。 並列処理(並列計算)はスーパーコンピュータでは以前から採られている手法である。スーパーコンピュータの高い性能は、プロセッサ数やノード数がパーソナルコンピュータに比べて極めて多く、並列処理性能が高いことで実現している。 並列計算のために設計されたコンピュータは並列コンピュータという。並列コンピュータは当初スーパーコンピュータなどの高価で大規模なシステムのみに見られる設計だったが、パーソナルコンピュータや携帯機器でもCPUをマルチコア化し並列処理をさせることが当たり前になってきた。CPUのクロック周波数を上げることで処理性能向上させることには限界や問題が見えてきたからこの手法が採用されるようになった。 また並列処理に特化したコプロセッサであるGPUも、個人が(比較的気軽に)購入できる価格帯で販売されるようになってきており、PCに後付で搭載する形での使用も広まっている。GPUは当初は主に、コンピュータゲームの3DCGレンダリングなどの画像処理に使われていたので「GPU」と呼ばれることになったが、実際には並列処理全般に使うことができるものであり、こうした使用法をGPGPUといい、今ではディープラーニングや暗号通貨のマイニングなど、現実的な時間内に処理しようとすると並列処理が必要となるさまざまな用途で使われるようになっている。 並列処理の歴史を遡ると、1958年にIBMの研究者ジョン・コックと Daniel Slotnick は数値計算における並列性の利用について初めて話し合っている[2]。1962年には、バロース社が4プロセッサのコンピュータ D825 を発表した。→#歴史 関連する概念に並行計算(へいこうけいさん)があるが、並行計算は一つのタスクの計算を並列化することにとどまらず、複数の相互作用しうるタスクを、プロセスやスレッドなどをもちいて単一または複数の計算資源にスケジューリングするといった、より汎用性の高い処理をさす。並列計算は物理的に計算資源が複数なければ効果が得られないが、並行計算はたとえ計算資源が1つだけだったとしても、マルチタスクに対応したオペレーティングシステムがプロセッサ時間をスライスして各タスクの処理に割り当てることで効果が得られる。 特に、並列計算専用に設計されたコンピュータを用いずに、複数のパーソナルコンピュータやサーバ、スーパーコンピュータを接続することで並列計算を実現するものをコンピュータ・クラスターと呼ぶ。このクラスターをインターネットなどの広域ネットワーク上に分散させるものも、広義には並列計算に属すが、分散コンピューティングあるいはグリッド・コンピューティングと呼び、並列計算とは区別することが多い。 従来、コンピュータソフトウェアは逐次的に計算されるものとして書かれてきた。問題を解くためにアルゴリズムが構築され、それによって逐次的に実行される命令列が生成される。その命令列は、コンピュータのCPU上で実行される。命令は一度に1つずつ実行される[3]。 一方並列計算では、複数の計算ノードが同時並列的に動作して問題を解く。問題は独立した部分に分割され、各計算ノードがアルゴリズムの一部を同時並列的に実行する。計算ノードの実体は様々であり、マルチプロセッサ型のコンピュータの各CPUだったり、ネットワーク上のコンピュータだったり、専用ハードウェアだったり、それらの組合せだったりする[3]。 1980年代から2004年まで、コンピュータの性能向上の主たる要因はクロック周波数の向上にあった。
概要
背景