質問: 勉強中の学生です。 CPUはif文などの分岐といった複雑な処理できることやGPUは単純な計算をするのが得意という特徴は分かったのですが普段の計算時はどちらが使われているのでしょうか。 どちらも演算処理を出来てGPUもCPUのような働きができると聞きます。 両方を適材適所に割り当てて計算を行っているのでしょうか。 それともプログラミングのコードで計算をGPUで行うかCPUで行うのかを指定しなければならないのでしょうか。 機械学習の学習部分といったGPUに向いている処理はちゃんとGPUが行っているのでしょうか。 質問が多くて申し訳ありませんが調べてみもCPUとGPUの違いを説明しているサイトしか出てこなかったので質問させていただきました。 よろしくお願いします。
回答: 私の関連分野でも大容量データの高速計算の需要が近年とみに高まっており、自分でもGPUの活用でこれにうまく対処できないかと勉強してみたことがあります。 CUDAの本を見ながら数日かけて見様見真似でCのコードを書いてみたところ、いちおう計算はできているようでしたが、30分でこしらえた普通にCPUを使うperlのスクリプトのほうが数十倍高速という結果に終わりましたorz。 ウェブサイトを見ると、とにかくコアがたくさんあるから最強みたいな記述に終始している文章ばかりがヒットします。ところが、実際にはワープとかいう制約があるらしくて、これをクリアするようにしないと、結局せっかくのGPUコアも大半ぼさっと時間待ちをしているということになってしまうようです。 結論としては、 > > GPUのコアが10000個あればCPUの10000倍効率的に計算が進行するというような単純な話ではない。並列処理を効率的にさせるためにはGPUの構造をしっかり理解した上で適切にそれようのコードを作らなければならず、これを素人が我流でこなすのは実質的に不可能。 > > > 私は上記のことで心が折れ、他の業務との兼ね合いもありこの試みを凍結してしまいました。しかし、pythonなどでは裏でいい感じにGPUを活用するようにお膳立てしてくれるモジュールがあるようです。使い物になるのか経験者の話をこの機会に伺いたいところです。