Jaistには3つスパコンがあります。
学生でもどれも自由に使えます。
この辺りが他の大学と違うところでしょうか?
今回はつい最近と言っても1年くらい経ちますが,リニューアルされた
スパコンKagayakiでのPythonでのMPIの使い方。
公式にはPythonはサポートしてません。
Anaconda
いろいろ試したのですが,これが一番。
スーパーユーザ権限がないのでローカルにインストールし,パスを設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $ cat ~/.bashrc # >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('~/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "~/anaconda3/etc/profile.d/conda.sh" ]; then . "~/anaconda3/etc/profile.d/conda.sh" else export PATH="~/anaconda3/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<< |
実行コード
mpi.py
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/env python # coding:utf-8 from mpi4py import MPI comm = MPI.COMM_WORLD size = comm.Get_size() rank = comm.Get_rank() name = MPI.Get_processor_name() print(f"size={size},rank={rank},name={name}") |
mpi.sh
1 2 3 4 5 6 7 8 9 | . ~/.bashrc if [ ! -d venv ];then python -m venv venv fi . venv/bin/activate LOG=${0%.*}.log pip install -r requirements.txt > $LOG mpirun -np 4 python mpi.py > mpi.log 2>&1 |
デフォルトではCSHなのでCSHでキックコードを作成し,中ではBashを使います
PBS_mpi.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #PBS -N mpi #PBS -j oe #PBS -l select=1 #PBS -q SINGLE source /etc/profile.d/modules.csh module purge module load openmpi module load intel cd ${PBS_O_WORKDIR} bash mpi.sh |
実行
1 | $ qsub PBS_mpi.sh |
結果
1 2 3 4 5 | $ cat mpi.log size=4,rank=1,name=spcc-250 size=4,rank=3,name=spcc-250 size=4,rank=0,name=spcc-250 size=4,rank=2,name=spcc-250 |