146 lines
2.9 KiB
Markdown
146 lines
2.9 KiB
Markdown
# Lab4 快速开始指南
|
||
|
||
## 一、编译程序
|
||
|
||
```bash
|
||
cd /home/yly/dev/hpc-lab-code/lab4
|
||
xmake
|
||
```
|
||
|
||
## 二、运行实验并收集数据
|
||
|
||
```bash
|
||
./lab4.sh
|
||
```
|
||
|
||
这将:
|
||
1. 检查 GPU 信息
|
||
2. 运行所有 CUDA 程序
|
||
3. 将结果保存到 `experiment_data/` 目录
|
||
|
||
## 三、生成图表 (可选)
|
||
|
||
### 安装依赖
|
||
```bash
|
||
pip install matplotlib numpy
|
||
```
|
||
|
||
### 运行绘图脚本
|
||
```bash
|
||
./plot_results.py
|
||
```
|
||
|
||
图表将保存到 `experiment_data/figures/` 目录
|
||
|
||
## 四、查看实验数据
|
||
|
||
所有数据文件位于 `experiment_data/`:
|
||
- `gpu_info.txt` - GPU 硬件信息
|
||
- `vectoradd_results.txt` - 向量加法测试结果
|
||
- `matrixmul_comparison.txt` - CPU vs GPU 对比数据
|
||
- `blocksize_analysis.txt` - BLOCK_SIZE 分析数据
|
||
|
||
## 五、填写实验报告
|
||
|
||
参考 `实验报告模板.md`,其中包含:
|
||
- 所有思考题的详细解答
|
||
- 需要填写的性能数据表格
|
||
- 图表分析指导
|
||
|
||
## 文件说明
|
||
|
||
### 源代码
|
||
- `vectoradd.cu` - 向量加法 (实验 4.2)
|
||
- `MatrixMul_cpu.cu` - CPU OpenMP 矩阵乘法
|
||
- `MatrixMul_kernel1.cu` - CUDA 基础版本
|
||
- `MatrixMul_kernel2.cu` - CUDA 共享内存优化
|
||
- `matrixmultiply_block_size_change.cu` - BLOCK_SIZE 性能测试
|
||
|
||
### 脚本和配置
|
||
- `xmake.lua` - 构建配置
|
||
- `lab4.sh` - 实验数据收集脚本
|
||
- `plot_results.py` - 自动生成图表
|
||
- `README.md` - 详细实验说明
|
||
- `实验报告模板.md` - 报告模板
|
||
|
||
## 常见问题
|
||
|
||
### Q: 编译失败,提示找不到 CUDA
|
||
A: 确保 CUDA 已安装,并设置环境变量:
|
||
```bash
|
||
export CUDA_HOME=/usr/local/cuda
|
||
export PATH=$CUDA_HOME/bin:$PATH
|
||
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
|
||
```
|
||
|
||
### Q: 运行时提示 "no CUDA-capable device is detected"
|
||
A: 检查 GPU 驱动:
|
||
```bash
|
||
nvidia-smi
|
||
```
|
||
|
||
### Q: Python 脚本运行失败
|
||
A: 安装必要的依赖:
|
||
```bash
|
||
pip install matplotlib numpy
|
||
```
|
||
|
||
### Q: 想单独运行某个程序
|
||
A:
|
||
```bash
|
||
cd build/linux/x86_64/release
|
||
./vectoradd
|
||
./MatrixMul_cpu
|
||
./MatrixMul_kernel1
|
||
./MatrixMul_kernel2
|
||
./matrixmultiply_block_size_change
|
||
```
|
||
|
||
## 实验报告要点
|
||
|
||
### 必须回答的问题
|
||
|
||
**思考题**:
|
||
1. Kernel1 的数据划分策略
|
||
2. Kernel2 的优化策略和线程同步的必要性
|
||
3. Kernel2 的进一步优化空间
|
||
|
||
**实验数据**:
|
||
- 向量加法: 数据规模 vs 时间
|
||
- 矩阵乘法: CPU vs GPU 性能对比
|
||
- BLOCK_SIZE: 对性能的影响
|
||
|
||
**图表**:
|
||
- 使用 `plot_results.py` 自动生成
|
||
- 或手动使用 Excel/Python/matplotlib
|
||
|
||
### 性能分析要点
|
||
|
||
**加速比计算**:
|
||
```
|
||
加速比 = 基准时间 / 优化后时间
|
||
```
|
||
|
||
**FLOPS 计算**:
|
||
```
|
||
矩阵乘法: 2 × M × N × K 次浮点运算
|
||
GFLOPS = 运算次数 / (时间秒 × 10^9)
|
||
```
|
||
|
||
**关键指标**:
|
||
- 运行时间 (ms)
|
||
- GFLOPS (计算性能)
|
||
- 加速比 (相对提升)
|
||
- 带宽利用率
|
||
|
||
## 下一步
|
||
|
||
1. ✓ 编译程序
|
||
2. ✓ 运行实验
|
||
3. ✓ 生成图表
|
||
4. ⏭ 填写实验报告模板
|
||
5. ⏭ 分析数据并得出结论
|
||
6. ⏭ 提交实验报告
|
||
|
||
祝实验顺利!
|