# gpu-benchmark **Repository Path**: limylily/gpu-benchmark ## Basic Information - **Project Name**: gpu-benchmark - **Description**: 测试gpu性能 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-27 - **Last Updated**: 2025-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # A100 GPU 性能测试框架 这是一个针对NVIDIA A100 GPU(80GB SXM4,驱动550)的完整性能测试框架,专门用于深度学习训练和推理场景的性能评估。 ## 目录结构 ``` benchmarks/ ├── scripts/ │ ├── utils/ # 工具脚本 │ │ ├── gpu_info.py # GPU信息检查 │ │ └── report_generator.py # 报告生成 │ ├── benchmark/ # 基准测试 │ │ ├── memory_bandwidth.py # 内存带宽测试 │ │ └── compute_performance.py # 计算性能测试 │ ├── training/ # 训练性能测试 │ │ └── training_benchmark.py │ └── inference/ # 推理性能测试 │ └── inference_benchmark.py ├── output/ # 测试结果JSON文件 ├── results/ # 生成的报告文件 ├── logs/ # 测试日志 ├── run_in_container.sh # 容器运行脚本 ├── Dockerfile # Docker镜像构建文件(可选) └── README.md # 本文档 ``` ## 系统要求 - **硬件**: 4x NVIDIA A100 80GB SXM4 - **驱动版本**: 550.163.01 ## 测试指标 ### 1. GPU硬件信息 - GPU型号、显存容量 - 驱动版本、CUDA版本 - 计算能力 - 功耗限制 - PCIe信息 ### 2. 内存带宽测试 - Host to Device 传输带宽 - Device to Host 传输带宽 - Device to Device 传输带宽(同一GPU内) - 内存读写带宽 - 多GPU P2P带宽 ### 3. 计算性能测试 - **GEMM性能** (不同精度): - FP32 (单精度) - FP16 (半精度) - BF16 (Brain Float) - **卷积性能** (模拟深度学习): - 不同批次大小 - 不同精度 ### 4. 训练性能测试 - **单GPU训练**: - 不同精度 (FP32, FP16, BF16) - 不同批次大小 - 吞吐量 (samples/sec) - 延迟统计 (P50, P95, P99) - **多GPU训练**: - DataParallel性能 - 多GPU扩展效率 - 总吞吐量 ### 5. 推理性能测试 - **单GPU推理**: - 不同精度 (FP32, FP16) - 不同批次大小 - 延迟 (平均、P50、P95、P99) - QPS (Queries Per Second) - **多GPU推理**: - 多GPU并行推理 - 总QPS - **吞吐量 vs 延迟权衡**: - 不同批次大小下的性能曲线 ## 使用方法 ### 快速开始 使用vllm/vllm-openai:v0.10.2的容器: ```bash cd benchmarks chmod +x run_in_container.sh ./run_in_container.sh ``` **容器运行的优势**: - 环境隔离,不影响宿主机 - 使用预配置的容器镜像(如vllm容器已包含PyTorch) - 便于在不同环境中复现测试 **注意事项**: - 需要Docker和nvidia-docker支持 - vllm/vllm-openai:v0.10.2镜像已包含PyTorch 2.8.0+cu128 (CUDA 12.8) - 脚本会自动覆盖镜像的ENTRYPOINT(vLLM API服务器) - 测试结果会保存在宿主机挂载的目录中 ### 单独运行测试 #### 1. GPU信息检查 ```bash python3 scripts/utils/gpu_info.py output/ ``` #### 2. 内存带宽测试 ```bash python3 scripts/benchmark/memory_bandwidth.py output/ ``` #### 3. 计算性能测试 ```bash python3 scripts/benchmark/compute_performance.py output/ ``` #### 4. 训练性能测试 ```bash python3 scripts/training/training_benchmark.py output/ ``` #### 5. 推理性能测试 ```bash python3 scripts/inference/inference_benchmark.py output/ ``` #### 6. 生成报告 ```bash python3 scripts/utils/report_generator.py output/ results/ ``` ## 输出文件 ### JSON结果文件 (output/) - `gpu_info_YYYYMMDD_HHMMSS.json` - GPU硬件信息 - `memory_bandwidth_YYYYMMDD_HHMMSS.json` - 内存带宽测试结果 - `compute_performance_YYYYMMDD_HHMMSS.json` - 计算性能测试结果 - `training_performance_YYYYMMDD_HHMMSS.json` - 训练性能测试结果 - `inference_performance_YYYYMMDD_HHMMSS.json` - 推理性能测试结果 ### 报告文件 (results/) - `report_YYYYMMDD_HHMMSS.md` - Markdown格式详细报告 - `report_YYYYMMDD_HHMMSS.html` - HTML格式报告 - `summary_YYYYMMDD_HHMMSS.txt` - 简要汇总报告 ### 日志文件 (logs/) - 各测试的详细日志输出 ## 性能指标说明 ### 内存带宽 - **单位**: GB/s (千兆字节每秒) 或 Gbps (千兆比特每秒) - **A100 80GB理论值**: ~1,935 GB/s (HBM2e) ### 计算性能 - **FLOPS**: Floating Point Operations Per Second - **TFLOPS**: Tera FLOPS (10^12 FLOPS) - **A100理论峰值**: - FP32: ~19.5 TFLOPS - FP16 (Tensor Core): ~312 TFLOPS - BF16 (Tensor Core): ~312 TFLOPS ### 训练性能 - **吞吐量**: samples/sec 或 images/sec - **延迟**: 每次迭代的平均时间 (ms) - **百分位延迟**: P50, P95, P99 ### 推理性能 - **QPS**: Queries Per Second (每秒查询数) - **延迟**: 单次推理的平均延迟 (ms) - **吞吐量**: 每秒处理的样本数 ## 自定义测试 ### 修改批次大小范围 编辑相应的测试脚本,修改 `batch_size` 或 `batch_sizes` 参数。 ### 修改迭代次数 修改 `num_iterations` 参数以调整测试精度和耗时。 ### 添加自定义模型 在训练/推理测试脚本中替换 `ResNet50` 模型为你的自定义模型。 ## 注意事项 1. **内存限制**: 某些大批次大小测试可能会因显存不足而失败,这是正常的。 2. **测试时间**: 完整测试套件可能需要较长时间(1-2小时),取决于硬件配置。 3. **环境隔离**: 建议在测试时关闭其他GPU密集型任务。 4. **温度监控**: 长时间测试时注意GPU温度,确保散热良好。 ## 故障排除 ### 显存不足 - 减小批次大小 - 减少测试的矩阵大小 - 关闭其他占用GPU的程序 ### 容器运行问题 **问题1: 容器内无法访问GPU** ```bash # 检查nvidia-docker是否安装 docker run --rm --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smi # 如果失败,安装nvidia-container-toolkit # Ubuntu/Debian: sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker ``` **问题2: 权限问题** ```bash # 确保脚本有执行权限 chmod +x run_in_container.sh chmod +x scripts/**/*.py ``` ## 许可证 本测试框架仅供内部使用。 ## 联系方式 如有问题或建议,请联系开发团队。