スーパーコンピュータでサンプルプログラムを動かす(mpi4py)
2023/04/13
プログラミング本記事の内容
本記事では、スーパーコンピュータ(Wisteria)上で、Python(mpi4py)で書かれたサンプルプログラムを動かす手順を紹介する。
手順
cd /work/<プロジェクトコード>/<ユーザーID>
mkdir sample
show_module
今回はmpi4py/3.1.1とgcc/8.3.1/fjmpi/1.2.37モジュール環境を利用する。
module load gcc/8.3.1
module load fjmpi/1.2.37
module load mpi4py/3.1.1
module list
Currently Loaded Modulefiles:
1) gcc/8.3.1 2) fjmpi/1.2.37 3) mpi4py/3.1.1
モジュールを消去したい場合は"module purge"を使う。
module purge
module list
No Modulefiles Currently Loaded.
■ moduleコマンドのオプション
オプション | 内容 |
avail | 利用可能な環境の一覧を表示 |
list | 現在ロードしている環境一覧を表示 |
load | 指定した環境のロード |
unload | 指定した環境のアンロード |
switch | 環境のロードとアンロードを同時に実行 |
purge | 環境をすべてアンロード |
cd sample
python3 -mvenv venv
source venv/bin/activate
pip3 install --upgrade pip setuptools
pip3 install pandas
try:
from mpi4py import MPI
print("mpi4py Success!")
except Exception as e:
print(f"Error: {e}")
try:
import pandas
print("Pandas Success!")
except Exception as e:
print(f"Error: {e}")
#!/bin/sh
#PJM -L rscgrp=debug-o
#PJM -L node=4
#PJM --mpi proc=4
#PJM -L elapse=0:10:00
#PJM -g <プロジェクトコード>
#PJM -j
module purge
module load gcc/8.3.1
module load fjmpi/1.2.37
module load mpi4py/3.1.1
export LD_PRELOAD=/usr/lib/FJSVtcs/ple/lib64/libpmix.so
source venv/bin/activate
mpiexec -n ${PJM_MPI_PROC} python3 sample.py
プロジェクトコードについては各自割り当てられたものを記入する。また、ジョブクラスには"debug-o"を指定した。使用可能なジョブクラスについては以下のリンクを参照。
pjsub sample.sh
■ ジョブ管理コマンド
オプション | 内容 |
pjsub | ジョブの投入 |
pjdel | ジョブの削除 |
pjstat | ジョブの状態 |
pjsubなどのコマンドは富士通独自のもので、使用するスーパーコンピュータによって異なる。
Inportエラーが発生しておらず、mpi4pyの読み込みができていることを確認する。
Unloading odyssey
WARNING: Did not unuse /work/opt/local/modules/modulefiles/WO/odyssey/core
WARNING: Did not unuse /work/opt/local/modules/modulefiles/WO/odyssey/util
mpi4py Success!
Pandas Success!
mpi4py Success!
Pandas Success!
mpi4py Success!
Pandas Success!
mpi4py Success!
Pandas Success!