GPUを用いたシミュ​レーションをしたいが​,計算がかなり遅い

23 views (last 30 days)
翔 池田
翔 池田 on 19 Apr 2021
Commented: Shunichi Kusano on 19 Apr 2021
現在,GPUを導入し数値シミュレーションを行っております.
GPUようにgpuArrayなどを用いて実行すると,計算が異様に遅く,CPUで実行した方が圧倒的に速いです.
この問題として,GPU内にあるコアすべてを使っていない可能性が考えられます.
しかし,実際GPUのコアがどのくらい使われているのかなどを調べる方法が分かりません.
教えていただけますでしょうか.
また,CUDAとなにか関係があるのでしょうか.
PCのスペックは以下の通りです.
MATLAB R2020a , Windows10 OS , Intel corei7 , NVIDIA Geforce FTX 1650

Answers (1)

Shunichi Kusano
Shunichi Kusano on 19 Apr 2021
GPU使った方が遅くなるケースもあります。
for文の中でgpuArrayとgatherを繰り返していて、CPU⇔GPU間のやり取りのオーバーヘッドの方が支配的になってしまっている、とかが真っ先に思い浮かびます。
  • そもそもGPU(並列計算)の恩恵を受けにくいアルゴリズム
  • 小さ目のデータに適用
とかですと条件が悪いかなと思います。
こんなページもありますので、もしご覧になっていなければご一読をおすすめいたします。
  2 Comments
翔 池田
翔 池田 on 19 Apr 2021
早急のご返信ありがとうございます.
parforを使って問題なく計算できるため,並列アルゴリズムは問題ないと思われます.
大胆にfor文内のほとんどの変数をgpuArrayにしてfor文から出てからgatherを使うのは,計算速度としては遅くなるのでしょうか.
また,CUDAのドライバーのインストールなどはいらないのでしょうか.
Shunichi Kusano
Shunichi Kusano on 19 Apr 2021
gpuArrayを実行したときに特にエラーが出ていないのでしたらドライバ周りは問題ないかと思います。必要なら最新のものにアップデートはしてみてください(劇的にパフォーマンスが変わることはないかと思いますが)。
ほとんどの変数をgpuArray化している、とのことですがそれらすべてGPU対応の関数で処理出来ていますでしょうか。GPU計算の恩恵にあずかれるのは、GPUメモリに展開(gpuArray)→GPU対応関数で計算→CPUメモリに戻す(gather)の一連の処理時間がCPUだけで処理するよりも短い時、ということになります。パフォーマンスを解析(コードのプロファイリング)して、一番ネックになっている部分だけをまずはGPU化してみるというのはいかがでしょうか。
可能でしたら関連する部分の具体的なコードを示していただければ、より具体的なコメントがつくかもしれません。

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!