これは何?
計算科学の並列処理周りの用語を整理しました。
並列処理と並列処理
- 逐次処理: 処理中に一つずつしか処理を実行しない
- 並列処理: 同時に2つ以上の処理を実行する --> 複数のプロセッサが複数の処理を実行している。
- 並行処理: 同時に実行状態を保てる状態を利用して,待ち時間で別の処理を実行する。 --> 1つのプロセッサが複数の処理をしている状態。
並行処理の例: パイプライン処理
- 1つの命令を細かく分解し,それらの処理を一操作ずつずらして行う。
スーパーコンピュータは何故スーパーかにわかりやすい図があったので貼っておく。
プロセス並列とスレッド並列
そもそもプロセスとスレッドとは
What is the difference between a process and a thread?より
Here is the analogy I use in Linux Kernel Development. Processes are the abstraction of running programs: A binary image, virtualized memory, various kernel resources, an associated security context, and so on. Threads are the unit of execution in a process: A virtualized processor, a stack, and program state. Put another way, processes are running binaries and threads are the smallest unit of execution schedulable by an operating system's process scheduler.
私がLinuxカーネル開発で使っている例えはこうだ。プロセスとは、実行中のプログラムを抽象化したものだ: バイナリ・イメージ、仮想化メモリ、さまざまなカーネル・リソース、関連するセキュリティ・コンテキストなどだ。スレッドはプロセスの実行単位である: 仮想化されたプロセッサ、スタック、そしてプログラムの状態。別の言い方をすれば、プロセスは実行中のバイナリであり、スレッドはオペレーティング・システムのプロセス・スケジューラによってスケジューリング可能な実行の最小単位である。
- プロセスとは実行中のプログラウを抽象化したものだ。
- スレッドはプロセスの実行単位である。
プロセス並列とスレッド並列の違い
- プロセス並列: 複数のプロセスによって並列化を行う
- スレッド並列: 1つのスレッドの中で並列化を行う。
計算科学入門第7回 MPIによる並列計算にわかりやすい図があったので貼っておく
ハイブリッド並列
プロセス並列とスレッド並列を同時に行う。