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

2023/02/25

プログラミング

本記事の内容

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

手順

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

    今回はCUDA Toolkitモジュール環境を利用する。

  • 以下のコマンドを実行して、CUDA Toolkitを利用できるようにする
  • module load cuda/11.4
  • 以下のコマンドを実行して、読み込んだモジュールを確認する
  • module list
     1) cuda/11.4(default)

    モジュールを消去したい場合は"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
  • 以下のコマンドを実行し、PyTorchとPandasをインストールする
  • pip3 install --upgrade pip setuptools
    pip3 install --no-cache-dir cupy-cuda114
    pip3 install pandas
  • sampleディレクトリ直下に、以下のファイルを作成する
  • try:
        import cupy as cp
        a = cp.random.rand(100,100)
        cp.dot(a,a)
        print(f'Cupy 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=share-debug
    #PJM -L gpu=1
    #PJM -L elapse=0:10:00
    #PJM -g <プロジェクトコード>
    #PJM -j
    
    export HOME=/work/gc20/c20364/cupy
    module load cuda/11.4
    source venv/bin/activate
    python3 sample.py
    

    プロジェクトコードについては各自割り当てられたものを記入する。また、ジョブクラスには"share-debug"を指定した。使用可能なジョブクラスについては以下のリンクを参照。

  • 以下のコマンドを実行し、サンプルプログラムジョブを投げる
  • pjsub sample.sh

    ■ ジョブ管理コマンド

    オプション内容
    pjsubジョブの投入
    pjdelジョブの削除
    pjstatジョブの状態

    pjsubなどのコマンドは富士通独自のもので、使用するスーパーコンピュータによって異なる。

  • 出力ファイルを確認する
  • Inportエラーが発生しておらず、GPU(Cuda)の読み込みができていることを確認する。

    Cupy Success!
    Pandas Success!

    参考資料


    著者画像

    ゆうき

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