163 lines
6.5 KiB
Bash
Executable File
163 lines
6.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
#
|
||
# pack_ascend_toolkit.sh — создаёт два tar.gz архива из собранного ascend-toolkit:
|
||
#
|
||
# 1. ascend-toolkit-8.5.0-full.tar.gz — полный архив (все файлы)
|
||
# 2. ascend-toolkit-8.5.0-minimal.tar.gz — минимальный набор для режима sim
|
||
#
|
||
# Использование:
|
||
# ./pack_ascend_toolkit.sh [path_to_result_dir]
|
||
#
|
||
# Если аргумент не указан, используется ./result
|
||
|
||
set -euo pipefail
|
||
|
||
RESULT_DIR="${1:-$(cd "$(dirname "$0")" && ls -d result 2>/dev/null || echo result)}"
|
||
VERSION="8.5.0"
|
||
OUTPUT_DIR="${2:-$(dirname "$0")}"
|
||
|
||
if [ ! -d "$RESULT_DIR" ]; then
|
||
echo "[ERROR] Directory not found: $RESULT_DIR"
|
||
exit 1
|
||
fi
|
||
|
||
cd "$RESULT_DIR"
|
||
|
||
# =============================================================================
|
||
# 1. Полный архив — всё содержимое
|
||
# =============================================================================
|
||
echo "=== Creating FULL archive ==="
|
||
FULL_ARCHIVE="${OUTPUT_DIR}/ascend-toolkit-${VERSION}-full.tar.gz"
|
||
tar czf "$FULL_ARCHIVE" .
|
||
FULL_SIZE=$(wc -c < "$FULL_ARCHIVE" | numfmt --to=iec-i --suffix=B)
|
||
echo " FULL archive: $FULL_ARCHIVE ($FULL_SIZE)"
|
||
|
||
# =============================================================================
|
||
# 2. Минимальный архив — только файлы для режима sim
|
||
# =============================================================================
|
||
echo "=== Creating MINIMAL archive (sim mode) ==="
|
||
|
||
# Создаём временную директорию с минимальным набором
|
||
MINIMAL_DIR=$(mktemp -d)
|
||
trap "rm -rf $MINIMAL_DIR" EXIT
|
||
|
||
# Копируем только нужные для sim-режима файлы/директории
|
||
#
|
||
# Структура основана на том, что реально используется при
|
||
# bash run.sh -r sim -v Ascend310P3
|
||
#
|
||
# Основные потребители:
|
||
# - cmake/npu_lib.cmake → compiler/tikcpp/ascendc_kernel_cmake
|
||
# - bisheng компиляция → tools/bisheng_compiler
|
||
# - cce линковка → tools/ccec_compiler (через x86_64-linux/ccec_compiler symlink)
|
||
# - симулятор → tools/simulator/Ascend310P3/lib
|
||
# - заголовки → include
|
||
# - библиотеки → lib64, devlib
|
||
# - OPP данные → opp/built-in (нужны для op_impl)
|
||
# - Python bindings → python/site-packages
|
||
# - Runtime → runtime
|
||
# - Toolkit → toolkit
|
||
# - Конфигурации → conf, compat
|
||
# - set_env.sh — корень
|
||
# =============================================================================
|
||
|
||
echo " Copying essential files..."
|
||
|
||
# Корневые файлы
|
||
mkdir -p "$MINIMAL_DIR"
|
||
cp -a set_env.sh "$MINIMAL_DIR/" 2>/dev/null || true
|
||
|
||
# bin — содержит setenv.bash symlink + ключевые утилиты
|
||
mkdir -p "$MINIMAL_DIR/bin"
|
||
cp -a bin/* "$MINIMAL_DIR/bin/" 2>/dev/null || true
|
||
|
||
# compiler — tikcpp cmake модули
|
||
mkdir -p "$MINIMAL_DIR/compiler"
|
||
cp -a compiler/tikcpp "$MINIMAL_DIR/compiler/" 2>/dev/null || true
|
||
|
||
# compat
|
||
mkdir -p "$MINIMAL_DIR/compat"
|
||
cp -a compat/* "$MINIMAL_DIR/compat/" 2>/dev/null || true
|
||
|
||
# conf
|
||
mkdir -p "$MINIMAL_DIR/conf"
|
||
cp -a conf/* "$MINIMAL_DIR/conf/" 2>/dev/null || true
|
||
|
||
# devlib — stub библиотеки для разработки
|
||
mkdir -p "$MINIMAL_DIR/devlib"
|
||
cp -a devlib/* "$MINIMAL_DIR/devlib/" 2>/dev/null || true
|
||
|
||
# fwkacllib — framework ACL библиотеки
|
||
mkdir -p "$MINIMAL_DIR/fwkacllib"
|
||
cp -a fwkacllib/* "$MINIMAL_DIR/fwkacllib/" 2>/dev/null || true
|
||
|
||
# include — все заголовочные файлы (критично для компиляции)
|
||
mkdir -p "$MINIMAL_DIR/include"
|
||
cp -a include/* "$MINIMAL_DIR/include/" 2>/dev/null || true
|
||
|
||
# lib64 — основные библиотеки
|
||
mkdir -p "$MINIMAL_DIR/lib64"
|
||
cp -a lib64/* "$MINIMAL_DIR/lib64/" 2>/dev/null || true
|
||
|
||
# pkg_inc
|
||
mkdir -p "$MINIMAL_DIR/pkg_inc"
|
||
cp -a pkg_inc/* "$MINIMAL_DIR/pkg_inc/" 2>/dev/null || true
|
||
|
||
# python
|
||
mkdir -p "$MINIMAL_DIR/python"
|
||
cp -a python/* "$MINIMAL_DIR/python/" 2>/dev/null || true
|
||
|
||
# runtime
|
||
mkdir -p "$MINIMAL_DIR/runtime"
|
||
cp -a runtime/* "$MINIMAL_DIR/runtime/" 2>/dev/null || true
|
||
|
||
# toolkit
|
||
mkdir -p "$MINIMAL_DIR/toolkit"
|
||
cp -a toolkit/* "$MINIMAL_DIR/toolkit/" 2>/dev/null || true
|
||
|
||
# x86_64-linux — содержит архитектурно-зависимые файлы (symlinks на реальные директории)
|
||
mkdir -p "$MINIMAL_DIR/x86_64-linux"
|
||
cp -a x86_64-linux/* "$MINIMAL_DIR/x86_64-linux/" 2>/dev/null || true
|
||
|
||
# tools — выборочно:
|
||
# - bisheng_compiler — основной AscendC компилятор
|
||
# - ccec_compiler — linker для AI Core
|
||
# - simulator — библиотека симулятора для sim режима
|
||
# - tikcpp — tikcpp файлы
|
||
# - aml — используется в LD_LIBRARY_PATH
|
||
# - profiler — может использоваться
|
||
# - ascendc_tools — ascendc инструменты
|
||
mkdir -p "$MINIMAL_DIR/tools"
|
||
cp -a tools/bisheng_compiler "$MINIMAL_DIR/tools/" 2>/dev/null || true
|
||
cp -a tools/ccec_compiler "$MINIMAL_DIR/tools/" 2>/dev/null || true
|
||
cp -a tools/simulator "$MINIMAL_DIR/tools/" 2>/dev/null || true
|
||
cp -a tools/tikcpp "$MINIMAL_DIR/tools/" 2>/dev/null || true
|
||
cp -a tools/aml "$MINIMAL_DIR/tools/" 2>/dev/null || true
|
||
cp -a tools/profiler "$MINIMAL_DIR/tools/" 2>/dev/null || true
|
||
cp -a tools/ascendc_tools "$MINIMAL_DIR/tools/" 2>/dev/null || true
|
||
|
||
# opp — operator packages
|
||
# Для sim режима нужны op_impl (tiling и kernel реализации)
|
||
mkdir -p "$MINIMAL_DIR/opp"
|
||
cp -a opp/built-in "$MINIMAL_DIR/opp/" 2>/dev/null || true
|
||
cp -a opp/include "$MINIMAL_DIR/opp/" 2>/dev/null || true
|
||
cp -a opp/lib64 "$MINIMAL_DIR/opp/" 2>/dev/null || true
|
||
|
||
echo " Compressing..."
|
||
MINIMAL_ARCHIVE="${OUTPUT_DIR}/ascend-toolkit-${VERSION}-minimal.tar.gz"
|
||
tar czf "$MINIMAL_ARCHIVE" -C "$MINIMAL_DIR" .
|
||
|
||
MINIMAL_SIZE=$(wc -c < "$MINIMAL_ARCHIVE" | numfmt --to=iec-i --suffix=B)
|
||
echo " MINIMAL archive: $MINIMAL_ARCHIVE ($MINIMAL_SIZE)"
|
||
|
||
# =============================================================================
|
||
# Итог
|
||
# =============================================================================
|
||
echo ""
|
||
echo "=== Summary ==="
|
||
echo " FULL archive: $FULL_SIZE"
|
||
echo " MINIMAL archive: $MINIMAL_SIZE"
|
||
echo ""
|
||
echo "Upload these files to your Gitea instance."
|
||
echo "Then update flake.nix to use fetchurl instead of local path."
|