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