5.4 KiB
5.4 KiB
Lab4 CUDA 实验项目 - 使用指南
项目概述
本项目为 Lab4 CUDA 程序实验提供了完整的构建系统、数据收集和分析工具。
已创建的文件:
- ✓
xmake.lua- 构建配置 - ✓
lab4.sh- 完整实验数据收集脚本 - ✓
test_quick.sh- 快速测试脚本 - ✓
plot_results.py- Python 数据可视化脚本 - ✓
README.md- 详细实验说明 - ✓
QUICKSTART.md- 快速开始指南 - ✓
实验报告模板.md- 实验报告模板 - ✓
SETUP_SUMMARY.md- 项目设置总结
快速开始
1. 编译程序
cd /home/yly/dev/hpc-lab-code/lab4
xmake
2. 快速测试(验证一切正常)
./test_quick.sh
3. 运行完整实验
./lab4.sh
注意: 完整实验可能需要几分钟时间,因为会测试多个矩阵规模和配置。
4. 生成图表(可选)
# 安装依赖
pip install matplotlib numpy
# 生成图表
./plot_results.py
实验内容
实验 4.2: 向量加法
程序: vectoradd.cu
测试内容:
- 不同数据规模: 128, 256, 512, 1024, 2048
- 测量执行时间
- 验证结果正确性
数据输出: experiment_data/vectoradd_results.txt
实验 4.3: 矩阵乘法优化
思考题
详见 实验报告模板.md,包含:
- Kernel1 的数据划分策略
- Kernel2 的优化策略和线程同步的必要性
- Kernel2 的进一步优化空间
实验一: CPU vs GPU 性能对比
程序:
MatrixMul_cpu.cu- CPU OpenMP 实现MatrixMul_kernel1.cu- CUDA 基础版本MatrixMul_kernel2.cu- CUDA 共享内存优化
测试内容:
- CPU: 不同线程数 (1, 8, 64, 256)
- GPU: 不同矩阵规模 (512, 1024, 2048, 4096)
- 性能指标: 时间、GFLOPS、加速比
数据输出: experiment_data/matrixmul_comparison.txt
实验二: BLOCK_SIZE 性能影响
程序: matrixmultiply_block_size_change.cu
测试内容:
- 不同 BLOCK_SIZE: 4, 8, 16, 32
- 不同矩阵规模: 256, 512, 1024, 2048
- 性能指标: 时间、GFLOPS
数据输出: experiment_data/blocksize_analysis.txt
实验报告
报告模板
使用 实验报告模板.md 作为起点,其中包含:
- 思考题详细解答
- 性能数据表格
- 图表分析框架
- 实验总结指导
需要提交的内容
- 思考题答案
- 性能数据表格
- 性能对比图表
- 数据分析和结论
- 优化建议
图表生成
方法一: 使用 Python 脚本(推荐)
./plot_results.py
生成的图表位于 experiment_data/figures/
方法二: 手动绘制
- 将数据复制到 Excel
- 使用 Excel 或其他工具绘制图表
性能分析
关键指标
加速比:
加速比 = 基准时间 / 优化后时间
GFLOPS:
矩阵乘法: 2 × M × N × K 次浮点运算
GFLOPS = 运算次数 / (时间秒 × 10^9)
效率:
效率 = 加速比 / 处理器核心数
分析要点
-
CPU vs GPU:
- GPU 在大规模矩阵上的优势
- 内存带宽的影响
- 并行度的差异
-
Kernel1 vs Kernel2:
- 共享内存的优化效果
- 全局内存访问次数的减少
- 性能提升的原因
-
BLOCK_SIZE 影响:
- 最优 BLOCK_SIZE 的选择
- 占用率 (Occupancy) 的平衡
- 不同矩阵规模的最优配置
常见问题
Q1: 编译失败
A: 检查 CUDA 安装:
nvidia-smi
nvcc --version
Q2: 程序运行很慢
A: 这是正常的,特别是大矩阵测试。可以:
- 使用
test_quick.sh进行快速验证 - 修改源文件中的测试规模
- 耐心等待完整实验完成
Q3: 想修改测试参数
A: 编辑对应的 .cu 文件:
vectoradd.cu: 修改testSizes数组MatrixMul_*.cu: 修改sizes数组matrixmultiply_block_size_change.cu: 修改block_sizes和matrix_sizes
Q4: Python 脚本报错
A: 安装依赖:
pip install matplotlib numpy
项目结构
lab4/
├── *.cu # CUDA 源代码
├── xmake.lua # 构建配置
├── lab4.sh # 完整实验脚本
├── test_quick.sh # 快速测试脚本
├── plot_results.py # Python 绘图脚本
├── README.md # 详细说明
├── QUICKSTART.md # 快速开始
├── 实验报告模板.md # 报告模板
├── SETUP_SUMMARY.md # 设置总结
├── 使用指南.md # 本文件
│
├── build/ # 编译输出
│ └── linux/x86_64/release/
│ └── [可执行文件]
│
└── experiment_data/ # 实验数据
├── gpu_info.txt
├── vectoradd_results.txt
├── matrixmul_comparison.txt
├── blocksize_analysis.txt
└── figures/ # 生成的图表
下一步
- ✓ 编译程序:
xmake - ✓ 快速测试:
./test_quick.sh - ⏭ 运行完整实验:
./lab4.sh - ⏭ 生成图表:
./plot_results.py - ⏭ 填写实验报告
- ⏭ 提交报告
技术支持
如有问题,请检查:
README.md- 详细的实验说明QUICKSTART.md- 常见问题解答实验报告模板.md- 思考题解答
总结
本项目提供了:
- ✓ 完整的构建系统
- ✓ 自动化数据收集
- ✓ Python 数据可视化
- ✓ 详细的文档和模板
- ✓ 快速测试工具
祝实验顺利!