脚本测试显卡的实际算力
最近半年买了两张显卡玩 AI,于是想着测试一下显卡的实际算力。通过 AI 写了一个脚本测试显卡的 FP16 和 FP32 算力。结果有点出乎我意料之外:
Tesla T10 算力测试结果为:
FP16 混合算力 50-54 TFLOPS;FP32 算力 8 TFLOPS;
网上都说 Tesla T10 FP16 算力被大刀阉割了,事实上砍得并不多。

RTX4060 算力测试结果:
FP16 混合算力 30 TFLOPS;FP32 算力 8 TFLOPS;
网上说的 RTX4060 FP32 算力都是 15TFLOPS,但脚本测试就是只有一半,让我困惑。

脚本测试非常简单,保存文件为:test.py。正常安装 python、 Pytorch 和 CUDA (玩AI的人必备的系统)。然后运行脚本测试即可:
import torch
import time
def test_gpu_tensorcore_cuda_fp16_compute():
# 检查 CUDA 是否可用
if not torch.cuda.is_available():
print("CUDA 不可用,请检查你的环境配置。")
return
# 获取 CUDA 设备
device = torch.device("cuda")
# 定义矩阵大小,可根据显卡性能调整
matrix_size = 4096
# 创建 FP16 随机矩阵并移到 CUDA 设备上
matrix_a = torch.randn(matrix_size, matrix_size, dtype=torch.float16, device=device)
matrix_b = torch.randn(matrix_size, matrix_size, dtype=torch.float16, device=device)
# 预热操作,让 CUDA 设备和 Tensor Core 达到稳定状态
for _ in range(10):
_ = torch.matmul(matrix_a, matrix_b)
# 同步 CUDA 设备,确保预热操作完成
torch.cuda.synchronize()
# 记录开始时间
start_time = time.time()
# 执行多次矩阵乘法以获得更准确的计时
num_iterations = 100
for _ in range(num_iterations):
_ = torch.matmul(matrix_a, matrix_b)
# 同步 CUDA 设备,确保所有计算完成
torch.cuda.synchronize()
# 记录结束时间
end_time = time.time()
# 计算总耗时
elapsed_time = end_time - start_time
# 计算每次矩阵乘法的浮点运算次数(FLOPs)
flops_per_iteration = 2 * matrix_size ** 3
# 计算总浮点运算次数
total_flops = flops_per_iteration * num_iterations
# 计算算力(TFLOPS)
tflops = total_flops / (elapsed_time * 1e12)
print(f"显卡测试的混合 FP16 算力: {tflops} TFLOPS")
return tflops
if __name__ == "__main__":
test_gpu_tensorcore_cuda_fp16_compute()
def verify_gpu_fp32_tflops(matrix_size=4096, num_runs=100):
# 创建两个随机矩阵,数据类型为 torch.float32
a = torch.randn(matrix_size, matrix_size, dtype=torch.float32).cuda()
b = torch.randn(matrix_size, matrix_size, dtype=torch.float32).cuda()
# 进行热身运算,让 GPU 达到稳定状态
for _ in range(5):
_ = torch.matmul(a, b)
# 记录开始时间
start_time = time.time()
# 进行多次矩阵乘法运算
for _ in range(num_runs):
c = torch.matmul(a, b)
# 等待所有运算完成
torch.cuda.synchronize()
# 记录结束时间
end_time = time.time()
# 计算总时间
total_time = end_time - start_time
# 计算每次矩阵乘法的浮点运算次数(FLOPs)
flops_per_matmul = 2 * matrix_size ** 3
# 计算总的浮点运算次数
total_flops = flops_per_matmul * num_runs
# 计算 TFLOPS
tflops = total_flops / (total_time * 1e12)
return tflops
if __name__ == "__main__":
tflops = verify_gpu_fp32_tflops()
print(f"显卡测试的 FP32 算力: {tflops} TFLOPS")
欢迎大家分享自己的测试结果,如有问题也欢迎指正!
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

双子懒洋洋
显卡测试的混合 FP16 算力: 123.27652439254078 TFLOPS
显卡测试的 FP32 算力: 32.81808107918341 TFLOPS
校验提示文案
双子懒洋洋
校验提示文案
o大米o
校验提示文案
双子懒洋洋
校验提示文案
双子懒洋洋
显卡测试的混合 FP16 算力: 123.27652439254078 TFLOPS
显卡测试的 FP32 算力: 32.81808107918341 TFLOPS
校验提示文案
o大米o
校验提示文案