import torch
import time
def stress_test_gpu(matrix_size=16384, duration=300):
"""
对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率
参数:
matrix_size: 矩阵维度大小,增大可提高计算复杂度
duration: 测试持续时间(秒)
"""
# 检查CUDA是否可用
if not torch.cuda.is_available():
print("CUDA不可用,无法进行GPU压力测试!")
return
# 获取GPU设备
device = torch.device("cuda:0")
print(f"使用GPU: {torch.cuda.get_device_name(device)}")
# 创建大型矩阵并移到GPU
print(f"正在创建 {matrix_size}x{matrix_size} 的矩阵...")
a = torch.randn(matrix_size, matrix_size, device=device)
b = torch.randn(matrix_size, matrix_size, device=device)
# 预热GPU
print("预热GPU中...")
for _ in range(3):
c = torch.matmul(a, b)
torch.cuda.synchronize()
# 开始压力测试
print(f"开始GPU压力测试,持续 {duration} 秒...")
start_time = time.time()
iterations = 0
try:
while time.time() - start_time < duration:
# 执行矩阵乘法(计算密集型操作)
c = torch.matmul(a, b)
# 同步设备以确保计算完成
torch.cuda.synchronize()
iterations += 1
# 每10秒打印一次进度
if iterations % 10 == 0:
elapsed = time.time() - start_time
print(f"已运行 {elapsed:.1f}s / {duration}s,迭代次数: {iterations}")
except KeyboardInterrupt:
print("测试被用户中断")
finally:
# 清理资源
del a, b, c
torch.cuda.empty_cache()
# 计算性能指标
elapsed = time.time() - start_time
print(f"\n压力测试完成!")
print(f"总运行时间: {elapsed:.2f} 秒")
print(f"总迭代次数: {iterations}")
print(f"平均每秒迭代: {iterations / elapsed:.2f}")
if __name__ == "__main__":
# 可调整矩阵大小以平衡性能和显存使用
# 16384x16384 矩阵约占用2GB显存 (4070有12GB显存)
stress_test_gpu(matrix_size=16384, duration=300)
拉力测试cuda pytorch 把 4070显卡拉满
MYH5162025-06-10 17:08
相关推荐
火山引擎开发者社区5 分钟前
两大模型发布!豆包大模型日均使用量突破 50 万亿 Tokens小尘要自信7 分钟前
Bright Data AI Scraper Studio:企业级AI爬虫解决方案,让数据采集更智能丝瓜蛋汤7 分钟前
chunking-free RAG简介虹科汽车电子13 分钟前
重新定义精密协作:低成本CAN FD如何赋予机器人「指尖智慧」?王中阳Go28 分钟前
09 Go Eino AI应用开发实战 | Hertz Web 框架搭建智驱力人工智能38 分钟前
从人海战术到智能巡逻 城市街道违规占道AI识别系统的实践与思考 占道经营检测系统价格 占道经营AI预警系统STLearner39 分钟前
VLDB 2025 | 时间序列(Time Series)论文总结(预测,异常检测,压缩,自动化等)GEO-optimize44 分钟前
2025年末GEO服务商推荐甄选:综合实力测评及优选指南Ven%1 小时前
【AI大模型算法工程师面试题解析与技术思考】天勤量化大唯粉1 小时前
枢轴点反转策略在铜期货中的量化应用指南(附天勤量化代码)