2つの行列の和のような簡単な計算をGPUで行っても高速化できないのはなぜですか?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
MathWorks Support Team
am 19 Dez. 2013
Beantwortet: MathWorks Support Team
am 19 Dez. 2013
大きなサイズの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
Akzeptierte Antwort
MathWorks Support Team
am 19 Dez. 2013
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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu GPU 計算 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!