スーパーコンピュータでサンプルプログラムを動かす(mpi4py)

2023/04/13

プログラミング

本記事の内容

本記事では、スーパーコンピュータ(Wisteria)上で、Python(mpi4py)で書かれたサンプルプログラムを動かす手順を紹介する。

手順

  • workディレクトリ配下に移動して、sampleディレクトリを作成する
  • cd /work/<プロジェクトコード>/<ユーザーID>
    mkdir sample
  • 以下のコマンドを実行して、Python環境作成に必要なモジュールを確認する
  • show_module
    Notion Image

    今回はmpi4py/3.1.1とgcc/8.3.1/fjmpi/1.2.37モジュール環境を利用する。

  • 以下のコマンドを実行して、mpi4py/3.1.1を利用できるようにする
  • 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
  • 以下のコマンドを実行し、Pandasをインストールする
  • pip3 install --upgrade pip setuptools
    pip3 install pandas
  • sampleディレクトリ直下に、以下のファイルを作成する
  • 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!

    参考資料


    著者画像

    ゆうき

    2018/04からITエンジニアとして活動、2021/11から独立。主な使用言語はPython, TypeScript, SAS, etc.