コンテンツにスキップ
ソースからのMac/LinuxへのALPSインストール

ソースからのMac/LinuxへのALPSインストール

多くの場合、バイナリからのALPSインストールが推奨されます。ただし、より高度な制御と設定が必要な場合は、ソースからのインストールが適切な選択肢となります。

必要な依存関係のインストール

ALPSはいくつかの外部ライブラリに依存しています。
システムに適した 1つ のMPI実装と 1つ のBLASプロバイダを選択してください:

依存関係最低バージョンインストールパッケージ
HDF51.10.0libhdf5-dev
CMake3.18cmake
C++ コンパイラGCC 10.5.0 または Clang 13.0.1build-essential
Boost1.76
(NumPy ≥ 2.0 向けに ALPS Python バインディングをビルドする場合は 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をソースからコンパイルする必要があります。理由は2つあります:

  1. カスタムコンパイラフラグ — ALPSはC++17/20互換性のために-DBOOST_NO_AUTO_PTR-DBOOST_FILESYSTEM_NO_CXX20_ATOMIC_REFを必要としますが、libboost-devパッケージはこれらを設定しないため、リンクエラーが発生します。
  2. Python ABIの一致Boost.PythonコンポーネントはALPSが使用するPythonインタープリタと全く同じものに対してコンパイルされる必要があります。パッケージマネージャーのビルドはシステムPythonを対象としており、別のインタープリタを使うと、警告なしにABIが一致しなくなることがあります。

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をソースからコンパイルする必要があります。理由は2つあります:

  1. カスタムコンパイラフラグ — ALPSはC++17/20互換性のために-DBOOST_NO_AUTO_PTR-DBOOST_FILESYSTEM_NO_CXX20_ATOMIC_REFを必要としますが、Homebrewのboostフォーミュラはこれらを設定しないため、リンクエラーが発生します。
  2. Python ABIの一致Boost.PythonコンポーネントはALPSが使用するPythonインタープリタと全く同じものに対してコンパイルされる必要があります。HomebrewのBoostはHomebrew独自のPythonを対象としており、別のインタープリタを使うと、警告なしにABIが一致しなくなることがあります。

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をソースからコンパイルする必要があります。理由は2つあります:

  1. カスタムコンパイラフラグ — ALPSはC++17/20互換性のために-DBOOST_NO_AUTO_PTR-DBOOST_FILESYSTEM_NO_CXX20_ATOMIC_REFを必要としますが、MacPortsのboostポートはこれらを設定しないため、リンクエラーが発生します。
  2. Python ABIの一致Boost.PythonコンポーネントはALPSが使用するPythonインタープリタと全く同じものに対してコンパイルされる必要があります。MacPortsのBoostはMacPorts独自のPythonを対象としており、別のインタープリタを使うと、警告なしにABIが一致しなくなることがあります。

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はAppleのフレームワークパスを$PATHより先に検索するため、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>を実際のインストールディレクトリに置き換えてください。

これらのコマンドを実行する前に、次の2か所で待ち時間が発生することに注意してください:

  1. cmake設定(約1〜3分): CMakeは設定時にBoost 1.87(約130 MB)を自動的にダウンロードします。ダウンロード完了まで1〜2分間ターミナルに出力が表示されませんが、これは正常です。中断しないでください。
  2. cmake --build(5〜20分): ALPSとBoostをソースからコンパイルするには、全CPUコアを使用しても数分かかります。ターミナルはコンパイラの出力で埋め尽くされます — これも正常です。
$ 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はこれらのパッケージの位置を自動検出し、Makefileにコンパイル指示を生成します。
  • Pythonエラー
    Python ≥ 3.9がインストールされており、CMakeが選択したPythonと同じものにnumpyscipyがインストールされていることを確認してください。macOSでは、CMakeがHomebrew/MacPortsのPythonではなくXcodeに同梱された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、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 Python バインディングをビルドする場合は、Boost 1.87.0以降が必要です(CMakeが自動でダウンロードします)。

依存パッケージを非標準の場所にインストールした場合、CMakeがパッケージを見つけられない可能性があります。ALPSは標準のCMakeメカニズム(FindXXX.cmake)を使用してパッケージを検索します。以下の情報が役立つ場合があります:


コードのビルドに成功したら、インストールを実行する必要があります。インストール先は設定時に-DCMAKE_INSTALL_PREFIX=/path/to/install/directoryパラメータで指定します。または、インストール段階で--prefixパラメータに新しいパスを明示的に指定することも可能です(CMakeマニュアル参照)。

インストールコマンド:

$ cmake --install alps-build

環境設定

インストール先のディレクトリに必要なファイルがすべて含まれていますが、まだシェルからは認識されていません。ALPSはPATHLD_LIBRARY_PATHPYTHONPATHに適切なパスを追加するセットアップスクリプトを提供しています。ALPSを使用する前に一度 source コマンドで読み込んでください:

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

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

すべてのターミナルセッションでこのコマンドを実行しなくて済むように、source行をシェルのスタートアップファイル(~/.bashrc~/.zshrc、または~/.cshrc)に追加してください。

インストールの確認 — ALPSの実行ファイルのいずれかを実行してください:

$ spinmc --help

コマンドが見つかりヘルプメッセージが表示されれば、ALPSのインストールと環境設定は正常に完了しています。

ビデオチュートリアル