跳至内容
在 Mac/Linux 上从源码安装 ALPS

在 Mac/Linux 上从源码安装 ALPS

在大多数情况下,建议通过二进制包安装 ALPS。但若需更多用户控制和配置,从源码安装可能是更好的选择。

安装必要依赖项

ALPS 依赖多个外部库。
请根据系统选择 一个 MPI 实现和 一个 BLAS 提供方:

依赖项最低版本安装包
HDF51.10.0libhdf5-dev
CMake3.18cmake
C++ 编译器GCC 10.5.0 或 Clang 13.0.1build-essential
Boost1.76
(若 NumPy ≥ 2.0 需 1.87)
见下文
MPIOpenMPI 4.0 MPICH 4.0libopenmpi-dev / libmpich-dev
BLAS0.3libopenblas-dev
Python3.9python.org

Ubuntu / Debian / WSL
$ sudo apt update
$ sudo apt install build-essential cmake \
                   libhdf5-dev \
                   libopenblas-dev \
                   libopenmpi-dev openmpi-bin # 或: libmpich-dev mpich

# 安装 Python 库:
$ pip install numpy scipy
# 或
$ python3 -m pip install numpy scipy

请勿通过 apt 安装 Boost。 ALPS 必须从源码编译 Boost,原因有二:

  1. 自定义编译器标志 — ALPS 需要 -DBOOST_NO_AUTO_PTR-DBOOST_FILESYSTEM_NO_CXX20_ATOMIC_REF 以兼容 C++17/20;libboost-dev 软件包不设置这些标志,会导致链接错误。
  2. Python ABI 匹配Boost.Python 组件必须针对 ALPS 使用的同一 Python 解释器进行编译。预构建软件包针对系统 Python,若使用其他解释器则会出现不匹配。

CMake 会自动处理:若未设置 Boost_SRC_DIR,则在配置时下载并编译 Boost 1.87(需要网络连接)。如需离线构建,请参阅下方编译步骤中的替代方案。

macOS (通过 Homebrew)
$ brew update
$ brew install cmake hdf5 \
               openblas open-mpi # 或: mpich

# 安装 Python 库:
$ pip3 install numpy scipy

请勿通过 Homebrew 安装 Boost。 ALPS 必须从源码编译 Boost,原因有二:

  1. 自定义编译器标志 — ALPS 需要 -DBOOST_NO_AUTO_PTR-DBOOST_FILESYSTEM_NO_CXX20_ATOMIC_REF 以兼容 C++17/20;Homebrew 的 boost formula 不设置这些标志,会导致链接错误。
  2. Python ABI 匹配Boost.Python 组件必须针对 ALPS 使用的同一 Python 解释器进行编译。Homebrew Boost 针对 Homebrew 自带的 Python,与其他解释器会出现不匹配。

CMake 会自动处理:若未设置 Boost_SRC_DIR,则在配置时下载并编译 Boost 1.87(需要网络连接)。如需离线构建或复用已解压的存档,请先手动下载:

$ curl -LO https://archives.boost.io/release/1.87.0/source/boost_1_87_0.tar.gz
$ tar -xzf boost_1_87_0.tar.gz
macOS (通过 MacPorts)
$ sudo port selfupdate
$ sudo port install cmake \
                   hdf5 \
                   OpenBLAS \
                   openmpi-clang20   # 请参阅下方关于选择变体的说明
$ sudo port select --set mpi openmpi-clang20-fortran

# 安装 Python 库:
$ pip3 install numpy scipy

选择 OpenMPI 变体: MacPorts 为每个编译器版本提供独立的端口,命名为 openmpi-<compiler><version>(例如 openmpi-clang20openmpi-gcc15)。上示的 clang20 变体对应 LLVM Clang 20 端口,可与 Xcode 的 Apple Clang 共存。若使用不同编译器,请安装对应变体并相应调整 port select 命令。

port select 步骤是必须的:若不执行此步骤,CMake 搜索的裸 mpirunmpiccmpicxx 包装器将不存在。

请勿通过 MacPorts 安装 Boost。 ALPS 必须从源码编译 Boost,原因有二:

  1. 自定义编译器标志 — ALPS 需要 -DBOOST_NO_AUTO_PTR-DBOOST_FILESYSTEM_NO_CXX20_ATOMIC_REF 以兼容 C++17/20;MacPorts 的 boost 端口不设置这些标志,会导致链接错误。
  2. Python ABI 匹配Boost.Python 组件必须针对 ALPS 使用的同一 Python 解释器进行编译。MacPorts Boost 针对 MacPorts 自带的 Python,与其他解释器会出现不匹配。

CMake 会自动处理:若未设置 Boost_SRC_DIR,则在配置时下载并编译 Boost 1.87(需要网络连接)。如需离线构建或复用已解压的存档,请先手动下载:

$ curl -LO https://archives.boost.io/release/1.87.0/source/boost_1_87_0.tar.gz
$ tar -xzf boost_1_87_0.tar.gz

验证依赖项

$ gcc -v              # 必须 ≥ 10.5.0
$ cmake --version     # 必须 ≥ 3.18
$ mpirun --version    # 需为 OpenMPI 4.0 或 MPICH 4
$ python3 --version   # 必须 ≥ 3.9
$ python3 -c "import numpy, scipy; print('numpy', numpy.__version__, 'scipy', scipy.__version__)"

macOS — CMake 将使用哪个 Python? macOS 上的 CMake 在搜索 $PATH 之前会先搜索 Apple 的框架路径,即使通过 Homebrew 或 MacPorts 安装了更新版本的 Python,也可能默认选择 Xcode 自带的 Python 3.9。在 cmake 配置时,请查找如下输出行:

-- Found Python: /path/to/python (found version "X.Y.Z")

若路径或版本不符合预期,请在 cmake 命令中添加 -DPython3_EXECUTABLE=/path/to/your/python3 显式指定。典型路径为 /opt/homebrew/bin/python3(Homebrew)或 /opt/local/bin/python3(MacPorts)。请确保 CMake 使用的 Python 已安装 numpyscipy

下载与编译

现在可以下载并编译 ALPS 库。在以下命令中,请将 </path/to/install/dir> 替换为您系统的实际安装目录。

运行这些命令之前,请注意以下两个预期等待:

  1. cmake 配置(约 1–3 分钟): CMake 在配置时会静默下载 Boost 1.87(约 130 MB)。下载完成前终端将无任何输出,等待一两分钟是正常的,请勿中断。
  2. cmake --build(5–20 分钟): 即使使用全部 CPU 核心,从源码编译 ALPS 和 Boost 也需要数分钟。终端将持续打印编译输出——这也是正常现象。
$ git clone https://github.com/alpsim/ALPS alps-src
$ cmake -S alps-src -B alps-build                                     \
       -DCMAKE_INSTALL_PREFIX=</path/to/install/dir>                  \
       -DCMAKE_CXX_FLAGS="-DBOOST_NO_AUTO_PTR                         \
       -DBOOST_FILESYSTEM_NO_CXX20_ATOMIC_REF"
# ^ Boost(约 130 MB)在此处下载;1–3 分钟内无输出属正常
$ cmake --build alps-build -j$(nproc 2>/dev/null || sysctl -n hw.logicalcpu)
$ cmake --build alps-build -t test

-j 控制并行编译数。 上述表达式在 Linux(nproc)和 macOS(sysctl -n hw.logicalcpu)上均可自动使用全部逻辑 CPU 核心。也可手动指定,如 8 核时使用 -j 8

离线或低速连接构建: 默认情况下 CMake 在配置时下载 Boost 1.87。如需避免下载,请先手动解压存档并指定路径:

$ cmake -S alps-src -B alps-build                                     \
       -DCMAKE_INSTALL_PREFIX=</path/to/install/dir>                  \
       -DBoost_SRC_DIR=</path/to/boost_1_87_0>                        \
       -DCMAKE_CXX_FLAGS="-DBOOST_NO_AUTO_PTR                         \
       -DBOOST_FILESYSTEM_NO_CXX20_ATOMIC_REF"

故障排除

  • 需使用其他 MPI/BLAS?
    将上述包名替换为您集群的模块(如 Intel MKL/OneAPI, AMD AOCL 等)。CMake 会自动定位这些包并生成编译指令。
  • Python 错误
    请确保 Python ≥ 3.9 已安装,且 numpyscipy 安装在 CMake 所选的同一 Python 下。在 macOS 上,CMake 可能选择 Xcode 自带的 Python 而非 Homebrew/MacPorts 的 Python——请检查 CMake 输出中的 Found Python: 行,必要时使用 -DPython3_EXECUTABLE=/path/to/python3 指定解释器(参见验证依赖项步骤)。
  • MPI 版本不匹配?
    确保 CMake 使用的 MPI 版本与 mpirun --version 一致。
  • Boost 错误
    针对 NumPy ≥ 2.0 构建 ALPS Python 绑定需要 Boost ≥ 1.87(NumPy 2.0 引入的 API 变更仅 Boost 1.87+ 支持)。Boost 1.76–1.86 仅支持 NumPy < 2.0。已测试的编译器/Boost/Python 组合请参阅编译说明。

编译说明

以下 Boost、Python 和 C++ 编译器的组合已通过测试:

  • GCC 10.5.0, Python 3.9.19 (NumPy < 2.0), Boost 1.76.0
  • GCC 11.4.0, Python 3.10.14 (NumPy < 2.0), Boost 1.81.0, 1.86.0
  • GCC 12.3.0, Python 3.10.14 (NumPy < 2.0), Boost 1.81.0, 1.86.0
  • Clang 13.0.1, Python 3.10.14 (NumPy < 2.0), Boost 1.81.0, 1.86.0
  • Clang 14.0.0, Python 3.10.14 (NumPy < 2.0), Boost 1.81.0, 1.86.0
  • Clang 15.0.7, Python 3.10.14 (NumPy < 2.0), Boost 1.81.0, 1.86.0

NumPy ≥ 2.0 时,ALPS 的 Boost.Python 绑定需要 Boost 1.87.0 或更高版本(CMake 自动下载)。

若依赖包安装在非标准路径,CMake 可能无法定位。ALPS 使用标准 CMake 机制(FindXXX.cmake)定位包,可参考:


成功编译后需执行安装。安装路径由配置时的 -DCMAKE_INSTALL_PREFIX=/path/to/install/directory 参数指定,也可在安装阶段通过 --prefix 参数修改(参见 cmake manual)。
运行安装命令:

$ cmake --install alps-build

配置环境

安装目录是自包含的,但您的 shell 尚不知晓其位置。ALPS 提供了一个设置脚本,可将正确目录添加到 PATHLD_LIBRARY_PATHPYTHONPATH。使用 ALPS 前请先加载该脚本:

# bash / zsh:
$ source </path/to/install/dir>/bin/alpsvars.sh

# csh / tcsh:
$ source </path/to/install/dir>/bin/alpsvars.csh

为避免每次打开新终端都需执行此命令,请将 source 行添加到 shell 启动文件(~/.bashrc~/.zshrc~/.cshrc)中。

验证安装 — 运行任一 ALPS 可执行文件:

$ spinmc --help

若命令可找到并打印帮助信息,则 ALPS 安装和环境配置均已成功。