# GPU Benchmark Linux
一个专业的GPU基准测试和压力测试工具,完全替代gpu burn方案,提供全新的GPU压力测试、硬件监控和可视化报告功能。
## 🚀 核心特性
- ✅ **GPU压力测试**: 矩阵乘法、计算密集型、内存带宽测试
- ✅ **实时硬件监控**: 温度、功耗、GPU/内存利用率监控
- ✅ **安全保护机制**: 温度/功耗限制,自动停止保护
- ✅ **可视化报告**: HTML交互式报告,Chart.js专业图表
- ✅ **多GPU支持**: 并行测试多个GPU设备
- ✅ **CUDA兼容**: 支持CUDA Toolkit 12+和主流NVIDIA显卡
- ✅ **多格式输出**: JSON、CSV、HTML多种报告格式
## 📋 系统要求
- **操作系统**: Linux (推荐Ubuntu 18.04+)
- **硬件**: NVIDIA显卡
- **软件**:
- CUDA Toolkit 12.0+
- NVIDIA驱动程序
- Python 3.8+
## 🔧 安装
### 方式一:PyPI安装
```bash
pip install gpu-benchmark-linux
```
### 方式二:源码安装
```bash
git clone <项目地址>
cd GPUBenchmark/gpu_benchmark
pip install -e .
```
### 依赖包
```bash
# 核心依赖
pip install cupy-cuda12x nvidia-ml-py3 numpy psutil
```
## 🎯 快速开始
### 命令行使用
```bash
# 运行所有测试(默认60秒)
python3 -m gpu_benchmark_linux --test all
# 指定测试时间(5分钟)
python3 -m gpu_benchmark_linux --test all --duration 300
# 指定输出目录
python3 -m gpu_benchmark_linux --test all --output results
# 查看帮助
python3 -m gpu_benchmark_linux --help
```
### 测试类型
| 测试类型 | 说明 | 用途 |
|---------|------|------|
| `env` | 环境检查 | 验证CUDA、驱动、依赖 |
| `cuda` | CUDA功能测试 | GPU计算性能基准测试 |
| `model` | 模型推理测试 | AI模型推理性能测试 |
| `all` | 完整测试套件 | 全面的GPU性能评估 |
### 编程接口
```python
from gpu_benchmark_linux.stress_test import GPUStressTester, StressTestConfig
# 创建测试配置
config = StressTestConfig(
duration=300, # 5分钟测试
device_ids=[0, 1], # 测试GPU 0和1
test_types=['matrix_multiply', 'compute_intensive', 'memory_bandwidth'],
temperature_limit=85.0, # 温度限制85°C
auto_stop_on_limit=True # 超限自动停止
)
# 运行压力测试
tester = GPUStressTester()
result = tester.run_stress_test(config)
# 检查结果
if result.success:
print(f"测试成功!总GFLOPS: {result.performance_metrics.get('total_gflops', 0)}")
print(f"HTML报告: {result.html_report_path}") # 自动生成HTML报告
else:
print(f"测试失败: {result.error_message}")
```
## 📊 输出文件说明
测试完成后会在输出目录生成以下文件:
### 1. 日志文件
```
benchmark_YYYYMMDD_HHMMSS.log # 详细的测试日志
```
### 2. JSON结果文件
```
stress_test_TIMESTAMP.json # 机器可读的测试结果
```
### 3. HTML可视化报告 ⭐
```
benchmark_report_YYYYMMDD_HHMMSS.html # 交互式可视化报告
```
**HTML报告包含**:
- 📊 系统信息概览
- ⚡ 性能指标仪表板
- 📈 实时监控图表(温度、功耗、利用率)
- 🎯 设备测试结果详情
- 📉 性能对比图表
## 🔍 核心功能详解
### 1. GPU压力测试类型
#### 矩阵乘法测试
- 测试GPU浮点计算性能
- 输出GFLOPS性能指标
- 验证计算精度
#### 计算密集型测试
- 持续高强度计算负载
- 测试GPU稳定性
- 评估散热性能
#### 内存带宽测试
- 测试GPU显存带宽
- 评估内存子系统性能
- 检测内存错误
### 2. 硬件监控功能
```python
# 实时监控示例
from gpu_benchmark_linux.monitor import GPUMonitor
monitor = GPUMonitor()
monitor.start_monitoring(interval=1.0) # 每秒采样
# 获取实时数据
metrics = monitor.get_current_metrics()
for metric in metrics:
print(f"GPU {metric.device_id}: {metric.temperature}°C, {metric.power_usage}W")
```
### 3. 安全保护机制
- **温度保护**: 超过设定温度自动停止测试
- **功耗保护**: 功耗超限自动终止
- **异常处理**: 完善的错误恢复机制
- **资源清理**: 测试结束自动清理GPU资源
## 📈 性能基准参考
| GPU型号 | 矩阵乘法(GFLOPS) | 内存带宽(GB/s) | 典型功耗(W) |
|---------|------------------|----------------|-------------|
| RTX 4090 | 15000-20000 | 900-1000 | 350-450 |
| RTX 4080 | 12000-15000 | 700-800 | 280-350 |
| RTX 3090 | 10000-13000 | 800-900 | 300-400 |
| RTX 3080 | 8000-11000 | 650-750 | 250-320 |
| RTX 3070 | 6000-8000 | 450-550 | 200-250 |
## 🛠️ 高级配置
### 自定义测试参数
```python
config = StressTestConfig(
duration=600, # 10分钟测试
matrix_size=8192, # 更大的矩阵(更高负载)
memory_usage_ratio=0.9, # 使用90%显存
monitor_interval=0.5, # 0.5秒监控间隔
temperature_limit=80.0, # 更严格的温度限制
power_limit_ratio=0.95, # 功耗限制比例
)
```
### 添加测试回调
```python
def test_progress_callback(result):
"""测试进度回调"""
print(f"测试完成,耗时: {result.duration:.1f}秒")
if result.success:
print("✅ 所有测试通过")
# 自动发送邮件通知等
else:
print("❌ 测试失败,请检查日志")
tester.add_callback(test_progress_callback)
```
### 批量测试脚本
```python
#!/usr/bin/env python3
"""批量GPU测试脚本"""
import time
from gpu_benchmark_linux.stress_test import GPUStressTester, StressTestConfig
def run_batch_tests():
"""运行批量测试"""
test_configs = [
("短时测试", StressTestConfig(duration=60)),
("中等测试", StressTestConfig(duration=300)),
("长时测试", StressTestConfig(duration=1800)),
]
tester = GPUStressTester()
results = {}
for name, config in test_configs:
print(f"开始 {name}...")
result = tester.run_stress_test(config)
results[name] = result
if result.success:
print(f"✅ {name} 完成")
else:
print(f"❌ {name} 失败: {result.error_message}")
time.sleep(30) # 测试间隔
return results
if __name__ == "__main__":
run_batch_tests()
```
## 🔧 故障排除
### 1. CUDA不可用
```bash
# 检查NVIDIA驱动
nvidia-smi
# 检查CUDA版本
nvcc --version
# 安装CUDA Toolkit
# 访问: https://developer.nvidia.com/cuda-toolkit
```
### 2. 依赖包问题
```bash
# 重新安装依赖
pip install --upgrade cupy-cuda12x nvidia-ml-py3 numpy
# 如果CuPy安装失败,尝试预编译版本
pip install cupy-cuda12x
# 检查CUDA版本兼容性
python -c "import cupy; print(cupy.cuda.runtime.runtimeGetVersion())"
```
### 3. 权限问题
```bash
# 确保用户在docker组中(如果使用Docker)
sudo usermod -a -G docker $USER
# 检查GPU设备权限
ls -la /dev/nvidia*
# 重新登录或重启
```
### 4. 内存不足
```bash
# 检查GPU内存
nvidia-smi
# 降低内存使用比例
config.memory_usage_ratio = 0.7 # 使用70%显存
```
### 5. 温度过高
```bash
# 检查散热
nvidia-smi -q -d TEMPERATURE
# 降低温度限制
config.temperature_limit = 75.0 # 75°C限制
# 改善散热环境
```
## 📁 项目结构
```
gpu_benchmark_linux/
├── __init__.py # 包初始化
├── __main__.py # 命令行入口
├── benchmark.py # 基准测试集成
├── cuda_ops.py # CUDA计算操作封装
├── monitor.py # GPU硬件监控
├── stress_test.py # 压力测试核心逻辑
├── reporter.py # 结果输出管理
├── html_reporter.py # HTML可视化报告生成器
├── exceptions.py # 错误处理机制
├── utils.py # 工具函数库
└── tests/ # 单元测试
├── __init__.py
├── cuda_tests.py
└── model_tests.py
```
## 🔄 更新日志
### v0.1.9 (当前版本)
- ✅ **重大更新**: 完全移除gpu burn依赖
- ✅ **新功能**: 实现全新的CUDA压力测试方案
- ✅ **可视化**: 添加HTML交互式报告功能
- ✅ **兼容性**: 支持CUDA Toolkit 12+
- ✅ **监控**: 增强的硬件监控功能
- ✅ **架构**: 模块化架构重构
- ✅ **稳定性**: 改进的错误处理机制
- ✅ **安全性**: 完善的温度和功耗保护
### v0.1.8
- 基础GPU测试功能
- 简单的结果输出
## 🤝 贡献指南
欢迎提交Issue和Pull Request!
### 开发环境设置
```bash
git clone <项目地址>
cd gpu_benchmark
pip install -e ".[dev]"
```
### 运行测试
```bash
python -m pytest gpu_benchmark_linux/tests/
```
## 📄 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件
## 🆘 技术支持
如果遇到问题,请:
1. **检查系统要求**: 确保满足最低硬件和软件要求
2. **查看日志**: 检查详细的日志文件获取错误信息
3. **参考文档**: 查看故障排除部分
4. **提交Issue**: 在GitHub上提交详细的问题报告
---
**⚠️ 重要提示**: 本工具设计用于专业的GPU性能测试和压力测试,请在良好通风的环境下使用,并注意监控硬件温度,避免硬件损坏。
**🎯 项目目标**: 提供比gpu burn更强大、更安全、更易用的GPU压力测试解决方案。
Raw data
{
"_id": null,
"home_page": null,
"name": "gpu-benchmark-linux",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "gpu, benchmark, cuda, nvidia, testing, performance",
"author": null,
"author_email": "GPU Benchmark Team <your.email@example.com>",
"download_url": "https://files.pythonhosted.org/packages/6a/3f/fe0884b38e508f1ce556c8dbfe3d8814e13febb37e4af9b81d64f3fbd665/gpu_benchmark_linux-0.4.4.tar.gz",
"platform": null,
"description": "# GPU Benchmark Linux\n\n\u4e00\u4e2a\u4e13\u4e1a\u7684GPU\u57fa\u51c6\u6d4b\u8bd5\u548c\u538b\u529b\u6d4b\u8bd5\u5de5\u5177\uff0c\u5b8c\u5168\u66ff\u4ee3gpu burn\u65b9\u6848\uff0c\u63d0\u4f9b\u5168\u65b0\u7684GPU\u538b\u529b\u6d4b\u8bd5\u3001\u786c\u4ef6\u76d1\u63a7\u548c\u53ef\u89c6\u5316\u62a5\u544a\u529f\u80fd\u3002\n\n## \ud83d\ude80 \u6838\u5fc3\u7279\u6027\n\n- \u2705 **GPU\u538b\u529b\u6d4b\u8bd5**: \u77e9\u9635\u4e58\u6cd5\u3001\u8ba1\u7b97\u5bc6\u96c6\u578b\u3001\u5185\u5b58\u5e26\u5bbd\u6d4b\u8bd5\n- \u2705 **\u5b9e\u65f6\u786c\u4ef6\u76d1\u63a7**: \u6e29\u5ea6\u3001\u529f\u8017\u3001GPU/\u5185\u5b58\u5229\u7528\u7387\u76d1\u63a7\n- \u2705 **\u5b89\u5168\u4fdd\u62a4\u673a\u5236**: \u6e29\u5ea6/\u529f\u8017\u9650\u5236\uff0c\u81ea\u52a8\u505c\u6b62\u4fdd\u62a4\n- \u2705 **\u53ef\u89c6\u5316\u62a5\u544a**: HTML\u4ea4\u4e92\u5f0f\u62a5\u544a\uff0cChart.js\u4e13\u4e1a\u56fe\u8868\n- \u2705 **\u591aGPU\u652f\u6301**: \u5e76\u884c\u6d4b\u8bd5\u591a\u4e2aGPU\u8bbe\u5907\n- \u2705 **CUDA\u517c\u5bb9**: \u652f\u6301CUDA Toolkit 12+\u548c\u4e3b\u6d41NVIDIA\u663e\u5361\n- \u2705 **\u591a\u683c\u5f0f\u8f93\u51fa**: JSON\u3001CSV\u3001HTML\u591a\u79cd\u62a5\u544a\u683c\u5f0f\n\n## \ud83d\udccb \u7cfb\u7edf\u8981\u6c42\n\n- **\u64cd\u4f5c\u7cfb\u7edf**: Linux (\u63a8\u8350Ubuntu 18.04+)\n- **\u786c\u4ef6**: NVIDIA\u663e\u5361\n- **\u8f6f\u4ef6**: \n - CUDA Toolkit 12.0+\n - NVIDIA\u9a71\u52a8\u7a0b\u5e8f\n - Python 3.8+\n\n## \ud83d\udd27 \u5b89\u88c5\n\n### \u65b9\u5f0f\u4e00\uff1aPyPI\u5b89\u88c5\n```bash\npip install gpu-benchmark-linux\n```\n\n### \u65b9\u5f0f\u4e8c\uff1a\u6e90\u7801\u5b89\u88c5\n```bash\ngit clone <\u9879\u76ee\u5730\u5740>\ncd GPUBenchmark/gpu_benchmark\npip install -e .\n```\n\n### \u4f9d\u8d56\u5305\n```bash\n# \u6838\u5fc3\u4f9d\u8d56\npip install cupy-cuda12x nvidia-ml-py3 numpy psutil\n```\n\n## \ud83c\udfaf \u5feb\u901f\u5f00\u59cb\n\n### \u547d\u4ee4\u884c\u4f7f\u7528\n\n```bash\n# \u8fd0\u884c\u6240\u6709\u6d4b\u8bd5\uff08\u9ed8\u8ba460\u79d2\uff09\npython3 -m gpu_benchmark_linux --test all\n\n# \u6307\u5b9a\u6d4b\u8bd5\u65f6\u95f4\uff085\u5206\u949f\uff09\npython3 -m gpu_benchmark_linux --test all --duration 300\n\n# \u6307\u5b9a\u8f93\u51fa\u76ee\u5f55\npython3 -m gpu_benchmark_linux --test all --output results\n\n# \u67e5\u770b\u5e2e\u52a9\npython3 -m gpu_benchmark_linux --help\n```\n\n### \u6d4b\u8bd5\u7c7b\u578b\n\n| \u6d4b\u8bd5\u7c7b\u578b | \u8bf4\u660e | \u7528\u9014 |\n|---------|------|------|\n| `env` | \u73af\u5883\u68c0\u67e5 | \u9a8c\u8bc1CUDA\u3001\u9a71\u52a8\u3001\u4f9d\u8d56 |\n| `cuda` | CUDA\u529f\u80fd\u6d4b\u8bd5 | GPU\u8ba1\u7b97\u6027\u80fd\u57fa\u51c6\u6d4b\u8bd5 |\n| `model` | \u6a21\u578b\u63a8\u7406\u6d4b\u8bd5 | AI\u6a21\u578b\u63a8\u7406\u6027\u80fd\u6d4b\u8bd5 |\n| `all` | \u5b8c\u6574\u6d4b\u8bd5\u5957\u4ef6 | \u5168\u9762\u7684GPU\u6027\u80fd\u8bc4\u4f30 |\n\n### \u7f16\u7a0b\u63a5\u53e3\n\n```python\nfrom gpu_benchmark_linux.stress_test import GPUStressTester, StressTestConfig\n\n# \u521b\u5efa\u6d4b\u8bd5\u914d\u7f6e\nconfig = StressTestConfig(\n duration=300, # 5\u5206\u949f\u6d4b\u8bd5\n device_ids=[0, 1], # \u6d4b\u8bd5GPU 0\u548c1\n test_types=['matrix_multiply', 'compute_intensive', 'memory_bandwidth'],\n temperature_limit=85.0, # \u6e29\u5ea6\u9650\u523685\u00b0C\n auto_stop_on_limit=True # \u8d85\u9650\u81ea\u52a8\u505c\u6b62\n)\n\n# \u8fd0\u884c\u538b\u529b\u6d4b\u8bd5\ntester = GPUStressTester()\nresult = tester.run_stress_test(config)\n\n# \u68c0\u67e5\u7ed3\u679c\nif result.success:\n print(f\"\u6d4b\u8bd5\u6210\u529f\uff01\u603bGFLOPS: {result.performance_metrics.get('total_gflops', 0)}\")\n print(f\"HTML\u62a5\u544a: {result.html_report_path}\") # \u81ea\u52a8\u751f\u6210HTML\u62a5\u544a\nelse:\n print(f\"\u6d4b\u8bd5\u5931\u8d25: {result.error_message}\")\n```\n\n## \ud83d\udcca \u8f93\u51fa\u6587\u4ef6\u8bf4\u660e\n\n\u6d4b\u8bd5\u5b8c\u6210\u540e\u4f1a\u5728\u8f93\u51fa\u76ee\u5f55\u751f\u6210\u4ee5\u4e0b\u6587\u4ef6\uff1a\n\n### 1. \u65e5\u5fd7\u6587\u4ef6\n```\nbenchmark_YYYYMMDD_HHMMSS.log # \u8be6\u7ec6\u7684\u6d4b\u8bd5\u65e5\u5fd7\n```\n\n### 2. JSON\u7ed3\u679c\u6587\u4ef6\n```\nstress_test_TIMESTAMP.json # \u673a\u5668\u53ef\u8bfb\u7684\u6d4b\u8bd5\u7ed3\u679c\n```\n\n### 3. HTML\u53ef\u89c6\u5316\u62a5\u544a \u2b50\n```\nbenchmark_report_YYYYMMDD_HHMMSS.html # \u4ea4\u4e92\u5f0f\u53ef\u89c6\u5316\u62a5\u544a\n```\n\n**HTML\u62a5\u544a\u5305\u542b**\uff1a\n- \ud83d\udcca \u7cfb\u7edf\u4fe1\u606f\u6982\u89c8\n- \u26a1 \u6027\u80fd\u6307\u6807\u4eea\u8868\u677f \n- \ud83d\udcc8 \u5b9e\u65f6\u76d1\u63a7\u56fe\u8868\uff08\u6e29\u5ea6\u3001\u529f\u8017\u3001\u5229\u7528\u7387\uff09\n- \ud83c\udfaf \u8bbe\u5907\u6d4b\u8bd5\u7ed3\u679c\u8be6\u60c5\n- \ud83d\udcc9 \u6027\u80fd\u5bf9\u6bd4\u56fe\u8868\n\n## \ud83d\udd0d \u6838\u5fc3\u529f\u80fd\u8be6\u89e3\n\n### 1. GPU\u538b\u529b\u6d4b\u8bd5\u7c7b\u578b\n\n#### \u77e9\u9635\u4e58\u6cd5\u6d4b\u8bd5\n- \u6d4b\u8bd5GPU\u6d6e\u70b9\u8ba1\u7b97\u6027\u80fd\n- \u8f93\u51faGFLOPS\u6027\u80fd\u6307\u6807\n- \u9a8c\u8bc1\u8ba1\u7b97\u7cbe\u5ea6\n\n#### \u8ba1\u7b97\u5bc6\u96c6\u578b\u6d4b\u8bd5 \n- \u6301\u7eed\u9ad8\u5f3a\u5ea6\u8ba1\u7b97\u8d1f\u8f7d\n- \u6d4b\u8bd5GPU\u7a33\u5b9a\u6027\n- \u8bc4\u4f30\u6563\u70ed\u6027\u80fd\n\n#### \u5185\u5b58\u5e26\u5bbd\u6d4b\u8bd5\n- \u6d4b\u8bd5GPU\u663e\u5b58\u5e26\u5bbd\n- \u8bc4\u4f30\u5185\u5b58\u5b50\u7cfb\u7edf\u6027\u80fd\n- \u68c0\u6d4b\u5185\u5b58\u9519\u8bef\n\n### 2. \u786c\u4ef6\u76d1\u63a7\u529f\u80fd\n\n```python\n# \u5b9e\u65f6\u76d1\u63a7\u793a\u4f8b\nfrom gpu_benchmark_linux.monitor import GPUMonitor\n\nmonitor = GPUMonitor()\nmonitor.start_monitoring(interval=1.0) # \u6bcf\u79d2\u91c7\u6837\n\n# \u83b7\u53d6\u5b9e\u65f6\u6570\u636e\nmetrics = monitor.get_current_metrics()\nfor metric in metrics:\n print(f\"GPU {metric.device_id}: {metric.temperature}\u00b0C, {metric.power_usage}W\")\n```\n\n### 3. \u5b89\u5168\u4fdd\u62a4\u673a\u5236\n\n- **\u6e29\u5ea6\u4fdd\u62a4**: \u8d85\u8fc7\u8bbe\u5b9a\u6e29\u5ea6\u81ea\u52a8\u505c\u6b62\u6d4b\u8bd5\n- **\u529f\u8017\u4fdd\u62a4**: \u529f\u8017\u8d85\u9650\u81ea\u52a8\u7ec8\u6b62\n- **\u5f02\u5e38\u5904\u7406**: \u5b8c\u5584\u7684\u9519\u8bef\u6062\u590d\u673a\u5236\n- **\u8d44\u6e90\u6e05\u7406**: \u6d4b\u8bd5\u7ed3\u675f\u81ea\u52a8\u6e05\u7406GPU\u8d44\u6e90\n\n## \ud83d\udcc8 \u6027\u80fd\u57fa\u51c6\u53c2\u8003\n\n| GPU\u578b\u53f7 | \u77e9\u9635\u4e58\u6cd5(GFLOPS) | \u5185\u5b58\u5e26\u5bbd(GB/s) | \u5178\u578b\u529f\u8017(W) |\n|---------|------------------|----------------|-------------|\n| RTX 4090 | 15000-20000 | 900-1000 | 350-450 |\n| RTX 4080 | 12000-15000 | 700-800 | 280-350 |\n| RTX 3090 | 10000-13000 | 800-900 | 300-400 |\n| RTX 3080 | 8000-11000 | 650-750 | 250-320 |\n| RTX 3070 | 6000-8000 | 450-550 | 200-250 |\n\n## \ud83d\udee0\ufe0f \u9ad8\u7ea7\u914d\u7f6e\n\n### \u81ea\u5b9a\u4e49\u6d4b\u8bd5\u53c2\u6570\n\n```python\nconfig = StressTestConfig(\n duration=600, # 10\u5206\u949f\u6d4b\u8bd5\n matrix_size=8192, # \u66f4\u5927\u7684\u77e9\u9635\uff08\u66f4\u9ad8\u8d1f\u8f7d\uff09\n memory_usage_ratio=0.9, # \u4f7f\u752890%\u663e\u5b58\n monitor_interval=0.5, # 0.5\u79d2\u76d1\u63a7\u95f4\u9694\n temperature_limit=80.0, # \u66f4\u4e25\u683c\u7684\u6e29\u5ea6\u9650\u5236\n power_limit_ratio=0.95, # \u529f\u8017\u9650\u5236\u6bd4\u4f8b\n)\n```\n\n### \u6dfb\u52a0\u6d4b\u8bd5\u56de\u8c03\n\n```python\ndef test_progress_callback(result):\n \"\"\"\u6d4b\u8bd5\u8fdb\u5ea6\u56de\u8c03\"\"\"\n print(f\"\u6d4b\u8bd5\u5b8c\u6210\uff0c\u8017\u65f6: {result.duration:.1f}\u79d2\")\n if result.success:\n print(\"\u2705 \u6240\u6709\u6d4b\u8bd5\u901a\u8fc7\")\n # \u81ea\u52a8\u53d1\u9001\u90ae\u4ef6\u901a\u77e5\u7b49\n else:\n print(\"\u274c \u6d4b\u8bd5\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5\u65e5\u5fd7\")\n\ntester.add_callback(test_progress_callback)\n```\n\n### \u6279\u91cf\u6d4b\u8bd5\u811a\u672c\n\n```python\n#!/usr/bin/env python3\n\"\"\"\u6279\u91cfGPU\u6d4b\u8bd5\u811a\u672c\"\"\"\n\nimport time\nfrom gpu_benchmark_linux.stress_test import GPUStressTester, StressTestConfig\n\ndef run_batch_tests():\n \"\"\"\u8fd0\u884c\u6279\u91cf\u6d4b\u8bd5\"\"\"\n test_configs = [\n (\"\u77ed\u65f6\u6d4b\u8bd5\", StressTestConfig(duration=60)),\n (\"\u4e2d\u7b49\u6d4b\u8bd5\", StressTestConfig(duration=300)),\n (\"\u957f\u65f6\u6d4b\u8bd5\", StressTestConfig(duration=1800)),\n ]\n \n tester = GPUStressTester()\n results = {}\n \n for name, config in test_configs:\n print(f\"\u5f00\u59cb {name}...\")\n result = tester.run_stress_test(config)\n results[name] = result\n \n if result.success:\n print(f\"\u2705 {name} \u5b8c\u6210\")\n else:\n print(f\"\u274c {name} \u5931\u8d25: {result.error_message}\")\n \n time.sleep(30) # \u6d4b\u8bd5\u95f4\u9694\n \n return results\n\nif __name__ == \"__main__\":\n run_batch_tests()\n```\n\n## \ud83d\udd27 \u6545\u969c\u6392\u9664\n\n### 1. CUDA\u4e0d\u53ef\u7528\n```bash\n# \u68c0\u67e5NVIDIA\u9a71\u52a8\nnvidia-smi\n\n# \u68c0\u67e5CUDA\u7248\u672c \nnvcc --version\n\n# \u5b89\u88c5CUDA Toolkit\n# \u8bbf\u95ee: https://developer.nvidia.com/cuda-toolkit\n```\n\n### 2. \u4f9d\u8d56\u5305\u95ee\u9898\n```bash\n# \u91cd\u65b0\u5b89\u88c5\u4f9d\u8d56\npip install --upgrade cupy-cuda12x nvidia-ml-py3 numpy\n\n# \u5982\u679cCuPy\u5b89\u88c5\u5931\u8d25\uff0c\u5c1d\u8bd5\u9884\u7f16\u8bd1\u7248\u672c\npip install cupy-cuda12x\n\n# \u68c0\u67e5CUDA\u7248\u672c\u517c\u5bb9\u6027\npython -c \"import cupy; print(cupy.cuda.runtime.runtimeGetVersion())\"\n```\n\n### 3. \u6743\u9650\u95ee\u9898\n```bash\n# \u786e\u4fdd\u7528\u6237\u5728docker\u7ec4\u4e2d\uff08\u5982\u679c\u4f7f\u7528Docker\uff09\nsudo usermod -a -G docker $USER\n\n# \u68c0\u67e5GPU\u8bbe\u5907\u6743\u9650\nls -la /dev/nvidia*\n\n# \u91cd\u65b0\u767b\u5f55\u6216\u91cd\u542f\n```\n\n### 4. \u5185\u5b58\u4e0d\u8db3\n```bash\n# \u68c0\u67e5GPU\u5185\u5b58\nnvidia-smi\n\n# \u964d\u4f4e\u5185\u5b58\u4f7f\u7528\u6bd4\u4f8b\nconfig.memory_usage_ratio = 0.7 # \u4f7f\u752870%\u663e\u5b58\n```\n\n### 5. \u6e29\u5ea6\u8fc7\u9ad8\n```bash\n# \u68c0\u67e5\u6563\u70ed\nnvidia-smi -q -d TEMPERATURE\n\n# \u964d\u4f4e\u6e29\u5ea6\u9650\u5236\nconfig.temperature_limit = 75.0 # 75\u00b0C\u9650\u5236\n\n# \u6539\u5584\u6563\u70ed\u73af\u5883\n```\n\n## \ud83d\udcc1 \u9879\u76ee\u7ed3\u6784\n\n```\ngpu_benchmark_linux/\n\u251c\u2500\u2500 __init__.py # \u5305\u521d\u59cb\u5316\n\u251c\u2500\u2500 __main__.py # \u547d\u4ee4\u884c\u5165\u53e3\n\u251c\u2500\u2500 benchmark.py # \u57fa\u51c6\u6d4b\u8bd5\u96c6\u6210\n\u251c\u2500\u2500 cuda_ops.py # CUDA\u8ba1\u7b97\u64cd\u4f5c\u5c01\u88c5\n\u251c\u2500\u2500 monitor.py # GPU\u786c\u4ef6\u76d1\u63a7\n\u251c\u2500\u2500 stress_test.py # \u538b\u529b\u6d4b\u8bd5\u6838\u5fc3\u903b\u8f91\n\u251c\u2500\u2500 reporter.py # \u7ed3\u679c\u8f93\u51fa\u7ba1\u7406\n\u251c\u2500\u2500 html_reporter.py # HTML\u53ef\u89c6\u5316\u62a5\u544a\u751f\u6210\u5668\n\u251c\u2500\u2500 exceptions.py # \u9519\u8bef\u5904\u7406\u673a\u5236\n\u251c\u2500\u2500 utils.py # \u5de5\u5177\u51fd\u6570\u5e93\n\u2514\u2500\u2500 tests/ # \u5355\u5143\u6d4b\u8bd5\n \u251c\u2500\u2500 __init__.py\n \u251c\u2500\u2500 cuda_tests.py\n \u2514\u2500\u2500 model_tests.py\n```\n\n## \ud83d\udd04 \u66f4\u65b0\u65e5\u5fd7\n\n### v0.1.9 (\u5f53\u524d\u7248\u672c)\n- \u2705 **\u91cd\u5927\u66f4\u65b0**: \u5b8c\u5168\u79fb\u9664gpu burn\u4f9d\u8d56\n- \u2705 **\u65b0\u529f\u80fd**: \u5b9e\u73b0\u5168\u65b0\u7684CUDA\u538b\u529b\u6d4b\u8bd5\u65b9\u6848\n- \u2705 **\u53ef\u89c6\u5316**: \u6dfb\u52a0HTML\u4ea4\u4e92\u5f0f\u62a5\u544a\u529f\u80fd\n- \u2705 **\u517c\u5bb9\u6027**: \u652f\u6301CUDA Toolkit 12+\n- \u2705 **\u76d1\u63a7**: \u589e\u5f3a\u7684\u786c\u4ef6\u76d1\u63a7\u529f\u80fd\n- \u2705 **\u67b6\u6784**: \u6a21\u5757\u5316\u67b6\u6784\u91cd\u6784\n- \u2705 **\u7a33\u5b9a\u6027**: \u6539\u8fdb\u7684\u9519\u8bef\u5904\u7406\u673a\u5236\n- \u2705 **\u5b89\u5168\u6027**: \u5b8c\u5584\u7684\u6e29\u5ea6\u548c\u529f\u8017\u4fdd\u62a4\n\n### v0.1.8\n- \u57fa\u7840GPU\u6d4b\u8bd5\u529f\u80fd\n- \u7b80\u5355\u7684\u7ed3\u679c\u8f93\u51fa\n\n## \ud83e\udd1d \u8d21\u732e\u6307\u5357\n\n\u6b22\u8fce\u63d0\u4ea4Issue\u548cPull Request\uff01\n\n### \u5f00\u53d1\u73af\u5883\u8bbe\u7f6e\n```bash\ngit clone <\u9879\u76ee\u5730\u5740>\ncd gpu_benchmark\npip install -e \".[dev]\"\n```\n\n### \u8fd0\u884c\u6d4b\u8bd5\n```bash\npython -m pytest gpu_benchmark_linux/tests/\n```\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\nMIT License - \u8be6\u89c1 [LICENSE](LICENSE) \u6587\u4ef6\n\n## \ud83c\udd98 \u6280\u672f\u652f\u6301\n\n\u5982\u679c\u9047\u5230\u95ee\u9898\uff0c\u8bf7\uff1a\n\n1. **\u68c0\u67e5\u7cfb\u7edf\u8981\u6c42**: \u786e\u4fdd\u6ee1\u8db3\u6700\u4f4e\u786c\u4ef6\u548c\u8f6f\u4ef6\u8981\u6c42\n2. **\u67e5\u770b\u65e5\u5fd7**: \u68c0\u67e5\u8be6\u7ec6\u7684\u65e5\u5fd7\u6587\u4ef6\u83b7\u53d6\u9519\u8bef\u4fe1\u606f \n3. **\u53c2\u8003\u6587\u6863**: \u67e5\u770b\u6545\u969c\u6392\u9664\u90e8\u5206\n4. **\u63d0\u4ea4Issue**: \u5728GitHub\u4e0a\u63d0\u4ea4\u8be6\u7ec6\u7684\u95ee\u9898\u62a5\u544a\n\n---\n\n**\u26a0\ufe0f \u91cd\u8981\u63d0\u793a**: \u672c\u5de5\u5177\u8bbe\u8ba1\u7528\u4e8e\u4e13\u4e1a\u7684GPU\u6027\u80fd\u6d4b\u8bd5\u548c\u538b\u529b\u6d4b\u8bd5\uff0c\u8bf7\u5728\u826f\u597d\u901a\u98ce\u7684\u73af\u5883\u4e0b\u4f7f\u7528\uff0c\u5e76\u6ce8\u610f\u76d1\u63a7\u786c\u4ef6\u6e29\u5ea6\uff0c\u907f\u514d\u786c\u4ef6\u635f\u574f\u3002\n\n**\ud83c\udfaf \u9879\u76ee\u76ee\u6807**: \u63d0\u4f9b\u6bd4gpu burn\u66f4\u5f3a\u5927\u3001\u66f4\u5b89\u5168\u3001\u66f4\u6613\u7528\u7684GPU\u538b\u529b\u6d4b\u8bd5\u89e3\u51b3\u65b9\u6848\u3002\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "GPU\u57fa\u51c6\u6d4b\u8bd5\u5de5\u5177 - \u7528\u4e8e\u8bc4\u4f30NVIDIA GPU\u6027\u80fd\u7684\u7efc\u5408\u5de5\u5177\u5305",
"version": "0.4.4",
"project_urls": {
"Bug Tracker": "https://github.com/yourusername/gpu-benchmark-linux/issues",
"Documentation": "https://github.com/yourusername/gpu-benchmark-linux#readme",
"Homepage": "https://github.com/yourusername/gpu-benchmark-linux"
},
"split_keywords": [
"gpu",
" benchmark",
" cuda",
" nvidia",
" testing",
" performance"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "7dba20cf5d3661dcf5d53d5e80e1c6728d64e0bee3de01ee10d45ca5d3335249",
"md5": "ef4109a42b4703257800c6fe2ccad632",
"sha256": "d21595a2f6af9e3e67cb4e87779e0d0173997f419f12231c7694e766067ca75d"
},
"downloads": -1,
"filename": "gpu_benchmark_linux-0.4.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ef4109a42b4703257800c6fe2ccad632",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 108964,
"upload_time": "2025-08-19T09:55:06",
"upload_time_iso_8601": "2025-08-19T09:55:06.966782Z",
"url": "https://files.pythonhosted.org/packages/7d/ba/20cf5d3661dcf5d53d5e80e1c6728d64e0bee3de01ee10d45ca5d3335249/gpu_benchmark_linux-0.4.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6a3ffe0884b38e508f1ce556c8dbfe3d8814e13febb37e4af9b81d64f3fbd665",
"md5": "148a5a26a2b3799636fb272d26879044",
"sha256": "1703f4cc85d969974cae0be2e351d6f5b4804bb56d290a1e4933180989da1381"
},
"downloads": -1,
"filename": "gpu_benchmark_linux-0.4.4.tar.gz",
"has_sig": false,
"md5_digest": "148a5a26a2b3799636fb272d26879044",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 96446,
"upload_time": "2025-08-19T09:55:09",
"upload_time_iso_8601": "2025-08-19T09:55:09.074117Z",
"url": "https://files.pythonhosted.org/packages/6a/3f/fe0884b38e508f1ce556c8dbfe3d8814e13febb37e4af9b81d64f3fbd665/gpu_benchmark_linux-0.4.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-19 09:55:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yourusername",
"github_project": "gpu-benchmark-linux",
"github_not_found": true,
"lcname": "gpu-benchmark-linux"
}