GPUのeig関数の速度が遅い原因を知りたい
14 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
下記のコードの実行結果が「経過時間は 5.108886 秒です。 経過時間は 9.642106 秒です。」となりCPU使用時とGPU使用時の実行時間が逆転してしまう原因を教えて頂きたいです。
PCスペック
- グラフィックボード GeForce GTX 1080Ti (ドライバのバージョンは388.13)
- プロセッサ Intel® Core™ i9-7900X CPU @3.30GHz 3.31GHz
- 実装 RAM 32.0GB ( 31.7GB 使用可能)
%%パラメータ設定と行列の定義
N = 3000;
A = rand(N); % [0 1]の一様乱数(N x N行列)
gpuA = gpuArray(A); % AのデータをGPU上のメモリに確保
%%CPUで実行
timer = tic(); % 計測開始
eig(A); % 固有値の計算
toc(timer); % 計測終了
%%GPUで実行
timer = tic(); % 計測開始
eig(gpuA); % 固有値の計算
toc(timer); % 計測終了
Risposte (1)
Kei Otsuka
il 8 Dic 2017
Modificato: Kei Otsuka
il 8 Dic 2017
今回配列のデータ型はdouble(倍精度)で使われていますが、
GeForce系のGPUはグラフィックス用であり、倍精度や半精度が重要視されないため、
倍精度浮動小数点の演算器(DP)があまり搭載されていません。
(倍精度と単精度の性能比が1:32とも言われています)
また、eigの計算自体が並列性を得にくいという点もあります。
どこまで高速化できるかわかりませんが、倍精度で性能が出るGPU(Tesla等)をお持ちであれば、
一度試されると良いと思います。
0 Commenti
Vedere anche
Categorie
Scopri di più su GPU 計算 in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!