「プログラマじゃない人にもわかりやすい解説」を目標にしています。
分かりやすさとイメージを重視するため、正確じゃないことを書いています。ご理解ください。
どちらもプログラムを高速に動かすための方法です。
今回は話題になった「AIプログラムが手塚治虫の漫画を描く」というのを元に説明しようと思います。
#マルチスレッドとは
マルチスレッドとは、プログラム処理を分散させることを言います。
例えばAIがマンガを3ページ描くのに12時間かかるとします。
これではかなり時間がかかってしまいます。
そこで3台のPCを用意して、1台に1ページ描かせることにしました。
合計で12時間ですが、実際にかかる時間は4時間になります。
マンガを描く処理を分散させた分、PC1台で処理をするよりもかなり早くなりました。
ただし実際にはPCを3台用意する必要はありません。
PCには**「CPU」**と呼ばれる機械があり、1台のPCで処理を分散させることが可能です。
「CPU」を3つ用意することでPC3台と同じ性能にすることができます。
こういった分散処理のことを**「マルチスレッド」**と言います。
#CPUの弱点
マンガのページをたくさん、高速に描くためには、たくさんのCPUに処理を分散させれば良いように見えます。
しかし1台のPCにあるCPUは、多くても10個や20個しかありません。
そのため、一気に1000ページを描くための方法はないか?
ということで編み出されたのが「GPGPU」という方法です。
#GPGPU
PCには**「GPU」**という機械があります。
このGPUはなんと、1つで1000個の処理を分散することができる凄い機械なんです!
1000個に分散できるので、一気に1000ページも作れてしまいます!
それどころか、1000個も分散できるなら、1コマずつ描く描くことも可能ですね。
1ページに10コマあった場合、1ページ4時間かかっていた処理が24分で完了します!
元々が12時間だったことを考えると、マルチスレッドやGPGPUって凄く高速になりますよね。
#終わりに
マルチスレッドとGPGPU、どちらも便利さが伝わったでしょうか。
どちらも凄く便利なのですが、現状では弱点もあります。
・専門性が高い(扱える人材が少ない)
・分散しやすいものにしか使えない
特にGPGPUは3Dプログラムのコアな知識が必要で、
まだまだ世に広まっていないと感じます。