38 lines
1.2 KiB
Bash
Executable File
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"
|