この間Cupyを試しました。結果は確かに早いけど、行列の大きさがそこそこ大きくないとメリットがそんななくて、自分の環境だとあまり利用価値がないなという結論に行きつきました。
現行の環境ではCPUは16コアのxeonで道GPUじゃなくてCPUの性能を活かす方向に頑張ろうと思います。(逆にこのPCのGPUは2GBしかメモリがないので大きな行列を計算させるとモニター出力が落ちます)
で、そもそもこんなにコアがあるけどそれを活かせているのか?って疑問に思いました。
ここら辺の知識はないのでわからないことがいろいろあるのですが、せめて行列計算のために使っているNumpyが並列処理対応なのかはっきりさせたいと思いました。
ただ、ちゃんと明言しているところがなかったんですよね。だから、とりあえず実行中にcpuの稼働率を測定しました。
Numpyはマルチコアに対応している
ここら辺はお勉強不足なのですが、Numpy実行中はすべてのコアが動いていました。知っている人からしたら当然のことかもしれませんが、Cで書いたらopenMPなどで並列化のためのコードを書く必要があるし、動いているプロセスは行列計算中はおそらく1なので、勝手に並列化されるとは思いませんでした。
pythonもDaskなど並列化のための計算ライブラリーもあって、それとの違いを調べたのですがわかったようなわかんなかったような・・・。
何がともあれ、Numpyはマルチコアに対応しています。たぶん・・・。
ここら辺もpythonのメリット一つかもしんないですね。ただ、実行そのものはCのほうが断然早いので、現行のプログラムで速度をちゃんと比較したことはないので、そのうちしたいと思います。
それでは。