You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

build_and_run.sh 4.4 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #!/bin/bash
  2. # GPU高性能并行计算算法优化竞赛 - 统一编译脚本
  3. # 调用各个独立的build_and_run脚本来编译所有算法
  4. # 加载公共配置
  5. source "$(dirname "$0")/build_common.sh"
  6. # 显示帮助信息
  7. show_help() {
  8. echo "GPU算法竞赛统一编译和运行脚本"
  9. echo "用法: $0 [选项]"
  10. echo ""
  11. echo "选项:"
  12. echo " --help 显示帮助信息"
  13. echo " --build-only 仅编译所有算法,不运行测试"
  14. echo " --run_reduce 编译并运行ReduceSum算法测试"
  15. echo " --run_sort 编译并运行SortPair算法测试"
  16. echo " --run_topk 编译并运行TopkPair算法测试"
  17. echo ""
  18. echo "示例:"
  19. echo " $0 # 编译并运行所有测试(默认行为)"
  20. echo " $0 --build-only # 仅编译所有算法"
  21. echo " $0 --run_sort # 编译并运行SortPair测试"
  22. echo ""
  23. echo "单独算法脚本:"
  24. echo " ./build_and_run_reduce_sum.sh # 仅处理ReduceSum"
  25. echo " ./build_and_run_sort_pair.sh # 仅处理SortPair"
  26. echo " ./build_and_run_topk_pair.sh # 仅处理TopkPair"
  27. echo ""
  28. }
  29. # 解析命令行参数
  30. RUN_MODE="run_all" # 默认为编译并运行所有测试
  31. while [[ $# -gt 0 ]]; do
  32. case $1 in
  33. --help)
  34. show_help
  35. exit 0
  36. ;;
  37. --build-only)
  38. RUN_MODE="build_only"
  39. shift
  40. ;;
  41. --run_reduce)
  42. RUN_MODE="run_reduce"
  43. shift
  44. ;;
  45. --run_sort)
  46. RUN_MODE="run_sort"
  47. shift
  48. ;;
  49. --run_topk)
  50. RUN_MODE="run_topk"
  51. shift
  52. ;;
  53. *)
  54. print_error "未知选项: $1"
  55. show_help
  56. exit 1
  57. ;;
  58. esac
  59. done
  60. if [ "$RUN_MODE" = "build_only" ]; then
  61. print_info "开始编译所有算法..."
  62. else
  63. print_info "开始编译并运行所有算法..."
  64. fi
  65. print_info "工作目录: $(pwd)"
  66. print_info "编译时间: $(date '+%Y-%m-%d %H:%M:%S')"
  67. show_build_config
  68. # 清理构建目录
  69. if [ -d "$BUILD_DIR" ]; then
  70. print_info "清理现有构建目录: $BUILD_DIR"
  71. rm -rf "$BUILD_DIR"
  72. fi
  73. # 根据运行模式执行相应操作
  74. case "$RUN_MODE" in
  75. "build_only")
  76. print_info "编译所有算法..."
  77. print_info "[1/3] 编译ReduceSum..."
  78. ./build_and_run_reduce_sum.sh --build-only
  79. if [ $? -ne 0 ]; then
  80. print_error "ReduceSum编译失败"
  81. exit 1
  82. fi
  83. print_info "[2/3] 编译SortPair..."
  84. ./build_and_run_sort_pair.sh --build-only
  85. if [ $? -ne 0 ]; then
  86. print_error "SortPair编译失败"
  87. exit 1
  88. fi
  89. print_info "[3/3] 编译TopkPair..."
  90. ./build_and_run_topk_pair.sh --build-only
  91. if [ $? -ne 0 ]; then
  92. print_error "TopkPair编译失败"
  93. exit 1
  94. fi
  95. print_success "所有算法编译完成!"
  96. echo ""
  97. echo "可执行文件:"
  98. echo " $BUILD_DIR/test_reducesum - ReduceSum算法测试"
  99. echo " $BUILD_DIR/test_sortpair - SortPair算法测试"
  100. echo " $BUILD_DIR/test_topkpair - TopkPair算法测试"
  101. echo ""
  102. echo "使用方法:"
  103. echo " ./$BUILD_DIR/test_reducesum [correctness|performance|all]"
  104. echo " ./$BUILD_DIR/test_sortpair [correctness|performance|all]"
  105. echo " ./$BUILD_DIR/test_topkpair [correctness|performance|all]"
  106. ;;
  107. "run_all")
  108. print_info "编译并运行所有算法测试..."
  109. print_info "[1/3] ReduceSum..."
  110. ./build_and_run_reduce_sum.sh --run all
  111. print_info "[2/3] SortPair..."
  112. ./build_and_run_sort_pair.sh --run all
  113. print_info "[3/3] TopkPair..."
  114. ./build_and_run_topk_pair.sh --run all
  115. print_success "所有测试完成!"
  116. ;;
  117. "run_reduce")
  118. print_info "编译并运行ReduceSum测试..."
  119. ./build_and_run_reduce_sum.sh --run all
  120. ;;
  121. "run_sort")
  122. print_info "编译并运行SortPair测试..."
  123. ./build_and_run_sort_pair.sh --run all
  124. ;;
  125. "run_topk")
  126. print_info "编译并运行TopkPair测试..."
  127. ./build_and_run_topk_pair.sh --run all
  128. ;;
  129. esac