GPUのeig関数の速度が遅い原因を知りたい
11 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
下記のコードの実行結果が「経過時間は 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); % 計測終了
1 commentaire
Réponses (1)
Kei Otsuka
le 8 Déc 2017
Modifié(e) : Kei Otsuka
le 8 Déc 2017
今回配列のデータ型はdouble(倍精度)で使われていますが、
GeForce系のGPUはグラフィックス用であり、倍精度や半精度が重要視されないため、
倍精度浮動小数点の演算器(DP)があまり搭載されていません。
(倍精度と単精度の性能比が1:32とも言われています)
また、eigの計算自体が並列性を得にくいという点もあります。
どこまで高速化できるかわかりませんが、倍精度で性能が出るGPU(Tesla等)をお持ちであれば、
一度試されると良いと思います。
0 commentaires
Voir également
Catégories
En savoir plus sur GPU 計算 dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!