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

2 ビュー (過去 30 日間)
MathWorks Support Team
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
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 件)

カテゴリ

Help Center および File ExchangeGPU 計算 についてさらに検索

タグ

タグが未入力です。

Community Treasure Hunt

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

Start Hunting!