已合并
【PR】【fix】修复 binary_enumerate_functions 样例重复执行构建失败 #4771
陈天銮创建于 9月9日
【PR】【fix】修复 binary_enumerate_functions 样例重复执行构建失败 #4771
已合并
陈天銮创建于 9月9日
共 1 个文件变更+23-19
@@ -16,30 +16,32 @@ EXAMPLE_DIR="$(cd "${SCRIPT_DIR}/../../.." && pwd)"
16BUILD_DIR="${SCRIPT_DIR}/build"16BUILD_DIR="${SCRIPT_DIR}/build"
17OUTPUT_DIR="${SCRIPT_DIR}/out"17OUTPUT_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:-}}" ]]; then23+ 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_env26 resolve_cann_env
27-else
28- echo "[ERROR]: Source the CANN set_env.sh or export ASCEND_INSTALL_PATH=<cann_path>."
29- exit 1
30fi27fi
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.
33if [[ -z "${SOC_VERSION:-}" || -z "${ASCENDC_CMAKE_DIR:-}" ]]; then32if [[ -z "${SOC_VERSION:-}" || -z "${ASCENDC_CMAKE_DIR:-}" ]]; then
34- if ! source "${EXAMPLE_DIR}/set_sample_env.sh"; then33+ 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
39fi35fi
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 reads39+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}"
43cmake -S "${SCRIPT_DIR}" -B "${BUILD_DIR}"45cmake -S "${SCRIPT_DIR}" -B "${BUILD_DIR}"
44cmake --build "${BUILD_DIR}" -j"$(nproc)"46cmake --build "${BUILD_DIR}" -j"$(nproc)"
45cmake --install "${BUILD_DIR}"47cmake --install "${BUILD_DIR}"
@@ -47,14 +49,16 @@ cmake --install "${BUILD_DIR}"
47# 4. Run the sample.49# 4. Run the sample.
48KERNEL_BINARY="${OUTPUT_DIR}/fatbin/custom_kernels/custom_kernels.o"50KERNEL_BINARY="${OUTPUT_DIR}/fatbin/custom_kernels/custom_kernels.o"
49HOST_BINARY="${OUTPUT_DIR}/bin/binary_enumerate_functions"51HOST_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 
54case "$(uname -m)" in55case "$(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" ;;
57esac58esac
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}"