1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GPUとCPUの処理速度の違い

Posted at

GPUとCPUの処理速度を比較する一つの方法は、大量の行列計算(例えば、行列の乗算)を実行し、それぞれの実行時間を計測することです。そのため以下に、実行時間を計測するPythonコードを示します。

私はGoogle Colaboをここでは使用しています。

import torch
import time

# 行列のサイズを設定します
for size in range(1000, 11000, 1000):
  
  a = torch.randn([size, size])
  b = torch.randn([size, size])

  # CPUでの計算
  start_time = time.time()
  c = torch.matmul(a, b)
  end_time = time.time()
  cpu_time = end_time - start_time
  print('Size: {}, CPUによる処理時間: {:.4f}秒'.format(size, cpu_time))

  # GPUでの計算
  a = a.to('cuda')
  b = b.to('cuda')

  start_time = time.time()
  c = torch.matmul(a, b)
  torch.cuda.synchronize() # すべてのCUDAカーネルが完了するまで待つ
  end_time = time.time()
  gpu_time = end_time - start_time
  print('Size: {}, GPUによる処理時間: {:.4f}秒'.format(size, gpu_time))


結果は以下の通りです。

Size: 1000, CPUによる処理時間: 0.0248秒
Size: 1000, GPUによる処理時間: 0.0009秒
Size: 2000, CPUによる処理時間: 0.2079秒
Size: 2000, GPUによる処理時間: 0.0060秒
Size: 3000, CPUによる処理時間: 0.6982秒
Size: 3000, GPUによる処理時間: 0.0193秒
Size: 4000, CPUによる処理時間: 1.6222秒
Size: 4000, GPUによる処理時間: 0.0456秒
Size: 5000, CPUによる処理時間: 4.2262秒
Size: 5000, GPUによる処理時間: 0.0879秒
Size: 6000, CPUによる処理時間: 5.3194秒
Size: 6000, GPUによる処理時間: 0.1467秒
Size: 7000, CPUによる処理時間: 9.5572秒
Size: 7000, GPUによる処理時間: 0.2131秒
Size: 8000, CPUによる処理時間: 13.5594秒
Size: 8000, GPUによる処理時間: 0.2957秒
Size: 9000, CPUによる処理時間: 19.6224秒
Size: 9000, GPUによる処理時間: 0.4059秒
Size: 10000, CPUによる処理時間: 26.2983秒
Size: 10000, GPUによる処理時間: 0.5396秒

グラフにすると以下の通りです。
スクリーンショット (119).png

この結果から、GPUがCPUに比べて大幅に高速であることが明確に理解出来ました。特に行列のサイズが大きくなるにつれて、パフォーマンスの差が顕著に確認出来ました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?