Files
nix-ascend/pack/pack_ascend_toolkit.sh

163 lines
6.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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."