hpc-lab-code/lab3/prime/test_performance.sh
2026-01-21 18:02:30 +08:00

38 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
# 性能测试脚本 - 测试不同进程数和N值的加速比
echo "=========================================="
echo "Prime Number Performance Analysis"
echo "=========================================="
echo ""
OUTPUT_FILE="performance_analysis.txt"
> $OUTPUT_FILE
echo "N值 进程数 时间(秒) 加速比 效率" | tee -a $OUTPUT_FILE
echo "--------------------------------------------------------" | tee -a $OUTPUT_FILE
N_VALUES=(100000 200000 400000 800000)
PROCESS_COUNTS=(1 2 4 6 8)
for N in "${N_VALUES[@]}"; do
echo ""
echo "Testing N = $N"
echo "------------------------"
# 获取单进程时间作为基准
BASELINE_TIME=$(mpirun --oversubscribe -np 1 ./build/linux/x86_64/release/prime_par_naive $N 2>&1 | grep "Time =" | grep -oP '[0-9.]+')
for P in "${PROCESS_COUNTS[@]}"; do
TIME=$(mpirun --oversubscribe -np $P ./build/linux/x86_64/release/prime_par_naive $N 2>&1 | grep "Time =" | grep -oP '[0-9.]+')
SPEEDUP=$(echo "scale=2; $BASELINE_TIME / $TIME" | bc)
EFFICIENCY=$(echo "scale=2; $SPEEDUP / $P * 100" | bc)
echo "$N $P $TIME ${SPEEDUP}x ${EFFICIENCY}%" | tee -a $OUTPUT_FILE
done
done
echo ""
echo "Results saved to: $OUTPUT_FILE"