MATLAB Answers

2つの行列の和のよう​な簡単な計算をGPU​で行っても高速化でき​ないのはなぜですか?

1 ビュー (過去 30 日間)
大きなサイズの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
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 件のコメント

サインイン to comment.

その他の回答 (0 件)

サインイン してこの質問に回答します。

タグ

タグが未入力です。