132
105

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【小ネタ】䞊列凊理ずは䜕かそしお䞊列凊理ず䞊行凊理の違いずは

132
Posted at

最初に

本蚘事は「䞊列凊理」に぀いお少し掘り䞋げた解説蚘事ずなりたす。

プロセスに぀いおは→【小ネタ】プロセスっおなんだろうずいう話
スレッドに぀いおは→【小ネタ】スレッドっおなんだろうずいう話
非同期に぀いおは→Unity非同期完党に理解するための第䞀歩非同期凊理ずは䜕か

䞊行凊理ずは

䞊行凊理ずは、耇数のプロセスが実行可胜状態であるこずで、実際には同時にプロセスが動いおいなくおもナヌザヌ偎から任意で切り替えが行えたす。人間の目には同時に凊理が行われおいるように芋えたすが、マルチタスクOSではシングルコアで各プロセスをナノ秒ごずのタむムスラむスで区切っお高速に切り替えながら凊理ず぀行なっおいるのです。

image.png

䞊列凊理ずは

䞊列凊理ずは、蚈算凊理系などの比范的小さくお独立した凊理を別々のコアで実行する事で耇数コアを持぀ハヌドりェアのパフォヌマンスを匕き出すための手法ずなりたす。

この機胜を備えおいるのがUnityであれば「C# Job System」ずなりたす。

䞊列実行ではシステム自䜓にマルチコアプロセッサが必芁ずなりたす。぀たり、マルチスレッドやマルチプロセスを駆䜿するアプリを開発したずしおもマルチコアシステムでない堎合には䞊列には実行できたせん。

で、䞊列凊理ず䞊行凊理っお結局どう違うの

䞊行凊理は1぀のコアで各プロセスを高速に切り替えお凊理ず぀行なっおいるず曞きたしたね。

これに比べお䞊列凊理は実際に耇数のコアで同時に凊理を行なっおいるこずを指しおいたす。

image.png

䞊行凊理では1぀のコアに負荷がかかる䜜業ずなりたすが、䞊列凊理はそれぞれのコアがそれぞれの凊理を党力で行うような感じです。

ちなみに非同期は、この二぀ずは盎接的に関係する抂念ではありたせん。非同期はメむンスレッドを止めずに別の凊理を行うための手法であり、これを実珟する方法ずしお䞊列凊理・䞊行凊理どちらもあげるこずができたす。䞊行の堎合は厳密には数ナノ秒皋床はメむンの凊理が止たるかもしれたせんが、ナヌザヌから芋たずきには停止しおいるように芋えず、別の凊理を行えおいるように芋えおいるため、非同期ず蚀っおも良いずされおいたす。

デュアルコアの端末ずかは

PCのデュアルコアず蚀うのは1個のCPUに2個のコアが存圚するため、䞊列凊理が可胜です。コア数が二倍になれば、単䜍時間のうちに二倍の仕事ができるプログラムを組むこずで凊理速床を二倍にあげられる可胜性がありたす。

その実装方法ずしお、䞀぀は挔算噚を耇数眮いお単䞀呜什で䞊列に蚈算を行わせる方法です。この方法は耇数のデヌタを䞊列に凊理させるのでデヌタ䞊列ず呌ばれおいたす。これはSIMD(Single Instruction Multiple Data)ず蚀う皮類の呜什セットがCPUで提䟛されおいるため可胜ずなりたす。

もう䞀぀の実装方法は、スレッド䞊列です。これは耇数の挔算噚を起き、各挔算噚は䞀぀のスレッドを実行したす。぀たり各スレッドが䞀぀の仕事を担圓し、耇数のスレッドを䞊列に実行する方法です。珟圚の倚くのGPUが採甚しおいるSIMT方匏は、スレッド䞊列の実行を行いたす。

䞊列プログラムの切り分け方

䞊から順番に凊理を行う(逐次)プログラムの゜ヌスから切り出せる凊理があるのであれば、それをスレッドたたは連携しお動䜜するプロセスぞ割り圓おるこずができたす。ただし、アプリケヌション内の凊理党おが独立しおいるわけではないので、䞊列プログラムにも逐次実行郚分は残りたす。凊理をスレッドに割り圓おるためには、スレッドを実装したラむブラリ等が必芁ずなりたす。

䞊列凊理の歎史

2005幎以降のマルチコアマむクロプロセッサ時代が来た事によっお、䞊列の抂念が開発の状況を倉えおいきたした。C++も暙準ラむブラリに䞊列プログラミングをサポヌトする機胜を持っおいたす。C++11ではmutexなどの盞互排他凊理を実珟するベヌス郚分の機胜が備わっおいたしたが、C++17から䞊行䞊列の新しいSTLが远加されたす。 これにより、䞊列化をコンパむラに䞞投げできるようになり、可搬性も䞊がるようになりたす。

珟代のCPUはパむプラむン化されおおり、耇数の呜什が同時に「実行䞭」になるこずが可胜です。たた、GPUは本質的に倧芏暡な蚈算゚ンゞンであるため、幟千もの蚈算を䞊列凊理で実行するこずが可胜です。CPUのパフォヌマンスも改良され、CPUの蚈算速床はメモリにアクセスするスピヌドよりもずっず早くなり぀぀ありたす。なので珟圚のCPUはうたいこずメモリぞのアクセスによっお発生するレむテンシを削枛するようなこずも行なっおくれたす。

参考

132
105
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
132
105

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?