2つの行列の和のような簡単な計算をGPUで行っても高速化できないのはなぜですか?
2 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2013 年 12 月 19 日
回答済み: MathWorks Support Team
2013 年 12 月 19 日
大きなサイズの2つの行列をRANDNで作成し、それらの和を求める計算の所要時間を計測しましたが、CPUで計算した場合とGPUで計算した場合で大きな違いはありませんでした。
CPUでの計算のためのプログラムは以下の通りです。
size = 10000;
tic
x = rand(size);
y = rand(size);
z = x + y;
toc
一方、GPUでの計算のためのプログラムは以下の通りです。
size = 10000;
tic
xm = gpuArray(rand(size));
ym = gpuArray(rand(size));
zm = xm + ym;
toc
採用された回答
MathWorks Support Team
2013 年 12 月 19 日
2つの行列の和を求める演算はコンピュータの負荷はさほど大きくありません。このためGPUを使用してもその効果はほとんどありません。むしろデータの転送等の負荷の分、所要時間が長くなる場合もあります。
複雑な計算の場合はGPUの効果が期待できます。
たとえば、以下のようなプログラムをCPUで実行します。
size = 10000;
tic
x = rand(size);
X = fft(x) ;
toc
結果:
Elapsed time is 5.020353 seconds.
GPUの場合、以下のコードが等価となります。
size = 10000;
tic
xm = gpuArray(rand(size));
Xm = fft(xm) ;
toc
結果:
Elapsed time is 0.042515 seconds.
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で GPU 計算 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!