システムソフトウェア、フリーソフト¶
Info
本ページのコマンドライン例では、以下の表記を使用します。
[login]$ : ログインノード
[rNnN]$ : 計算ノード
[login/rNnN]$ : ログインノードまたは計算ノード
[yourPC]$ : ログインノードへの接続元環境
PyPI上にあるPythonのパッケージを使いたい (Theano等)¶
以下のコマンドでユーザのホームディレクトリにインストールすることができます。(下記例はTheanoの場合)
[login]$ pip install --user theano
python/3.9.18を用いて最新版のnumpy, mpi4py, chainer, tensorflow, cupy等をインストールする方法について¶
python/3.9.18を使って自分の環境下にnumpy, mpi4py, chainer, tensorflow等をインストールしたい場合は以下のようにします。
Info
cupy等GPUを用いるモジュールをインストールする場合は、qrshで計算ノードを確保してから行って下さい。
[rNnN]$ module purge
[rNnN]$ module load intel cuda openmpi
[rNnN]$ python3 -m pip install --user python_modules
バージョンを指定したい場合は
[login/rNnN]$ python3 -m pip install --user python_modules==version
Rで自分のライブラリをインストールして使いたい¶
TSUBAME4.0 ではR-4.3.2が利用できます。
基本パッケージ以外に標準で利用可能なライブラリは以下となります。
Rmpi, rpud
上記以外のライブラリを利用したい場合には、ご自分でのインストール操作が必要となります。
パーミッションの関係で、Rのインストールディレクトリは不可ですので、ライブラリパスを指定の上、自分所有のライブラリをインストール/管理できますます。手順は以下となります。
ライブラリパスを$HOME/Rlib、ライブラリ名はtestlib、testlib.tar.gzはソースパッケージと仮定して、以下のように操作します。
[rNnN]$ module purge # モジュール設定のパージ
[rNnN]$ module load cuda openmpi R # モジュールの読み込み
[rNnN]$ mkdir ~/Rlib # ライブラリインストールディレクトリの作成(無ければ)
[rNnN]$ wget https://cran.r-project.org/src/contrib/testlib.tar.gz # パッケージのダウンロード
[rNnN]$ R CMD INSTALL -l $HOME/Rlib testlib.tar.gz # ライブラリインストール
[rNnN]$ export R_LIBS_USER=$HOME/Rlib # ご自分のインストールライブラリの設定
[rNnN]$ R # ライブラリの利用
> library(testlib)
openmpiのmpi4pyでmpi4py.futures.MPIPoolExecutorを実行するとエラーになる¶
openmpiを用いたmpi4pyでmpi4py.futures.MPIPoolExecutorを実行すると以下のようなエラーが起こることがあります。
[rNnN:xxxxx] [[60041,0],0] ORTE_ERROR_LOG: Not found in file orted/pmix/pmix_server_dyn.c at line 87
1. 以下のコマンドの実行
[rNnN]$ mpirun -np <NP> python3 **-m mpi4py.futures** ./test.py
intel MPIでmpirun ... >& log.txt &とするとファイル出力が途中で止まってしまいます¶
intel MPIで
[rNnN]$ mpirun ... ./a.out >& log.txt &
その場合は以下のようにすると出力が止まらずに実行できます。
[rNnN]$ mpirun ... ./a.out < /dev/null >& log.txt &
Intel® oneAPI Math Kernel Libraryをリンクしたいが、リンクオプションをどうすればよいですか?¶
Intel® oneAPI Math Kernel Libraryをリンクしたい場合、Intel® oneAPI Math Kernel Library Link Line Advisorに適切な項目を入力し、"Use this link line”からリンクオプションをコピーして下さい。
Intel OneAPIでifort,icc,icpcコマンドが使用できません¶
Intel oneAPI 2024から、iccコマンドおよびicpcコマンドが使用できなくなりました。
icxコマンドおよびicpxコマンドを使用してください。
また、Intel oneAPI 2025から、ifortコマンドが使用できなくなりました。
ifxコマンドを使用してください。
Intel oneAPI利用時にC++17関連のエラーが発生する。¶
Intel oneAPI 2024から、C++のデフォルトの規格がC++14からC++17に変更になりました。 それに伴い、以下のエラーが発生する場合があります。
- error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
- error: ISO C++17 does not allow dynamic exception specifications [-Wdynamic-exception-spec]
詳細についてはこちらのページをご参照ください。
本エラーが発生した場合、以下のいずれかをご検討ください。
- C++17規格に適合するよう、ソースコードを修正する。
- 翻訳時オプション -std=c++14 を指定し、C++14規格でコンパイルする。
python の module load が出来ません¶
TSUBAME4.0ではデフォルトでpython 3が利用可能です。
module load は必要ありません。
OpenMPI/Intel MPI実行時に、hcoll 関連のErrorやsegmentation faultが発生する。¶
以下の環境変数を指定することで改善される場合があります。
OpenMPI利用時:export OMPI_MCA_coll=^hcoll
Intel MPI利用時:export I_MPI_COLL_EXTERNAL=0
UCX_ROOT=/apps/t4/rhel9/free/ucx/1.16.0-rc4/gcc11.4.1/lib
export LD_PRELOAD=$UCX_ROOT/libucm.so:$UCX_ROOT/libucp.so:$UCX_ROOT/libucs.so:$UCX_ROOT/libucs_signal.so:$UCX_ROOT/libuct.so
Info
ここで紹介しているLD_PRELOAD対応を実施する場合、必ず1ノードで実行してください。本対応を実施したQUANTUM ESPRESSOをマルチノードで実行した際にカーネルパニックが発生する事象が確認されており、他のアプリケーションでも同様の問題が発生する恐れがあります。
Intel Compilerで -lblas を指定してコンパイルしたバイナリが、実行時に異常終了する¶
Intel Compilerでは、Intel MKLという数値計算ライブラリが用意されています。
Intel CompilerでBLASを利用する際は、 -lblasではなくIntel MKLのライブラリをリンクするようオプションを変更してください。リンク用のオプションについてはIntel MKLのリンク方法をご参照ください。
なお、数値計算ライブラリはIntel MKLのような専用ライブラリを含め、多種多様なライブラリが存在しています。その中には、ライブラリ間で依存関係にあるものや競合関係にあるものも存在します。
数値計算ライブラリでエラーが発生した場合、競合関係の確認や別のライブラリの利用もご検討ください。
TensorFlow実行時にGPUが使用されない¶
TensorFlowをGPU上で動作させる場合、利用するTensorFlow,python,cudnn,cudaの組み合わせに条件があります。
詳細については、Tensorflow をご参照ください。
Alphafold関連のデータベースを使用したい¶
以下のソフトウェアで利用するデータベースをTSUBAME上に用意しました。これらのデータベースファイルは容量が大きいため、可能な限り個別にダウンロードすることはお避け下さい。
利用方法については、それぞれのリンク先をご参照ください。
- Alphafold2用データベース
- Alphafold3用データベース
- LocalColabfold用データベース
TSUBAME4.0に導入されていないバージョンのpythonを利用したい¶
TSUBAME4.0に導入されていないバージョンのpythonを利用したい場合、ご自身で導入いただく必要があります。
pythonの導入および確認方法について、3つの方法を紹介します。
Info
- 本手順、およびご自身で導入されたpythonについてはサポート対象外となります。
- ここではバージョン 3.13.4 の導入例を示します。別のバージョンを導入したい場合は 3.13.4 の部分を読み替えてください。
- 本作業は必ず計算ノード上で実施してください。インタラクティブジョブ専用キュー(iqrsh)またはインタラクティブジョブ(qrsh)の利用を想定しています。
conda環境にインストールする¶
TSUBAME4.0に導入されているminicondaを利用する例を示します。
[rNnN]$ module load miniconda
# minicondaのmodule load時に「please do: eval~~~」というメッセージが出ますので、minicondaのページを参考に設定を行います。
[rNnN]$ eval "$(/apps/t4/rhel9/free/miniconda/24.1.2/bin/conda shell.bash hook)"
# 導入したいpythonのバージョンを確認します。
[rNnN]$ conda search python | tail -n1 # 最新バージョンのみ表示する場合。全バージョンを表示したい場合は | tail -n1 を外してください。
# pythonを含んだ仮想環境を作成します。
[rNnN]$ conda create -n [仮想環境名] python==[pythonのバージョン] -y
[login/rNnN]$ module load miniconda
[login/rNnN]$ conda activate [仮想環境名] # 作成した仮想環境の読み込み
(仮想環境名)[login/rNnN]$ python -V # pythonのバージョンを確認 (任意)
ソースコードからインストールする¶
Info
利用可能なバージョンなどについてはpython.orgをご確認ください。
[rNnN]$ export pybase=[インストールパス]
[rNnN]$ export pyver=3.13.4 # 導入するバージョンの設定
[rNnN]$ export pyinst=${pybase}/python${pyver} # インストールパスの設定
# ソースコードのDL & 展開します。
[rNnN]$ mkdir ${pyinst} && cd ${pyinst}
[rNnN]$ wget https://www.python.org/ftp/python/${pyver}/Python-${pyver}.tgz
[rNnN]$ tar xf Python-${pyver}.tgz && cd Python-${pyver}
# 構成・ビルド・インストールします。 (オプション、log_ファイル名は必要に応じて変更してください)
[rNnN]$ ./configure --prefix=${pyinst} 2>&1 | tee -a log_config
[rNnN]$ make -j 2>&1 | tee -a log_make
[rNnN]$ make install 2>&1 | tee -a log_inst
Info
${pyinst} の部分は、自身で指定したインストールパスに置き換えてください。
[login/rNnN]$ export PATH=${pyinst}/bin:${PATH} # インストールしたpythonへのパスを環境変数PATHに指定
[login/rNnN]$ python -V # pythonのバージョンを確認 (任意)
pyenv環境にインストールする¶
Info
pyenv利用時の設定については環境によって異なります。公式サイトを参考にしてください。pyenvについてはTSUBAME4.0のサポート対象外です。
# pyenvをインストールします。
[rNnN]$ export pybase=[pyenvのインストールパス] # pyenvのインストールパスの設定
[rNnN]$ export pyver=3.13.4 # 導入するバージョンの設定
[rNnN]$ cd ${pybase}
[rNnN]$ git clone https://github.com/pyenv/pyenv
[rNnN]$ export PATH=${pybase}/pyenv/bin:${PATH}
[rNnN]$ pyenv --version
# pyenvで提供しているpythonのバージョンを確認します。
[rNnN]$ pyenv install --list | grep ${pyver}
# 指定したバージョンをインストールし、当該バージョンをpyenvのデフォルトに変更します。
[rNnN]$ pyenv install ${pyver}
[rNnN]$ pyenv versions
[rNnN]$ pyenv global ${pyver}
インストールしたpythonを利用するには、以下の手順を実施してください。
Info
- ${pybase} , ${pyver} の部分は、インストール時に自身で指定した値に置き換えてください。
- export PATH=${pybase}/pyenv/bin:${PATH} の指定は .bashrc に定義することで省略可能です。
[login/rNnN]$ export PATH=${pybase}/pyenv/bin:${PATH} # インストールしたpyenvへのパスを環境変数PATHに指定
[login/rNnN]$ pyenv global ${pyver} # pythonのバージョンを${pyver}に指定したバージョンに切り替え
[login/rNnN]$ python -V # pythonのバージョンを確認 (任意)
OpenMPI利用時にCPUコアの割当方法を設定したい¶
OpenMPI利用時にCPUコアの割当方法を設定する場合、代表的な方法として以下が挙げられます。
- numactl コマンドを利用する
- --bind-to , --map-by , --rand-by など mpirun コマンドのオプションを利用する
numactl コマンドの利用方法については man numactl を、mpirunコマンドの各オプションについてはman mpirun をご参照ください。
[例用例]
1プロセス 192スレッド実行の場合、デフォルトでは1つのコア(CPU)にスレッドが集中しました。
$ export OMP_NUM_THREADS=192
$ mpirun -npernode 1 -n 1 -x LD_LIBRARY_PATH -x OMP_NUM_THREADS ./a.out
(topコマンドにP(Last Used Cpu (SMP))を追加表示して確認 )
PID USER S %CPU TIME+ COMMAND P
3112554 ux00000 S 0.0 0:00.00 a.out 192
3112555 ux00000 S 0.0 0:00.00 a.out 192
3112556 ux00000 S 0.0 0:00.01 a.out 192
3112557 ux00000 S 0.0 0:00.00 a.out 192
3112558 ux00000 S 0.0 0:00.00 a.out 192
(以下略)
--bind-to numa オプションを指定することでnumaごとに分散して割り付けられました。
$ export OMP_NUM_THREADS=192
$ mpirun --bind-to numa -npernode 1 -n 2 -x LD_LIBRARY_PATH -x OMP_NUM_THREADS ./a.out
(topコマンドに、P(Last Used Cpu (SMP))を追加表示して確認 )
PID USER S %CPU TIME+ COMMAND P
3116060 ux00000 S 0.0 0:00.00 a.out 57
3116061 ux00000 S 0.0 0:00.00 a.out 193
3116062 ux00000 S 0.0 0:00.00 a.out 194
3116063 ux00000 S 0.0 0:00.00 a.out 196
3116064 ux00000 S 0.0 0:00.00 a.out 199
(以下略)
Info
- 効果的なCPUコアの割当方法は実行する内容によって異なります。性能低下等に繋がる恐れもありますのでご注意ください。(CPUコアの割当方法などについてはサポート対象外です。)
- TSUBAME4.0 では、1ノードを複数人で使用するためCPU番号が0以外から始まることがあります。詳細はGaussian 利用時のCPU番号指定(%cpu)についてをご参照ください。
- numactlの利用例については、1つのジョブの中で複数のプログラムを別々のCPU/GPUで走らせたいも参考になります。
コンパイラとmpiモジュールの組み合わせについて¶
GNU、Intel oneAPI、NVDIA HPC SDK と OpenMPI の組み合わせで利用が可能です。
gcc についてはOS提供のものになります。 各コンパイラとOpenMPIの組み合わせの利用可能なバージョンについては以下のコマンドで確認してください。
[login/rNnN]$ gcc --version
[login/rNnN]$ module avail
Info
TSUBAME4.0で用意した下記OpenMPI以外を利用した場合、動作保証およびサポート対象外となりますのでご留意ください。
本ドキュメントに記載されたOpenMPIのバージョンは最新ではない可能性があります。 利用可能なバージョン一覧については module avail openmpi コマンドでご確認ください。( 特に理由がない場合、最新バージョンの利用を推奨します )
1. Intel版 OpenMPI
[rNnN]$ module purge
[rNnN]$ module load openmpi/5.0.2-intel
Loading openmpi/5.0.2-intel
Loading requirement: intel/2024.0.2 cuda/12.3.2
[rNnN]$ mpicc -v
Intel(R) oneAPI DPC++/C++ Compiler 2024.0.2 (2024.0.2.20231213)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /apps/t4/rhel9/isv/intel/compiler/2024.0/bin/compiler
Configuration file: /apps/t4/rhel9/isv/intel/compiler/2024.0/bin/compiler/../icx.cfg
Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/11
Selected GCC installation: /usr/lib/gcc/x86_64-redhat-linux/11
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
Found CUDA installation: /apps/t4/rhel9/cuda/12.3.2, version
2. GNU版 OpenMPI
[rNnN]$ module purge
[rNnN]$ module load openmpi/5.0.2-gcc
Loading openmpi/5.0.2-gcc
Loading requirement: cuda/12.3.2
[rNnN]$ mpicc -v
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/11/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-host-pie --enable-host-bind-now --enable-languages=c,c++,f
ortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/
bugzilla --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit -
-disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --en
able-plugin --enable-initfini-array --without-isl --enable-multilib --with-linker-hash-style=gnu --enable-offload-ta
rgets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_6
4=x86-64-v2 --with-arch_32=x86-64 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serial
ization=1
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.4.1 20230605 (Red Hat 11.4.1-2) (GCC)
3. NVIDIA HPC SDK版 OpenMPI
[rNnN]$ module purge
[rNnN]$ module load openmpi/5.0.2-nvhpc
Loading openmpi/5.0.2-nvhpc
Loading requirement: nvhpc/24.1
[rNnN]$ mpicc -v
Export NVCOMPILER=/apps/t4/rhel9/isv/nvidia/hpc_sdk/Linux_x86_64/24.1
Export PGI=/apps/t4/rhel9/isv/nvidia/hpc_sdk
nvc-Warning-No files to process
TSUBAME4.0でDockerは利用できますか?¶
TSUBAME4.0でSingularityは利用できますか?¶
TSUBAME4.0でコンテナは利用できますか?¶
TSUBAME4.0ではDockerは利用できません。スパコン向けコンテナ管理ソフトウェアのApptainer(旧:Singularity)が利用可能です。
詳細についてはコンテナの利用をご参照ください。
Tsubame4.0でJupyter Labは利用できますか?¶
利用可能です。詳細についてはOpen OnDemand 利用の手引きをご参照ください。
マルチスレッド/マルチプロセスに対応したデバッガ/プロファイラを使用したい¶
Linaro Forge(旧:Arm forge)が使用できます。利用方法については講習会ページに掲載されている「並列プログラミング」をご参照ください。
Apptainer 利用時にGLIBC not found エラーが発生する¶
Apptainer でフェイクルート機能(--fakeroot)を使用する場合、ホストとコンテナの間でlibcのバージョンを一致させる必要があります。
一致しない場合、以下のようなエラーが出力される場合があります。
/.singularity.d/libs/faked: /lib/x86_64-linux-gnu/libc.so.6: version`GLIBC_2.33' not found (required by /.singularity.d/libs/faked)
/.singularity.d/libs/faked: /lib/x86_64-linux-gnu/libc.so.6: version`GLIBC_2.34' not found (required by /.singularity.d/libs/faked)
fakeroot: error while starting the `faked' daemon.
/.singularity.d/libs/fakeroot: 1: kill: Usage: kill [-s sigspec | -signum |-sigspec] [pid | job]... or
kill -l [exitstatus]
VS Codeを利用したい¶
VS Codeを使用したログインノードへのアクセスについては、ログインノードに大きな負荷がかかるため禁止されています。
ログインノードにおけるプログラムの実行制限
TSUBAME4.0では、code server(VS codeのクローン)を使用したOpen OnDemand経由による計算ノードへの接続が可能です。
code server の利用をご検討ください。利用方法についてはOpen OnDemandの利用の手引きをご参照ください。