2つの行列の和のような簡単な計算をGPUで行っても高速化できないのはなぜですか?
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MathWorks Support Team
le 19 Déc 2013
Réponse apportée : MathWorks Support Team
le 19 Déc 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
Réponse acceptée
MathWorks Support Team
le 19 Déc 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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur GPU 計算 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!