user/pages/09.software/21.python/docs.ja.md
452be89a
 ---
 title: Python
 ---
 
 [toc]
 
 ## 利用環境{#enviroment}
 
 ### 利用できるバージョン・システム{#version}
 
 以下の表に示すpython を利用することができます。
 いずれもOSに付属するパッケージとして提供されているため、モジュールファイルによる環境設定は不要です。
 
495abba5
 |バージョン | モジュールファイル名 | システム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
452be89a
 
 \+ : すべてのユーザが利用可能  
 \- : 利用不可
 
 
 ### 利用可能なライブラリ{#library}
 
 標準でインストールされているライブラリは 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    | 対象システム| 種別   | パッケージ  |  バージョン | ライブラリ | モジュールファイル                       | 補足事項
 |---        |---          |---     | ---         | ---         | ---        | ---                                      | ---
6fe23678
 | 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
452be89a
 | 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版
 
 
6fe23678
 #### Intel Extension for PyTorch の参考資料
452be89a
 * [Documentation](https://intel.github.io/intel-extension-for-pytorch/cpu/latest/index.html)
 * [Examples](https://intel.github.io/intel-extension-for-pytorch/cpu/latest/tutorials/examples.html)
 
6fe23678
 #### システムA/B/C 向けの pytorch に関する補足
 
 システムA/B/C 向けの pytorch は、Intel Extension for Pytorch は Intel oneCCL Bindings for Pytorch を利用します。
 以下にサンプルプログラムと、ジョブスクリプトを例を記載していますので、参考にしてください。
 各ソフトウェアの使い方の詳細は公式マニュアルをご参照ください。
 
 ##### サンプルプログラム
 
 ```python
 #!/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"))
 ```
 
 ##### ジョブスクリプト
 
 ```bash
 #!/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
 ```
 
452be89a
 ## ANACONDA DISTRIBUTION
 
 Pythonのパッケージ群が利用可能なANACONDA DISTRIBUTION をインストールしています。
 標準のpythonではなく、ANACONDA DISTRIBUTION がお好みの場合は以下のモジュールファイルをロードすることで利用できます。
 
 | DISTRIBUTION      | Python    | モジュールファイル | 
 |---                |---        |---                 |
 | anaconda3 2022.10 | python3.9 | anaconda3/2022.10  |