備忘録,JAISTのスパコン使い方

Jaistには3つスパコンがあります。
学生でもどれも自由に使えます。
この辺りが他の大学と違うところでしょうか?

今回はつい最近と言っても1年くらい経ちますが,リニューアルされた
スパコンKagayakiでのPythonでのMPIの使い方。

公式にはPythonはサポートしてません。

Anaconda

いろいろ試したのですが,これが一番。
スーパーユーザ権限がないのでローカルにインストールし,パスを設定します。

$ 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


#!/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

. ~/.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

#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

実行

$ qsub PBS_mpi.sh

結果

$ 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