Python

以下の表に示すpython を利用することができます。 いずれもOSに付属するパッケージとして提供されているため、モジュールファイルによる環境設定は不要です。

バージョン モジュールファイル名 システムA システムB/C システムG クラウドシステム 備考
2.7 none + + + + コマンド名: python2.7, pip2.7
3.6 none + + + + コマンド名: python3.6, pip3.6
3.8 none + + + + コマンド名: python3.8, pip3.8

+ : すべてのユーザが利用可能
- : 利用不可

標準でインストールされているライブラリは pip コマンドで確認できます。 パッケージの追加が必要な場合は pipコマンドでご自身のHOMEディレクトリ等に追加インストールが可能です。

## python3.8 環境のインストール済みパッケージ一覧を表示する場合
$ pip3.8 list
Package                      Version
---------------------------- ----------
absl-py                      1.3.0
asgiref                      3.6.0
astunparse                   1.6.3
...

以下のPythonパッケージは予め特定のpython環境にインストールしてあります。 利用するにはモジュールファイルのロードが必要です。

Python 対象システム 種別 パッケージ バージョン ライブラリ モジュールファイル 補足事項
python3.8 A/B/C CPU TensorFlow 2.11.0 MKL 2022.3 tensorflow/2.11.0.py38_intel-2022.3 Intel Optimized AVX512版
python3.8 A/B/C CPU MXNet 1.6.0 MKL 2022.3 mxnet/1.6.0.py38_intel-2022.3 MKL対応版
python3.8 A/B/C CPU PyTorch 2.0.1 MKL 2022.3 pytorch/2.0.1.py38_intel-2022.3 intel extension for pytorch, Intel oneCCL Bindings for Pytorch
python3.8 A/B/C CPU PyTorch 1.13.1 MKL 2022.3 pytorch/1.13.1.py38_intel-2022.3 intel extension for pytorch, Intel oneCCL Bindings for Pytorch
python3.8 G GPU TensorFlow 2.11.0 CUDA 11.2 tensorflow/2.11.0.py38_cuda-11.2 GPU版 TensorRT利用可
python3.8 G GPU MXNet 1.9.1 CUDA 11.7 mxnet/1.9.1.py38_cuda-11.7 GPU版
python3.8 G GPU PyTorch 1.13.1 CUDA 11.7 pytorch/1.13.1.py38_cuda-11.7 GPU版

システムA/B/C 向けの pytorch は、Intel Extension for Pytorch は Intel oneCCL Bindings for Pytorch を利用します。 以下にサンプルプログラムと、ジョブスクリプトを例を記載していますので、参考にしてください。 各ソフトウェアの使い方の詳細は公式マニュアルをご参照ください。

#!/usr/bin/python3.8

# Reference source
# https://github.com/intel/torch-ccl#usage

import os
import torch.nn.parallel
import torch.distributed as dist
import oneccl_bindings_for_pytorch
import intel_extension_for_pytorch

os.environ['MASTER_ADDR'] = str(os.environ.get('TORCH_MASTER_ADDR', '127.0.0.1'))
os.environ['MASTER_PORT'] = str(os.environ.get('TORCH_MASTER_PORT', '29500'))
os.environ['RANK'] = str(os.environ.get('PMI_RANK', 0))
os.environ['WORLD_SIZE'] = str(os.environ.get('PMI_SIZE', 1))

backend = 'ccl'
dist.init_process_group(backend)
my_rank = dist.get_rank()
my_size = dist.get_world_size()
print("my rank = %d  my size = %d" % (my_rank, my_size))

x = torch.ones([2, 2])
y = torch.ones([4, 4])
with torch.autograd.profiler.profile(record_shapes=True) as prof:
    for _ in range(10):
        dist.all_reduce(x)
        dist.all_reduce(y)
dist.barrier()
print(prof.key_averages(group_by_input_shape=True).table(sort_by="self_cpu_time_total"))
#!/bin/bash
#============ SBATCH Directives =======
#SBATCH -p gr10001b
#SBATCH -t 1:0:0
#SBATCH --rsc p=4:t=1:c=1
#SBATCH -o %x.%A.out

#============ Shell Script ============

. /usr/share/Modules/init/bash
module load pytorch/2.0.1.py38_intel-2022.3
module list

set -x

export CCL_WORKER_COUNT=${OMP_NUM_THREADS}
export CCL_WORKER_AFFINITY=$(numactl -s |grep physcpubind: | sed -e 's/physcpubind: //'  -e 's/ *$//' -e 's/ /,/g')
export TORCH_MASTER_ADDR=${SLURMD_NODENAME}-ib0

srun python3.8 -u profiling.py

Pythonのパッケージ群が利用可能なANACONDA DISTRIBUTION をインストールしています。 標準のpythonではなく、ANACONDA DISTRIBUTION がお好みの場合は以下のモジュールファイルをロードすることで利用できます。

DISTRIBUTION Python モジュールファイル
anaconda3 2022.10 python3.9 anaconda3/2022.10