已合并
【PR】【fix】修复 binary_enumerate_functions 样例重复执行构建失败 #4771
陈天銮创建于 9月9日
【PR】【fix】修复 binary_enumerate_functions 样例重复执行构建失败 #4771
已合并
共 1 个文件变更+23-19
| @@ -16,30 +16,32 @@ EXAMPLE_DIR="$(cd "${SCRIPT_DIR}/../../.." && pwd)" | |||
| 16 | BUILD_DIR="${SCRIPT_DIR}/build" | 16 | BUILD_DIR="${SCRIPT_DIR}/build" |
| 17 | OUTPUT_DIR="${SCRIPT_DIR}/out" | 17 | OUTPUT_DIR="${SCRIPT_DIR}/out" |
| 18 | 18 | ||
| 19 | +die() { echo "[ERROR] $*" >&2; exit 1; } | ||
| 20 | + | ||
| 19 | # 1. Resolve the CANN environment: prefer preset variables, otherwise auto-detect. | 21 | # 1. Resolve the CANN environment: prefer preset variables, otherwise auto-detect. |
| 20 | -env_script="${EXAMPLE_DIR}/common/resolve_cann_env.sh" | 22 | +if [[ -z "${ASCEND_INSTALL_PATH:-${ASCEND_HOME_PATH:-}}" ]]; then |
| 21 | -if [[ -n "${ASCEND_INSTALL_PATH:-${ASCEND_HOME_PATH:-}}" ]]; then | 23 | + env_script="${EXAMPLE_DIR}/common/resolve_cann_env.sh" |
| 22 | - export ASCEND_INSTALL_PATH="${ASCEND_INSTALL_PATH:-${ASCEND_HOME_PATH}}" | 24 | + [[ -f "${env_script}" ]] || die "Source the CANN set_env.sh or export ASCEND_INSTALL_PATH=<cann_path>." |
| 23 | - export ASCEND_HOME_PATH="${ASCEND_HOME_PATH:-${ASCEND_INSTALL_PATH}}" | ||
| 24 | -elif [[ -f "${env_script}" ]]; then | ||
| 25 | source "${env_script}" | 25 | source "${env_script}" |
| 26 | resolve_cann_env | 26 | resolve_cann_env |
| 27 | -else | ||
| 28 | - echo "[ERROR]: Source the CANN set_env.sh or export ASCEND_INSTALL_PATH=<cann_path>." | ||
| 29 | - exit 1 | ||
| 30 | fi | 27 | fi |
| 28 | +export ASCEND_INSTALL_PATH="${ASCEND_INSTALL_PATH:-${ASCEND_HOME_PATH}}" | ||
| 29 | +export ASCEND_HOME_PATH="${ASCEND_HOME_PATH:-${ASCEND_INSTALL_PATH}}" | ||
| 31 | 30 | ||
| 32 | # 2. Auto-detect SOC_VERSION and ASCENDC_CMAKE_DIR when they are not preset. | 31 | # 2. Auto-detect SOC_VERSION and ASCENDC_CMAKE_DIR when they are not preset. |
| 33 | if [[ -z "${SOC_VERSION:-}" || -z "${ASCENDC_CMAKE_DIR:-}" ]]; then | 32 | if [[ -z "${SOC_VERSION:-}" || -z "${ASCENDC_CMAKE_DIR:-}" ]]; then |
| 34 | - if ! source "${EXAMPLE_DIR}/set_sample_env.sh"; then | 33 | + source "${EXAMPLE_DIR}/set_sample_env.sh" || die "Failed to auto detect SOC_VERSION/ASCENDC_CMAKE_DIR. |
| 35 | - echo "[ERROR] Failed to auto detect SOC_VERSION/ASCENDC_CMAKE_DIR." | 34 | + Please export SOC_VERSION (e.g. SOC_VERSION=Ascend910B1) and ASCENDC_CMAKE_DIR." |
| 36 | - echo " Please export SOC_VERSION (e.g. SOC_VERSION=Ascend910B1) and ASCENDC_CMAKE_DIR." | ||
| 37 | - exit 1 | ||
| 38 | - fi | ||
| 39 | fi | 35 | fi |
| 36 | +[[ -f "${ASCENDC_CMAKE_DIR:-}/ascendc.cmake" ]] || \ | ||
| 37 | + die "ascendc.cmake was not found; install or source the CANN Toolkit first." | ||
| 40 | 38 | ||
| 41 | -# 3. Build the device kernels and the host executable. CMakeLists.txt reads | 39 | +echo "[INFO] ASCEND_HOME_PATH=${ASCEND_HOME_PATH}" |
| 42 | -# SOC_VERSION / ASCENDC_CMAKE_DIR / ASCEND_HOME_PATH from the environment. | 40 | +echo "[INFO] SOC_VERSION=${SOC_VERSION}" |
| 41 | +echo "[INFO] ASCENDC_CMAKE_DIR=${ASCENDC_CMAKE_DIR}" | ||
| 42 | + | ||
| 43 | +# 3. Clean previous build/install artifacts so repeated runs always start | ||
| 44 | +rm -rf "${BUILD_DIR}" "${OUTPUT_DIR}" | ||
| 43 | cmake -S "${SCRIPT_DIR}" -B "${BUILD_DIR}" | 45 | cmake -S "${SCRIPT_DIR}" -B "${BUILD_DIR}" |
| 44 | cmake --build "${BUILD_DIR}" -j"$(nproc)" | 46 | cmake --build "${BUILD_DIR}" -j"$(nproc)" |
| 45 | cmake --install "${BUILD_DIR}" | 47 | cmake --install "${BUILD_DIR}" |
| @@ -47,14 +49,16 @@ cmake --install "${BUILD_DIR}" | |||
| 47 | # 4. Run the sample. | 49 | # 4. Run the sample. |
| 48 | KERNEL_BINARY="${OUTPUT_DIR}/fatbin/custom_kernels/custom_kernels.o" | 50 | KERNEL_BINARY="${OUTPUT_DIR}/fatbin/custom_kernels/custom_kernels.o" |
| 49 | HOST_BINARY="${OUTPUT_DIR}/bin/binary_enumerate_functions" | 51 | HOST_BINARY="${OUTPUT_DIR}/bin/binary_enumerate_functions" |
| 50 | - | 52 | +[[ -f "${KERNEL_BINARY}" ]] || die "Kernel binary was not generated: ${KERNEL_BINARY}" |
| 51 | -[[ -f "${KERNEL_BINARY}" ]] || { echo "[ERROR] Kernel binary was not generated: ${KERNEL_BINARY}"; exit 1; } | 53 | +[[ -x "${HOST_BINARY}" ]] || die "Host executable was not generated: ${HOST_BINARY}" |
| 52 | -[[ -x "${HOST_BINARY}" ]] || { echo "[ERROR] Host executable was not generated: ${HOST_BINARY}"; exit 1; } | ||
| 53 | 54 | ||
| 54 | case "$(uname -m)" in | 55 | case "$(uname -m)" in |
| 55 | aarch64|arm64) arch_dir="aarch64-linux" ;; | 56 | aarch64|arm64) arch_dir="aarch64-linux" ;; |
| 56 | *) arch_dir="x86_64-linux" ;; | 57 | *) arch_dir="x86_64-linux" ;; |
| 57 | esac | 58 | esac |
| 58 | -export LD_LIBRARY_PATH="${ASCEND_INSTALL_PATH}/runtime/lib64:${ASCEND_INSTALL_PATH}/lib64:${ASCEND_INSTALL_PATH}/${arch_dir}/lib64:${LD_LIBRARY_PATH:-}" | 59 | +export LD_LIBRARY_PATH="${ASCEND_INSTALL_PATH}/runtime/lib64:"\ |
| 60 | +"${ASCEND_INSTALL_PATH}/lib64:"\ | ||
| 61 | +"${ASCEND_INSTALL_PATH}/${arch_dir}/lib64:"\ | ||
| 62 | +"${LD_LIBRARY_PATH:-}" | ||
| 59 | 63 | ||
| 60 | "${HOST_BINARY}" "${KERNEL_BINARY}" | 64 | "${HOST_BINARY}" "${KERNEL_BINARY}" |