Skip to content

Conversation

@QuantumMisaka
Copy link
Collaborator

@QuantumMisaka QuantumMisaka commented Oct 17, 2025

Reminder

  • Have you linked an issue with this pull request?
  • Have you added adequate unit tests and/or case tests for your pull request?
  • Have you noticed possible changes of behavior below or in the linked issue?

Linked Issue

Fix #6513

Unit Tests and/or Case Tests for my changes

  • One can directly run toolchain_gnu.sh as a case test.

What's changed?

Toolchain 202503 version update

This PR introduces a comprehensive refactoring of the ABACUS toolchain installation system, transforming a single 890-line script into a clean, modular architecture with 7 specialized components.

🏗️ Architecture Improvements

  • Modular Design: Split monolithic install_abacus_toolchain.sh (890 lines) into focused modules:

    • config_manager.sh - Centralized configuration management
    • config_validator.sh - Comprehensive validation logic
    • package_manager.sh - Installation workflow control
    • error_handler.sh - Unified error handling and stack traces
    • user_interface.sh - Enhanced user experience
    • version_helper.sh & version_loader.sh - Version management system
  • Code Reduction: Main script install_abacus_toolchain_new.sh reduced to 178 lines (80% reduction) while maintaining 100% functionality coverage, and install_abacus_toolchain.sh is deprecated now and will be removed in the next version of toolchain.

🚀 Feature Enhancements

Enhanced Pre-defined Toolchain Running Scripts: Now toolchain*.sh are totally refined, and one can either edit these toolchain files or add options in toolchain*.sh calling command to use toolchain in your personal way.

Enhanced Parameter Support: Now one can use --package-version to switch the main/alt version of package installed via toolchain, which support the following command:

# one by one
bash toolchain_gnu.sh --package-version openmpi:alt --package-version cmake:alt
# all in one
bash toolchian_gnu.sh  --package-version openmpi:alt cmake:alt

Also, all version of dependent packages are update, and most of them have main/alt option in a double-version management system.

Package Version (main/alt) Purpose License Default
Build Tools
CMake 3.31.7 / 3.30.5 Build system BSD-3-Clause Install
GCC 13.2.0 / 11.4.0 C/C++ compiler GPL-3.0-or-later WITH GCC-exception-3.1 Install
MPI Libraries
OpenMPI 5.0.8 / 4.1.6 MPI implementation BSD-3-Clause-Open-MPI Install
MPICH 4.3.1 / 4.1.0 Alternative MPI mpich2 (BSD-like) Alternative
Math Libraries
OpenBLAS 0.3.30 / 0.3.27 Linear algebra BSD-3-Clause Install
ScaLAPACK 2.2.2 / 2.2.1 Parallel linear algebra BSD-3-Clause Install
Scientific Libraries
FFTW 3.3.10 / 3.3.10 Fast Fourier Transform GPL-2.0-or-later Install
LibXC 7.0.0 / 6.2.2 Exchange-correlation MPL-2.0 Install
ELPA 2025.06.001 / 2024.05.001 Eigenvalue solver LGPL-3.0-only Install
Advanced Features
Cereal master C++ Serialization BSD Install
RapidJSON master JSON parsing MIT Install
LibRI master EXX calculations GPL-3.0 Install
LibComm master EXX calculations GPL-3.0 Install
LibTorch 2.1.2 / 1.12.1 MLALGO support BSD-3-Clause Optional
LibNPY 1.0.1 / 1.0.1 NumPy I/O MIT Optional
NEP main Neural network potential MIT Optional

NEP support added: cherry-pick NEP contribution by @MoseyQAQ and merge it into refractored toolchain.

Enable LibRI/LibComm installation in default: ABACUS EXX made simple !

User Interface Improvements
Huge UI update: Now we have a better and even fancy UI during running the toolchain

[INFO] 🔍 MPI detected, defaulting to MPICH configuration
[INFO] ⚙️ Configuring MPI mode: openmpi
[INFO] 🧮 Configuring Math mode: openblas

════════════════════════════════════════════════════════════════════════════════

                         ABACUS Toolchain Installation
                          DFT Calculation Made Simple
                                 Version 2025.3

════════════════════════════════════════════════════════════════════════════════

Current Version Configuration:
=============================
Global Strategy: main

Package-specific settings:
  cmake       : main
  openmpi     : main
  openblas    : main
  elpa        : main
  libxc       : main
  scalapack   : main
  libtorch    : main


────────────────────────────────────────────────────────────
[*] Installation Configuration Summary
────────────────────────────────────────────────────────────

🖥️  System Information:
   ├─ OS: Linux x86_64
   ├─ Kernel: 6.6.87.2-microsoft-standard-WSL2
   ├─ glibc: 2.35
   ├─ CPU Cores: 32
   ├─ Memory: 31GB
   └─ GPU: NVIDIA GeForce RTX 2070 SUPER

⚙️  Build Configuration:
   ├─ MPI Mode:       openmpi
   ├─ Math Mode:      openblas
   ├─ Target CPU:     native
   ├─ GPU Version:    no
   └─ Parallel Jobs:  32

📦 Package Configuration:
   ├─ 🔗 gcc:          system
   ├─ 🔗 cmake:        system
   ├─ 🔗 openmpi:      system
   ├─ 🔗 openblas:     system
   ├─ 🔗 fftw:         system
   ├─ 🔗 libxc:        system
   ├─ 🔗 scalapack:    system
   ├─ 🔗 elpa:         system
   ├─ 🔗 cereal:       system
   ├─ 🔗 rapidjson:    system
   ├─ 🔗 libri:        system
   ├─ 🔗 libcomm:      system
   └─ Configuration complete

🔗 System packages to be used:
   [+] gcc
   [+] cmake
   [+] openmpi
   [+] openblas
   [+] fftw
   [+] libxc
   [+] scalapack
   [+] elpa
   [+] cereal
   [+] rapidjson
   [+] libri
   [+] libcomm



────────────────────────────────────────────────────────────
[*] System Validation
────────────────────────────────────────────────────────────

Running configuration validation...
INFO: System CMake validated: version 3.31.7 (>= 3.16 required)
INFO: System GCC toolchain validated: version 12.3.0 (>= 5.x required)
✓ Configuration validation passed with no issues.
[OK] System validation completed successfully

────────────────────────────────────────────────────────────
[*] Preparing Installation Environment
────────────────────────────────────────────────────────────

[INFO] Creating installation directories...
[INFO] Generating setup configuration...
[INFO] Compiling with 32 processes for target native
[INFO] Writing toolchain configuration...

────────────────────────────────────────────────────────────
[*] Starting Package Installation
────────────────────────────────────────────────────────────

[INFO] Initializing build environment...

────────────────────────────────────────────────────────────
[*] Stage 0: Build Tools & Compilers
────────────────────────────────────────────────────────────
...

And throughout this UI, one may find that toolchain have more checking and output for users:

  • Enhanced error reporting: Detailed GCC version checks with solution guidance
  • System information: glibc version detection and system summary
  • Smart version display: Intelligent VERSION file discovery
  • Cmake and GCC checking: CMake ≥3.16 and GCC ≥ 5.0 requirement enforcement with detailed error messages

🔒 Reliability & Compatibility

  • 100% Backward Compatibility: All existing command-line options and workflows preserved
  • Comprehensive Testing: Multi-round integration testing with various toolchain configurations
  • Error Handling: Unified error reporting with detailed stack traces and recovery suggestions
  • Code Quality: Consistent formatting, syntax error elimination, and unused code removal

📚 Documentation & Maintenance

Toolchain README also have a huge update, and one can get more information from it.

Now, adding a package to toolchain is also become much easier, in which developers are not needed to directly edit the main running script.

🔗 Bug Fixed

  • Fix bug when --pack-run cannot fully installed GCC package with patches which lead to the related offline installation failed ( raised by @OutisLi )
  • Fix bug when --pack-run cannot proceed when --with-gcc=installed and running get_openblas_arch.sh ( raised by @LiuXiaohui123321 )
  • Fix any bug related to --with-PKG=system ( thanks to @ZhouXY-PKU )
  • Disable active $MKLROOT finding and setting default math-mode to OpenBLAS ( raised by @OutisLi )
  • Fix wrong LibXC sha256 for version 6.2.2 ( raised by @Chentao168 )

⚙️ Something not done yet

  • Auto generation of build_abacus.sh via toolchain running setting
  • Auto installation/detection of DeePMD library package
  • Fix problem when using OneAPI>2025.1 for ELPA.
  • Unify the downloading URL management
  • More user-friendly toolchain setting file

QuantumMisaka and others added 30 commits October 3, 2025 18:59
更新 OpenMPI 从 5.0.7 到 5.0.8 和 MPICH 从 4.3.0 到 4.3.1,并更新对应的 SHA256 校验值
同时更新 README.md 中的任务状态标记
- 更新OpenBLAS到v0.3.30版本
- 更新ELPA到2025.06.001版本
- 将libcomm、cereal、rapidjson、libri指向master分支
添加详细的开发者指南文档,介绍工具链的架构设计、核心功能和实现细节
包含完整的重构方案文档,提出用户友好度改进、代码去冗余、硬编码解决和错误处理统一化的解决方案
- 补充各stage目录的具体用途说明
- 新增代码维护时的注意事项
- 保持文档与当前项目实践一致
移除对MKL和AOCL的自动检测,始终默认使用openblas作为数学库
将GPU架构选项从具体的硬件型号更新为CUDA架构编号,以提供更灵活的兼容性
refactor(toolchain): 重构工具链安装脚本,增加模块化和错误处理
docs(toolchain): 更新脚本注释和帮助信息
fix(toolchain): 修复OpenBLAS架构检测逻辑
style(toolchain): 统一代码格式和缩进
更新推荐离线安装的注释日期至2025年,并调整下载步骤顺序和描述
添加对GCC离线安装的支持,引入repack_filename变量用于打包包含依赖的GCC源码
优化依赖下载逻辑,优先尝试官方源,失败后回退到镜像源
当检测到无网络连接时跳过依赖下载以支持纯离线模式
- 添加版本配置导出功能以支持阶段脚本
- 优化OpenBLAS架构检测逻辑,提前解压包
- 修复版本验证中的包名大小写问题
- 为ELPA和LibXC添加包变量提前定义
- 改进配置验证器,支持MKL作为ScaLAPACK替代
- 统一多个安装脚本的包变量定义位置
- 重构包版本导出逻辑,动态构建版本字符串
- 更新工具链模板脚本,添加版本控制和执行模式
- 完善文档,记录GCC脚本优化和网络处理改进
- 重构配置管理器,支持更灵活的数学库和MPI设置
重构工具链脚本实现模块化架构,修复ELPA在使用MKL时的BLACS检测问题。主要变更包括:
1. 移除过时注释和冗余代码
2. 为所有安装脚本添加pack-run模式支持
3. 优化MKL环境变量设置,适配不同MPI实现
4. 修复ELPA安装时的SCALAPACK配置传递
5. 更新Intel编译器默认使用ifx
6. 改进配置管理器的静默模式处理

重构后工具链更易维护且完全兼容现有功能,为后续扩展奠定基础
更新VERSION文件至2025.3版本
统一各工具链脚本中的作者和日期信息
重构构建脚本以支持MLALGO功能并优化GPU支持
添加ABACUS构建脚本自动生成功能开发文档
refactor(ui): 改进终端用户界面和输出信息
- 添加彩色输出和更美观的进度显示
- 优化安装完成后的使用说明格式
- 增强MPI检测时的信息显示

chore: 移除过时的离线安装说明
新增DOWNLOAD_CERT_POLICY环境变量支持strict|smart|skip三种证书验证模式
移除-j参数并改用NPROCS_OVERWRITE环境变量控制并行编译核数
更新README文档详细说明新功能和使用方法
将各工具链脚本中的MPI实现参数从`MPI_IMPLEMENTATION`统一改为`MPI_MODE`以保持一致性
更新README文档,添加新功能说明并删除过时的Details.md文件
* update NEP_CPU

* update toolchain and document

* update cmake file

* update cmake file

* update test

* update toolchain script

* remove nep_cpu; update test case and toolchain script

* update unit test

* update test.yml

* update related doc.

---------

Co-authored-by: Mohan Chen <mohanchen@pku.edu.cn>
增加Unicode图标的三级fallback策略,确保在不同终端环境下的显示兼容性
增强GCC版本检查的错误提示,提供详细的问题分析和解决方案
添加glibc版本检测和系统信息摘要功能
改进版本号显示功能,支持智能查找VERSION文件
更新帮助文档和进度报告,反映最新优化内容
在工具链中添加NEP(Neural Evolution Potential)包支持,包括:
1. 在package_versions.sh中添加版本管理
2. 更新config_manager.sh中的配置项
3. 修改install_nep.sh使用集中版本管理
4. 更新用户界面显示
5. 添加NEP集成案例文档
6. 更新README中的包列表和文档

此变更使工具链支持NEP包的安装和配置,为ABACUS提供机器学习势能支持
修复--package-version参数仅支持单个键值对的问题,现支持两种写法:
1. 多个独立参数:--package-version PKG1:VER1 --package-version PKG2:VER2
2. 单个参数多键值对:--package-version PKG1:VER1 PKG2:VER2

同时更新相关文档说明和README,添加环境变量使用注意事项
重构配置验证逻辑以更精确检查cmake依赖
当使用系统cmake时增加额外检查
- 新增错误组概念,区分逻辑错误与描述行,提供准确错误计数
- 实现智能cmake检查,根据用户配置进行条件验证和版本检测
- 增强GCC工具链验证,包括版本一致性检查和最小版本要求
- 提供更详细的错误信息和解决方案指导
确保在system选项下,环境变量不会被额外写入setup中
@QuantumMisaka
Copy link
Collaborator Author

This version update will be suited for LTS after cherry-pick #6271 #6566

@mohanchen
Copy link
Collaborator

some conflicts need to be resolved @QuantumMisaka

@QuantumMisaka
Copy link
Collaborator Author

some conflicts need to be resolved @QuantumMisaka

Resolved, Thanks!

Copy link
Collaborator

@ZhouXY-PKU ZhouXY-PKU left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your contribution!
(More tests are needed to be done and auto-generation of build.sh may get supported in the future)

@mohanchen
Copy link
Collaborator

LGTM

@mohanchen mohanchen added the Compile & CICD & Docs & Dependencies Issues related to compiling ABACUS label Oct 19, 2025
@mohanchen mohanchen merged commit 388226b into deepmodeling:develop Oct 19, 2025
14 checks passed
QuantumMisaka added a commit to QuantumMisaka/abacus-develop that referenced this pull request Oct 21, 2025
* build: 更新 OpenMPI 和 MPICH 版本及其校验值

更新 OpenMPI 从 5.0.7 到 5.0.8 和 MPICH 从 4.3.0 到 4.3.1,并更新对应的 SHA256 校验值
同时更新 README.md 中的任务状态标记

* build(toolchain): 更新依赖库版本和配置

- 更新OpenBLAS到v0.3.30版本
- 更新ELPA到2025.06.001版本
- 将libcomm、cereal、rapidjson、libri指向master分支

* docs(toolchain): 添加ABACUS工具链开发者指南和重构方案文档

添加详细的开发者指南文档,介绍工具链的架构设计、核心功能和实现细节
包含完整的重构方案文档,提出用户友好度改进、代码去冗余、硬编码解决和错误处理统一化的解决方案

* docs(toolchain): 添加项目规则文档以明确代码质量标准和哲学

* docs(project_rules): 更新项目规则文档,添加维护指南

- 补充各stage目录的具体用途说明
- 新增代码维护时的注意事项
- 保持文档与当前项目实践一致

* refactor(toolchain): 简化数学库默认设置逻辑

移除对MKL和AOCL的自动检测,始终默认使用openblas作为数学库

* docs(toolchain): 更新GPU架构选项的说明文档

将GPU架构选项从具体的硬件型号更新为CUDA架构编号,以提供更灵活的兼容性

* feat(toolchain): 更新工具链脚本和依赖版本

refactor(toolchain): 重构工具链安装脚本,增加模块化和错误处理
docs(toolchain): 更新脚本注释和帮助信息
fix(toolchain): 修复OpenBLAS架构检测逻辑
style(toolchain): 统一代码格式和缩进

* docs(toolchain): 更新离线安装推荐说明中的日期和下载步骤

更新推荐离线安装的注释日期至2025年,并调整下载步骤顺序和描述

* fix(openblas): 仅在未找到openblas_dir时解压openblas包

* refactor(toolchain): remove test building scripts

* docs(toolchain): 添加ABACUS工具链重构验证报告和进度报告

* feat(工具链): 添加GCC离线安装支持并优化依赖下载逻辑

添加对GCC离线安装的支持,引入repack_filename变量用于打包包含依赖的GCC源码
优化依赖下载逻辑,优先尝试官方源,失败后回退到镜像源
当检测到无网络连接时跳过依赖下载以支持纯离线模式

* docs(toolchain): 添加废弃警告提示并引导迁移到新版本脚本

* feat(工具链): 优化工具链配置管理和安装脚本

- 添加版本配置导出功能以支持阶段脚本
- 优化OpenBLAS架构检测逻辑,提前解压包
- 修复版本验证中的包名大小写问题
- 为ELPA和LibXC添加包变量提前定义
- 改进配置验证器,支持MKL作为ScaLAPACK替代
- 统一多个安装脚本的包变量定义位置
- 重构包版本导出逻辑,动态构建版本字符串
- 更新工具链模板脚本,添加版本控制和执行模式
- 完善文档,记录GCC脚本优化和网络处理改进
- 重构配置管理器,支持更灵活的数学库和MPI设置

* refactor(工具链): 优化脚本架构并修复ELPA与MKL集成问题

重构工具链脚本实现模块化架构,修复ELPA在使用MKL时的BLACS检测问题。主要变更包括:
1. 移除过时注释和冗余代码
2. 为所有安装脚本添加pack-run模式支持
3. 优化MKL环境变量设置,适配不同MPI实现
4. 修复ELPA安装时的SCALAPACK配置传递
5. 更新Intel编译器默认使用ifx
6. 改进配置管理器的静默模式处理

重构后工具链更易维护且完全兼容现有功能,为后续扩展奠定基础

* feat(toolchain): 更新工具链版本至2025.3并重构构建脚本

更新VERSION文件至2025.3版本
统一各工具链脚本中的作者和日期信息
重构构建脚本以支持MLALGO功能并优化GPU支持
添加ABACUS构建脚本自动生成功能开发文档

* docs(toolchain): 更新文档和作者信息

refactor(ui): 改进终端用户界面和输出信息
- 添加彩色输出和更美观的进度显示
- 优化安装完成后的使用说明格式
- 增强MPI检测时的信息显示

chore: 移除过时的离线安装说明

* docs(toolchain): 在构建脚本中注释CUDA编译器路径选项

* feat(工具链): 新增智能证书验证策略和并行编译控制功能

新增DOWNLOAD_CERT_POLICY环境变量支持strict|smart|skip三种证书验证模式
移除-j参数并改用NPROCS_OVERWRITE环境变量控制并行编译核数
更新README文档详细说明新功能和使用方法

* refactor(toolchain): 统一MPI实现参数名并更新文档

将各工具链脚本中的MPI实现参数从`MPI_IMPLEMENTATION`统一改为`MPI_MODE`以保持一致性
更新README文档,添加新功能说明并删除过时的Details.md文件

* [Feature] Add NEP as esolver (deepmodeling#6603)

* update NEP_CPU

* update toolchain and document

* update cmake file

* update cmake file

* update test

* update toolchain script

* remove nep_cpu; update test case and toolchain script

* update unit test

* update test.yml

* update related doc.

---------

Co-authored-by: Mohan Chen <mohanchen@pku.edu.cn>

* feat(ui): 优化用户界面兼容性和错误提示

增加Unicode图标的三级fallback策略,确保在不同终端环境下的显示兼容性
增强GCC版本检查的错误提示,提供详细的问题分析和解决方案
添加glibc版本检测和系统信息摘要功能
改进版本号显示功能,支持智能查找VERSION文件
更新帮助文档和进度报告,反映最新优化内容

* refactor(toolchain): 将NEP选项加入注释

* style(toolchain): 统一调整可选特性的变量顺序

* feat(toolchain): 添加NEP包支持并更新相关文档

在工具链中添加NEP(Neural Evolution Potential)包支持,包括:
1. 在package_versions.sh中添加版本管理
2. 更新config_manager.sh中的配置项
3. 修改install_nep.sh使用集中版本管理
4. 更新用户界面显示
5. 添加NEP集成案例文档
6. 更新README中的包列表和文档

此变更使工具链支持NEP包的安装和配置,为ABACUS提供机器学习势能支持

* feat(toolchain): 增强package-version参数支持多键值对

修复--package-version参数仅支持单个键值对的问题,现支持两种写法:
1. 多个独立参数:--package-version PKG1:VER1 --package-version PKG2:VER2
2. 单个参数多键值对:--package-version PKG1:VER1 PKG2:VER2

同时更新相关文档说明和README,添加环境变量使用注意事项

* add system option for libcomm, libri and libnpy

* refactor(toolchain): 对stage4的头文件添加system和path选项支持

* fix(toolchain): 移除合并冲突标记并改进配置验证

重构配置验证逻辑以更精确检查cmake依赖
当使用系统cmake时增加额外检查

* feat(validator): 优化系统检测与错误计数机制

- 新增错误组概念,区分逻辑错误与描述行,提供准确错误计数
- 实现智能cmake检查,根据用户配置进行条件验证和版本检测
- 增强GCC工具链验证,包括版本一致性检查和最小版本要求
- 提供更详细的错误信息和解决方案指导

* refactor(toolchain): 统一安装脚本中环境变量设置的格式和顺序

确保在system选项下,环境变量不会被额外写入setup中

* move a doc

* chore: remove Trae Files

* fix(install_nep.sh):
unify --pack-run exit way

* refactor(toolchain):  clean the redundant and out-dated comments

* Update paths in install_cereal.sh for include directory

Modify the wrong paths.

* Fix path setup for cereal installation script

* Fix CEREAL include path in build script

The Include  Dir should be "include/", not "include/cereal/".

---------

Co-authored-by: m0sey <61280022+MoseyQAQ@users.noreply.github.com>
Co-authored-by: Mohan Chen <mohanchen@pku.edu.cn>
Co-authored-by: Levi Zhou <31941107+ZhouXY-PKU@users.noreply.github.com>
kluonj pushed a commit to kluonj/abacus-develop that referenced this pull request Oct 21, 2025
* build: 更新 OpenMPI 和 MPICH 版本及其校验值

更新 OpenMPI 从 5.0.7 到 5.0.8 和 MPICH 从 4.3.0 到 4.3.1,并更新对应的 SHA256 校验值
同时更新 README.md 中的任务状态标记

* build(toolchain): 更新依赖库版本和配置

- 更新OpenBLAS到v0.3.30版本
- 更新ELPA到2025.06.001版本
- 将libcomm、cereal、rapidjson、libri指向master分支

* docs(toolchain): 添加ABACUS工具链开发者指南和重构方案文档

添加详细的开发者指南文档,介绍工具链的架构设计、核心功能和实现细节
包含完整的重构方案文档,提出用户友好度改进、代码去冗余、硬编码解决和错误处理统一化的解决方案

* docs(toolchain): 添加项目规则文档以明确代码质量标准和哲学

* docs(project_rules): 更新项目规则文档,添加维护指南

- 补充各stage目录的具体用途说明
- 新增代码维护时的注意事项
- 保持文档与当前项目实践一致

* refactor(toolchain): 简化数学库默认设置逻辑

移除对MKL和AOCL的自动检测,始终默认使用openblas作为数学库

* docs(toolchain): 更新GPU架构选项的说明文档

将GPU架构选项从具体的硬件型号更新为CUDA架构编号,以提供更灵活的兼容性

* feat(toolchain): 更新工具链脚本和依赖版本

refactor(toolchain): 重构工具链安装脚本,增加模块化和错误处理
docs(toolchain): 更新脚本注释和帮助信息
fix(toolchain): 修复OpenBLAS架构检测逻辑
style(toolchain): 统一代码格式和缩进

* docs(toolchain): 更新离线安装推荐说明中的日期和下载步骤

更新推荐离线安装的注释日期至2025年,并调整下载步骤顺序和描述

* fix(openblas): 仅在未找到openblas_dir时解压openblas包

* refactor(toolchain): remove test building scripts

* docs(toolchain): 添加ABACUS工具链重构验证报告和进度报告

* feat(工具链): 添加GCC离线安装支持并优化依赖下载逻辑

添加对GCC离线安装的支持,引入repack_filename变量用于打包包含依赖的GCC源码
优化依赖下载逻辑,优先尝试官方源,失败后回退到镜像源
当检测到无网络连接时跳过依赖下载以支持纯离线模式

* docs(toolchain): 添加废弃警告提示并引导迁移到新版本脚本

* feat(工具链): 优化工具链配置管理和安装脚本

- 添加版本配置导出功能以支持阶段脚本
- 优化OpenBLAS架构检测逻辑,提前解压包
- 修复版本验证中的包名大小写问题
- 为ELPA和LibXC添加包变量提前定义
- 改进配置验证器,支持MKL作为ScaLAPACK替代
- 统一多个安装脚本的包变量定义位置
- 重构包版本导出逻辑,动态构建版本字符串
- 更新工具链模板脚本,添加版本控制和执行模式
- 完善文档,记录GCC脚本优化和网络处理改进
- 重构配置管理器,支持更灵活的数学库和MPI设置

* refactor(工具链): 优化脚本架构并修复ELPA与MKL集成问题

重构工具链脚本实现模块化架构,修复ELPA在使用MKL时的BLACS检测问题。主要变更包括:
1. 移除过时注释和冗余代码
2. 为所有安装脚本添加pack-run模式支持
3. 优化MKL环境变量设置,适配不同MPI实现
4. 修复ELPA安装时的SCALAPACK配置传递
5. 更新Intel编译器默认使用ifx
6. 改进配置管理器的静默模式处理

重构后工具链更易维护且完全兼容现有功能,为后续扩展奠定基础

* feat(toolchain): 更新工具链版本至2025.3并重构构建脚本

更新VERSION文件至2025.3版本
统一各工具链脚本中的作者和日期信息
重构构建脚本以支持MLALGO功能并优化GPU支持
添加ABACUS构建脚本自动生成功能开发文档

* docs(toolchain): 更新文档和作者信息

refactor(ui): 改进终端用户界面和输出信息
- 添加彩色输出和更美观的进度显示
- 优化安装完成后的使用说明格式
- 增强MPI检测时的信息显示

chore: 移除过时的离线安装说明

* docs(toolchain): 在构建脚本中注释CUDA编译器路径选项

* feat(工具链): 新增智能证书验证策略和并行编译控制功能

新增DOWNLOAD_CERT_POLICY环境变量支持strict|smart|skip三种证书验证模式
移除-j参数并改用NPROCS_OVERWRITE环境变量控制并行编译核数
更新README文档详细说明新功能和使用方法

* refactor(toolchain): 统一MPI实现参数名并更新文档

将各工具链脚本中的MPI实现参数从`MPI_IMPLEMENTATION`统一改为`MPI_MODE`以保持一致性
更新README文档,添加新功能说明并删除过时的Details.md文件

* [Feature] Add NEP as esolver (deepmodeling#6603)

* update NEP_CPU

* update toolchain and document

* update cmake file

* update cmake file

* update test

* update toolchain script

* remove nep_cpu; update test case and toolchain script

* update unit test

* update test.yml

* update related doc.

---------

Co-authored-by: Mohan Chen <mohanchen@pku.edu.cn>

* feat(ui): 优化用户界面兼容性和错误提示

增加Unicode图标的三级fallback策略,确保在不同终端环境下的显示兼容性
增强GCC版本检查的错误提示,提供详细的问题分析和解决方案
添加glibc版本检测和系统信息摘要功能
改进版本号显示功能,支持智能查找VERSION文件
更新帮助文档和进度报告,反映最新优化内容

* refactor(toolchain): 将NEP选项加入注释

* style(toolchain): 统一调整可选特性的变量顺序

* feat(toolchain): 添加NEP包支持并更新相关文档

在工具链中添加NEP(Neural Evolution Potential)包支持,包括:
1. 在package_versions.sh中添加版本管理
2. 更新config_manager.sh中的配置项
3. 修改install_nep.sh使用集中版本管理
4. 更新用户界面显示
5. 添加NEP集成案例文档
6. 更新README中的包列表和文档

此变更使工具链支持NEP包的安装和配置,为ABACUS提供机器学习势能支持

* feat(toolchain): 增强package-version参数支持多键值对

修复--package-version参数仅支持单个键值对的问题,现支持两种写法:
1. 多个独立参数:--package-version PKG1:VER1 --package-version PKG2:VER2
2. 单个参数多键值对:--package-version PKG1:VER1 PKG2:VER2

同时更新相关文档说明和README,添加环境变量使用注意事项

* add system option for libcomm, libri and libnpy

* refactor(toolchain): 对stage4的头文件添加system和path选项支持

* fix(toolchain): 移除合并冲突标记并改进配置验证

重构配置验证逻辑以更精确检查cmake依赖
当使用系统cmake时增加额外检查

* feat(validator): 优化系统检测与错误计数机制

- 新增错误组概念,区分逻辑错误与描述行,提供准确错误计数
- 实现智能cmake检查,根据用户配置进行条件验证和版本检测
- 增强GCC工具链验证,包括版本一致性检查和最小版本要求
- 提供更详细的错误信息和解决方案指导

* refactor(toolchain): 统一安装脚本中环境变量设置的格式和顺序

确保在system选项下,环境变量不会被额外写入setup中

* move a doc

* chore: remove Trae Files

* fix(install_nep.sh):
unify --pack-run exit way

* refactor(toolchain):  clean the redundant and out-dated comments

* Update paths in install_cereal.sh for include directory

Modify the wrong paths.

* Fix path setup for cereal installation script

* Fix CEREAL include path in build script

The Include  Dir should be "include/", not "include/cereal/".

---------

Co-authored-by: m0sey <61280022+MoseyQAQ@users.noreply.github.com>
Co-authored-by: Mohan Chen <mohanchen@pku.edu.cn>
Co-authored-by: Levi Zhou <31941107+ZhouXY-PKU@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Compile & CICD & Docs & Dependencies Issues related to compiling ABACUS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Toolchain 202503 update plan

4 participants