|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- #!/bin/bash
-
- # GPU高性能并行计算算法优化竞赛 - 统一编译脚本
- # 调用各个独立的build_and_run脚本来编译所有算法
-
- # 加载公共配置
- source "$(dirname "$0")/build_common.sh"
-
- # 显示帮助信息
- show_help() {
- echo "GPU算法竞赛统一编译和运行脚本"
- echo "用法: $0 [选项]"
- echo ""
- echo "选项:"
- echo " --help 显示帮助信息"
- echo " --build-only 仅编译所有算法,不运行测试"
- echo " --run_reduce 编译并运行ReduceSum算法测试"
- echo " --run_sort 编译并运行SortPair算法测试"
- echo " --run_topk 编译并运行TopkPair算法测试"
- echo ""
- echo "示例:"
- echo " $0 # 编译并运行所有测试(默认行为)"
- echo " $0 --build-only # 仅编译所有算法"
- echo " $0 --run_sort # 编译并运行SortPair测试"
- echo ""
- echo "单独算法脚本:"
- echo " ./build_and_run_reduce_sum.sh # 仅处理ReduceSum"
- echo " ./build_and_run_sort_pair.sh # 仅处理SortPair"
- echo " ./build_and_run_topk_pair.sh # 仅处理TopkPair"
- echo ""
- }
-
- # 解析命令行参数
- RUN_MODE="run_all" # 默认为编译并运行所有测试
-
- while [[ $# -gt 0 ]]; do
- case $1 in
- --help)
- show_help
- exit 0
- ;;
- --build-only)
- RUN_MODE="build_only"
- shift
- ;;
- --run_reduce)
- RUN_MODE="run_reduce"
- shift
- ;;
- --run_sort)
- RUN_MODE="run_sort"
- shift
- ;;
- --run_topk)
- RUN_MODE="run_topk"
- shift
- ;;
- *)
- print_error "未知选项: $1"
- show_help
- exit 1
- ;;
- esac
- done
-
- if [ "$RUN_MODE" = "build_only" ]; then
- print_info "开始编译所有算法..."
- else
- print_info "开始编译并运行所有算法..."
- fi
- print_info "工作目录: $(pwd)"
- print_info "编译时间: $(date '+%Y-%m-%d %H:%M:%S')"
- show_build_config
-
- # 清理构建目录
- if [ -d "$BUILD_DIR" ]; then
- print_info "清理现有构建目录: $BUILD_DIR"
- rm -rf "$BUILD_DIR"
- fi
-
- # 根据运行模式执行相应操作
- case "$RUN_MODE" in
- "build_only")
- print_info "编译所有算法..."
-
- print_info "[1/3] 编译ReduceSum..."
- ./build_and_run_reduce_sum.sh --build-only
- if [ $? -ne 0 ]; then
- print_error "ReduceSum编译失败"
- exit 1
- fi
-
- print_info "[2/3] 编译SortPair..."
- ./build_and_run_sort_pair.sh --build-only
- if [ $? -ne 0 ]; then
- print_error "SortPair编译失败"
- exit 1
- fi
-
- print_info "[3/3] 编译TopkPair..."
- ./build_and_run_topk_pair.sh --build-only
- if [ $? -ne 0 ]; then
- print_error "TopkPair编译失败"
- exit 1
- fi
-
- print_success "所有算法编译完成!"
- echo ""
- echo "可执行文件:"
- echo " $BUILD_DIR/test_reducesum - ReduceSum算法测试"
- echo " $BUILD_DIR/test_sortpair - SortPair算法测试"
- echo " $BUILD_DIR/test_topkpair - TopkPair算法测试"
- echo ""
- echo "使用方法:"
- echo " ./$BUILD_DIR/test_reducesum [correctness|performance|all]"
- echo " ./$BUILD_DIR/test_sortpair [correctness|performance|all]"
- echo " ./$BUILD_DIR/test_topkpair [correctness|performance|all]"
- ;;
-
- "run_all")
- print_info "编译并运行所有算法测试..."
-
- print_info "[1/3] ReduceSum..."
- ./build_and_run_reduce_sum.sh --run all
-
- print_info "[2/3] SortPair..."
- ./build_and_run_sort_pair.sh --run all
-
- print_info "[3/3] TopkPair..."
- ./build_and_run_topk_pair.sh --run all
-
- print_success "所有测试完成!"
- ;;
-
- "run_reduce")
- print_info "编译并运行ReduceSum测试..."
- ./build_and_run_reduce_sum.sh --run all
- ;;
-
- "run_sort")
- print_info "编译并运行SortPair测试..."
- ./build_and_run_sort_pair.sh --run all
- ;;
-
- "run_topk")
- print_info "编译并运行TopkPair测试..."
- ./build_and_run_topk_pair.sh --run all
- ;;
- esac
|