#!/bin/bash # Lab4 CUDA 程序实验数据收集脚本 SCRIPT_DIR="$(dirname "$0")" OUTPUT_DIR="$SCRIPT_DIR/experiment_data" mkdir -p "$OUTPUT_DIR" ARCH=$(uname -m) if [ "$ARCH" == "aarch64" ]; then BUILD_ARCH="arm64-v8a" else BUILD_ARCH="x86_64" fi echo "==========================================" echo "Lab4 CUDA 实验数据收集" echo "==========================================" echo "数据输出目录: $OUTPUT_DIR" echo "" # 检查 CUDA 设备 echo "检查 CUDA 设备..." nvidia-smi | tee "$OUTPUT_DIR/gpu_info.txt" echo "" # 进入构建目录 # cd "$SCRIPT_DIR/build/linux/$BUILD_ARCH/release" || exit 1 echo "==========================================" echo "实验 4.2: 向量加法 - 不同数据规模测试" echo "==========================================" $SCRIPT_DIR/build/linux/$BUILD_ARCH/release/vectoradd | tee "$OUTPUT_DIR/vectoradd_results.txt" echo "" echo "==========================================" echo "实验 4.3.1: CPU vs GPU 矩阵乘法性能对比" echo "==========================================" echo "=== CPU (OpenMP) 不同线程数 ===" | tee -a "$OUTPUT_DIR/matrixmul_comparison.txt" $SCRIPT_DIR/build/linux/$BUILD_ARCH/release/MatrixMul_cpu | tee -a "$OUTPUT_DIR/matrixmul_comparison.txt" echo "" echo "=== CUDA Kernel1 (基础版本) ===" | tee -a "$OUTPUT_DIR/matrixmul_comparison.txt" $SCRIPT_DIR/build/linux/$BUILD_ARCH/release/MatrixMul_kernel1 | tee -a "$OUTPUT_DIR/matrixmul_comparison.txt" echo "" echo "=== CUDA Kernel2 (共享内存优化) ===" | tee -a "$OUTPUT_DIR/matrixmul_comparison.txt" $SCRIPT_DIR/build/linux/$BUILD_ARCH/release/MatrixMul_kernel2 | tee -a "$OUTPUT_DIR/matrixmul_comparison.txt" echo "" echo "==========================================" echo "实验 4.3.2: 不同 BLOCK_SIZE 对性能的影响" echo "==========================================" $SCRIPT_DIR/build/linux/$BUILD_ARCH/release/matrixmultiply_block_size_change | tee "$OUTPUT_DIR/blocksize_analysis.txt" echo "" echo "==========================================" echo "实验数据收集完成!" echo "数据保存在: $OUTPUT_DIR" echo "=========================================="