====== 概要 ======
ITensorのインストール方法。
必須ではありませんが、以下のライブラリにも対応しているので、使いたい場合はそちらもインストールしてください。
* MKL
* HDF5
* OpenMP
IntelコンパイラはC++17に対応していないため使用できません
====== 準備 ======
===== Linux(WSLを含む) =====
OSをアップデートします。
$ sudo apt update
$ sudo apt upgrade
必要に応じてコンピュータを再起動してください。
コンパイラ類とLAPACK(MKLを使う場合は不要)をインストールします。
また、GitHubからITensorを入手する場合はgitも入れておきます。
$ sudo apt install build-essential
$ sudo apt install liblapack-dev liblapack-doc
$ sudo apt install git
===== MacOS =====
Mac App StoreよりXCodeをインストールしてください。
* https://apps.apple.com/jp/app/xcode/id497799835
インストールできたらXCodeを起動し、使用条件に同意してください。
====== 入手 ======
===== githubから入手する場合 =====
公式にはこちらが推奨されています。
itensorは好きな名前にしてください。
$ git clone https://github.com/ITensor/ITensor itensor
===== tar.gzあるいはzipを展開する場合 =====
以下のサイトから最新版をダウンロードします
* https://github.com/ITensor/ITensor/releases
入手したファイルをホーム・ディレクトリにおいて展開します(ファイル名はバージョンによって変化します)
$ tar -xzvf ITensor-3.1.11.tar.gz # tarの場合
$ unzip ITensor-3.1.11.zip # zipの場合
$ mv ITensor-3.1.11/ itensor/ # 必要に応じて好きな名前にしてください
====== コンパイル ======
ダウンロードしたITensorのディレクトリに入ります。
$ cd itensor/
コンパイルの設定はoptions.mkというファイルを作って書き込みます。
サンプルが付属しているので、これを書き換えます。
$ cp options.mk.sample options.mk
$ vim options.mk
* 書き換えはファイルの指示に従って編集してください
* [1] ... 使用するコンパイラを設定します。必須
* [2] ... 使用する線形代数ライブラリを指定します。必須
* [3] ... HDF5を利用する場合は設定します。任意
* [4] ... OpenMPを利用する場合は設定します。任意
* [5] ... コンパイラの最適化機能を設定します。任意
* MKLを使う場合は、パスを自分の環境のものに合わせてください
options.mkの編集が終わったら、ITensorをビルドします
$ make
====== 使い方 ======
===== サンプルプログラム =====
sampleというディレクトリにITensorを使った計算の具体例がいくつか入っているので、遊んでみるとよいでしょう。
$ cd sample/
$ make dmrg
$ ./dmrg
(略)
Ground State Energy = -138.9400860763
Using inner = -138.9400860763
"dmrg"はスピン1のハイゼンベルグ模型(100サイト、開境界条件)の計算です。
この他の例については同じsampleディレクトリ内にあるREADMEを参照してください。
===== チュートリアル =====
簡単な模型で遊ぶ程度でしたらサンプルをいじるだけで十分ですが、本格的に使い始めたい場合はまずチュートリアルの練習問題を解いていくと良いでしょう。
チュートリアルに使用されているプログラムは tutrial というディレクトリに入っています。
チュートリアルのスライドは以下のサイトから手に入ります。
* https://www.simonsfoundation.org/event/2019-many-electron-collaboration-summer-school/
* [Coding Workshop Agenda and Slides]にあります
あとは、ITensorのHPの[[http://itensor.org/docs.cgi|Learn]]から必要なものを読んでいきます。
基本的な使い方でわからないことがあれば、[[http://itensor.org/support/|Discuss]]で検索すると解決策が見つかるかもしれません。
====== Intelコンパイラが使えた時代のoptions.mk ======
バージョン1ではIntelコンパイラが使えました。
(略)
## Set which compiler to use by defining CCCOM:
CCCOM=icpc -m64 -std=c++11
(略)
PLATFORM=mkl
## MKL example (recommended with Intel C++ compiler icpc for performance on Intel CPUs)
BLAS_LAPACK_LIBFLAGS=-L/opt/intel/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_rt -lmkl_core -liomp5 -lpthread
BLAS_LAPACK_INCLUDEFLAGS=-I/opt/intel/mkl/include
(略)