並列処理は並行性を意味しますが、その逆ではありませんか?


15

並列処理と並行処理は異なるものだとよく読みます。非常に多くの場合、回答者/コメント者は、まったく異なる2つのものであると書いているだけです。しかし、私の見解では、それらは関連していますが、その点について明確にしたいと思います。

たとえば、マルチコアCPUを使用していて、計算をx個の小さな計算(たとえば、fork / joinを使用)に分割し、それぞれを独自のスレッドで実行する場合、並列計算を実行するプログラムがあります(なぜならおそらく、任意の時点で複数のスレッドが複数のコア上で実行しようとして)されている同時右のもの?

たとえば、単にJavaを使用して、イベントディスパッチスレッドでUIイベントと再描画を処理し、自分で作成した唯一のスレッドを実行している場合、並行プログラム(EDT + GCスレッド+メインスレッド)がありますなど)が、並列ではありません。

これが正しいかどうか、および並列処理(「単一だがマルチコア」システムで)が常に並行性を意味するかどうかを知りたいのですが。

また、マルチスレッドプログラムはマルチコアCPUで実行されていますが、異なるスレッドがまったく異なる計算を実行している場合、「並列処理」を使用していると見なされますか?


回答:


13

ウィキペディアによると

並列コンピューティングは、多くの計算が同時に実行される計算形式であり、大きな問題はしばしば小さな問題に分割され、同時に解決されるという原則に基づいて動作します(「並列」)。

つまり、並列性は常に並行性を意味します。

また、マルチスレッドプログラムはマルチコアCPUで実行されていますが、異なるスレッドがまったく異なる計算を実行している場合、「並列処理」を使用していると見なされますか?

いいえ。並列処理の本質は、大きな問題を小さな問題に分割して、小さな問題を同時に解決できるようにすることです。これらのピースは(少なくともある程度まで)相互に独立していますが、それらはまだ大きな問題の一部であり、現在は並行して解決されています。

並行性の本質は、いくつかのスレッド(またはプロセス、コンピューター)が何かを同時に実行していることです。再びウィキペディア

同時実行性は、複数の計算が同時に実行され、潜在的に相互に対話するシステムのプロパティです。


4
素晴らしい投稿。並列処理は同時実行性のサブセットです。

3
申し訳ありませんが、この答えは間違っています。並行性のない並列処理(ビットレベルの並列処理など)を確実に行うことができます。実際、この2つは明確な概念です。並行性とは、独立した実行単位を構成することです。一方、並行性とは、潜在的に関連する計算を同時に実行することです。
カイセルグレン

@KaiSellgren:あなたの声明を支持するいくつかの情報源を引用してください。
ジョナスプラッカ

最初のウィキクォートはまったく間違っています。幸いなことに、それはしばらく前に修正され、現在では並列処理は並行性に依存しないと正しく述べられています。
カイセルグレン

実際、これは現在wikiエントリが言っていることです並行性のない並列処理(ビットレベルの並列処理など)が可能です)。しかし、私はその点をまったく理解していません。ビットレベルの並列処理は想像できる最も同時的なものではありません-より少ない命令でより多くの操作が実行され、それらの操作の一部は同じ命令内で、つまり同時に、すなわち同時に実行されませんか?
ジョナスプラッカ

3

コードは並行できますが、並行することはできません。

シングルコアマシンで複数のスレッドが実行されていると想像してください。このシングルコアマシンは、一度に1つのスレッドのみを処理するため、操作の並列性はありません。しかし、スレッドごとに、OSが複数のスレッドを処理する方法のおかげで、各スレッドは他のすべてのスレッドが同時に実行されていると想定する必要があります。


0

並列処理とは、単に多くのタスクを同時に実行することを意味します。一方、並行性とは、多くのプロセスを絶えず切り替えることにより、カーネルが多くのタスクを実行できることです。

並列処理を実現するためには、システムが多くのコアを備えていることが重要です。そうすれば、並列処理を効率的に実現できます。また、シングルコアマシンで並列処理を試みると、パフォーマンスに大きな打撃を与え、多くのオーバーヘッドが発生します。

たとえば、以前のシステムにはコアが1つしかなく、CPUスケジューラは、プロセスを絶えず切り替えて各プロセスが進行できるようにすることで、並列性の錯覚を与えていました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.