#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<EOF
Usage: $0 [OPTIONS]
选项:
-t, --target TARGET 指定要运行的目标 (sample_and_run_python|sample_and_run_python_custom_allocator)
-h, --help 显示此帮助信息
默认行为:
当未指定目标时,默认运行默认 allocator 异步图样例
EOF
exit 0
}
TARGET="sample"
while [[ $# -gt 0 ]]; do
case "$1" in
-t|--target)
TARGET="$2"
shift 2
;;
-h|--help)
usage
;;
*)
echo "未知选项: $1" >&2
usage
exit 1
;;
esac
done
VALID_TARGETS=("sample_and_run_python" "sample_and_run_python_custom_allocator")
if [[ ! " ${VALID_TARGETS[@]} " =~ " ${TARGET} " ]]; then
echo "错误: 无效目标 '${TARGET}'。有效目标: ${VALID_TARGETS[*]}" >&2
exit 1
fi
echo "[Info] 目标设置为: ${TARGET}"
echo "[Info] 测试用例设置为: add"
set +u
if [[ -z "${ASCEND_HOME_PATH}" ]]; then
echo -e "ERROR 环境变量ASCEND_HOME_PATH 未配置" >&2
echo -e "ERROR 请先执行: source /usr/local/Ascend/cann/set_env.sh " >&2
exit 1
fi
ARCH=$(uname -m)
case "${ARCH}" in
x86_64|amd64)
ASCEND_ARCH="x86_64-linux"
;;
aarch64|arm64)
ASCEND_ARCH="aarch64-linux"
;;
*)
echo "WARNING: 未识别的架构 ${ARCH},使用默认值 x86_64-linux" >&2
ASCEND_ARCH="x86_64-linux"
;;
esac
echo "[Info] 检测到系统架构: ${ARCH}"
echo "[Info] 使用 ASCEND 架构: ${ASCEND_ARCH}"
ASCEND_LIB_DIR="${ASCEND_HOME_PATH}/lib64"
echo "[Info] ASCEND_LIB_DIR = ${ASCEND_LIB_DIR}"
export LD_LIBRARY_PATH="${ASCEND_LIB_DIR}:${LD_LIBRARY_PATH:-}"
echo "[Info] LD_LIBRARY_PATH 已设置为: ${LD_LIBRARY_PATH}"
run_python_file() {
local py_file="$1"
if [[ ! -f "${py_file}" ]]; then
echo "[Error] 未找到 Python 用例 ${py_file}" >&2
return 1
fi
echo "[Info] 运行:${py_file}"
if python3 "${py_file}"; then
echo "[Success] ${py_file} 执行成功"
return 0
else
echo "[Error] ${py_file} 执行失败" >&2
return 1
fi
}
case "${TARGET}" in
sample_and_run_python)
if run_python_file "src/make_add_graph.py"; then
echo "[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示"
else
echo "[Error] sample 执行失败,请检查上述错误信息" >&2
exit 1
fi
;;
sample_and_run_python_custom_allocator)
if run_python_file "src/make_add_graph_custom_allocator.py"; then
echo "[Success] sample 执行成功,pbtxt dump 已生成在当前目录。该文件以 ge_onnx_ 开头,可以在 netron 中打开显示"
else
echo "[Error] sample 执行失败,请检查上述错误信息" >&2
exit 1
fi
;;
*)
echo "错误: 未知目标 ${TARGET}" >&2
exit 1
;;
esac