GPUのeig関数の速度が遅い原因を知りたい

11 Ansichten (letzte 30 Tage)
tensor33
tensor33 am 8 Dez. 2017
Bearbeitet: Kei Otsuka am 8 Dez. 2017
下記のコードの実行結果が「経過時間は 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 Kommentar
michio
michio am 8 Dez. 2017
あくまで一般論ですが、データの転送等の余計な処理の分、処理時間が長くなる場合もあります。
GPU計算のオーバーヘッド分を考慮した速度計測には gputimeit がオススメです。

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Kei Otsuka
Kei Otsuka am 8 Dez. 2017
Bearbeitet: Kei Otsuka am 8 Dez. 2017
今回配列のデータ型はdouble(倍精度)で使われていますが、
GeForce系のGPUはグラフィックス用であり、倍精度や半精度が重要視されないため、
倍精度浮動小数点の演算器(DP)があまり搭載されていません。
(倍精度と単精度の性能比が1:32とも言われています)
 
また、eigの計算自体が並列性を得にくいという点もあります。
どこまで高速化できるかわかりませんが、倍精度で性能が出るGPU(Tesla等)をお持ちであれば、
一度試されると良いと思います。

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!