- そもそもGPU(並列計算)の恩恵を受けにくいアルゴリズム
- 小さ目のデータに適用
GPUを用いたシミュレーションをしたいが,計算がかなり遅い
95 views (last 30 days)
Show older comments
現在,GPUを導入し数値シミュレーションを行っております.
GPUようにgpuArrayなどを用いて実行すると,計算が異様に遅く,CPUで実行した方が圧倒的に速いです.
この問題として,GPU内にあるコアすべてを使っていない可能性が考えられます.
しかし,実際GPUのコアがどのくらい使われているのかなどを調べる方法が分かりません.
教えていただけますでしょうか.
また,CUDAとなにか関係があるのでしょうか.
PCのスペックは以下の通りです.
MATLAB R2020a , Windows10 OS , Intel corei7 , NVIDIA Geforce FTX 1650
0 Comments
Answers (1)
Shunichi Kusano
on 19 Apr 2021
GPU使った方が遅くなるケースもあります。
for文の中でgpuArrayとgatherを繰り返していて、CPU⇔GPU間のやり取りのオーバーヘッドの方が支配的になってしまっている、とかが真っ先に思い浮かびます。
とかですと条件が悪いかなと思います。
こんなページもありますので、もしご覧になっていなければご一読をおすすめいたします。
2 Comments
Shunichi Kusano
on 19 Apr 2021
gpuArrayを実行したときに特にエラーが出ていないのでしたらドライバ周りは問題ないかと思います。必要なら最新のものにアップデートはしてみてください(劇的にパフォーマンスが変わることはないかと思いますが)。
ほとんどの変数をgpuArray化している、とのことですがそれらすべてGPU対応の関数で処理出来ていますでしょうか。GPU計算の恩恵にあずかれるのは、GPUメモリに展開(gpuArray)→GPU対応関数で計算→CPUメモリに戻す(gather)の一連の処理時間がCPUだけで処理するよりも短い時、ということになります。パフォーマンスを解析(コードのプロファイリング)して、一番ネックになっている部分だけをまずはGPU化してみるというのはいかがでしょうか。
可能でしたら関連する部分の具体的なコードを示していただければ、より具体的なコメントがつくかもしれません。
See Also
Categories
Find more on GPU 計算 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!