hpc-lab-code/work/test_experiments.sh
2026-01-21 18:02:30 +08:00

59 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# 快速测试脚本 - 验证run_experiments.sh的基本功能
echo "=========================================="
echo "快速实验测试"
echo "=========================================="
# 设置较小的测试参数
MATRIX_SIZES="512 1024"
MPI_PROCESSES="1 2"
OPENMP_THREADS="1 2"
OUTPUT_FILE="test_experiment_results.csv"
SERIAL_OUTPUT="test_serial_results.csv"
# 创建输出文件
echo "Experiment,M,N,K,MPI_Processes,OpenMP_Threads,Time_ms,Speedup,Efficiency" > $OUTPUT_FILE
echo "M,N,K,Time_ms" > $SERIAL_OUTPUT
echo "1. 串行基准测试..."
for SIZE in $MATRIX_SIZES; do
echo " 测试 ${SIZE}x${SIZE}x${SIZE}"
TIME=$(./gemm_serial $SIZE $SIZE $SIZE 0 | grep "matmul:" | awk '{print $2}')
echo "$SIZE,$SIZE,$SIZE,$TIME" >> $SERIAL_OUTPUT
done
echo ""
echo "2. MPI并行测试..."
export OMP_NUM_THREADS=1
for SIZE in $MATRIX_SIZES; do
SERIAL_TIME=$(grep "^$SIZE," $SERIAL_OUTPUT | cut -d',' -f4)
echo " 矩阵 ${SIZE}x${SIZE}x${SIZE}, 串行时间: ${SERIAL_TIME} ms"
for NP in $MPI_PROCESSES; do
echo " 测试 $NP 个MPI进程..."
TIME=$(mpirun --oversubscribe -np $NP ./gemm_parallel $SIZE $SIZE $SIZE | grep "mpi matmul:" | awk '{print $3}')
if [ ! -z "$TIME" ]; then
SPEEDUP=$(echo "scale=4; $SERIAL_TIME / $TIME" | bc)
EFFICIENCY=$(echo "scale=4; $SPEEDUP / $NP" | bc)
echo " 时间: ${TIME} ms, 加速比: $SPEEDUP, 效率: $EFFICIENCY"
echo "Exp1,$SIZE,$SIZE,$SIZE,$NP,1,$TIME,$SPEEDUP,$EFFICIENCY" >> $OUTPUT_FILE
fi
done
done
echo ""
echo "=========================================="
echo "快速测试完成!"
echo "结果文件: $OUTPUT_FILE"
echo "=========================================="
echo ""
echo "查看结果:"
cat $OUTPUT_FILE
echo ""
echo "如果以上测试正常,则可以运行完整的实验:"
echo " ./run_experiments.sh"