macOS下Python的GPU/CPU对比测试
M 芯片的 macOS 下 PyTorch 利用 GPU 加速的是:mps
。
Python代码:
import torch
import time
# 检查是否支持 GPU
if torch.backends.mps.is_available():
device = torch.device("mps")
print ("MPS device is found.")
device = torch.device("mps" if torch.backends.mps.is_available() else "cpu")
# 生成大型随机矩阵
size = 4000
a_cpu = torch.randn(size, size)
b_cpu = torch.randn(size, size)
# CPU 上的矩阵相乘
start_time_cpu = time.time()
result_cpu = torch.mm(a_cpu, b_cpu)
cpu_time = time.time() - start_time_cpu
# 将矩阵移动到 GPU
a_gpu = a_cpu.to(device)
b_gpu = b_cpu.to(device)
# GPU 上的矩阵相乘
start_time_gpu = time.time()
result_gpu = torch.mm(a_gpu, b_gpu)
gpu_time = time.time() - start_time_gpu
# 将 GPU 计算结果移回 CPU
result_gpu_cpu = result_gpu.to("cpu")
# 打印计算时间
print("CPU 计算时间: {:.6f} 秒".format(cpu_time))
print("GPU 计算时间: {:.6f} 秒".format(gpu_time))
# 验证 CPU 和 GPU 计算结果是否一致
print("结果一致性:", torch.allclose(result_cpu, result_gpu_cpu))
显示结果:
MPS device is found.
CPU 计算时间: 0.062729 秒
GPU 计算时间: 0.031509 秒
结果一致性: True
GPU 比 CPU 提速将近一倍。
当把4000
改为12000
时,显示结果:
MPS device is found.
CPU 计算时间: 1.450904 秒
GPU 计算时间: 0.068294 秒
结果一致性: True
GPU 比 CPU 提升约 21 倍多。
延伸阅读
- Introducing Accelerated PyTorch Training on Mac | PyTorch
- Metal Overview - Apple Developer
- Accelerated PyTorch training on Mac - Metal - Apple Developer
更新
- 2024.12.02 更新加入不同测试