コンテンツにスキップ

FAQ

Q. インタラクティブ利用時にCtrl+Sを入力するとそれ以降のキー入力ができない

macOS、Windows、Linuxなどの標準のターミナルエミュレータでは、デフォルトでCtrl+S/Ctrl+Qによる出力制御が有効になっているためです。無効にするためには、ローカルPCのターミナルエミュレータで以下を実行してください。

$ stty -ixon

インタラクティブノードにログインした状態で実行しても同等の効果があります。

Q. 認証が必要なコンテナレジストリをSingularityで利用できない

SingularityPROにはdocker login相当の機能として、環境変数で認証情報を与える機能があります。

[username@es1 ~]$ export SINGULARITY_DOCKER_USERNAME='username'
[username@es1 ~]$ export SINGULARITY_DOCKER_PASSWORD='password'
[username@es1 ~]$ singularity pull docker://myregistry.azurecr.io/namespace/repo_name:repo_tag

SingularityPROの認証に関する詳細は、下記のユーザーガイドをご参照ください。

Q. 複数の計算ノードを割り当て、それぞれの計算ノードで異なる処理をさせたい

qrshqsub-l rt_F=Nオプションもしくは-l rt_AF=Nオプションを与えると、N個の計算ノードを割り当てることができます。 割り当てられた計算ノードでそれぞれ異なる処理をさせたい場合にMPIが使えます。

[username@es1 ~]$ qrsh -g grpname -l rt_F=3 -l h_rt=1:00:00
[username@g0001 ~]$ module load hpcx/2.12
[username@g0001 ~]$ mpirun -hostfile $SGE_JOB_HOSTLIST -np 1 command1 : -np 1 command2 : -np 1 command3

他にも、計算ノードへのSSHログインを有効にすることで、割り当てられた計算ノードにそれぞれ異なる処理をさせることができます。 計算ノードへのSSHログインアクセスは、qrshqsub実行時に-l USE_SSH=1オプションを指定することで有効になります。 USE_SSHオプションについては、付録. 計算ノードへのSSHアクセスを参照してください。

以下はSSHアクセスを使用して割り当てられた計算ノードに異なる処理を実行させる例です。

[username@es1 ~]$ qrsh -g grpname -l rt_F=3 -l h_rt=1:00:00 -l USE_SSH=1
[username@g0001 ~]$ cat $SGE_JOB_HOSTLIST
g0001
g0002
g0003
[username@g0001 ~]$ ssh -p 2222 g0001 command1 &
[username@g0001 ~]$ ssh -p 2222 g0002 command2 &
[username@g0001 ~]$ ssh -p 2222 g0003 command3 &

Q. SSHのセッションが閉じられてしまうのを回避したい

SSHでABCIに無事接続したしばらく後に、SSHのセッションが閉じられてしまうことがあります。このような場合は、SSHクライアントとサーバ間でKeepAliveの通信をすることで回避できる場合があります。

KeepAliveを適用するには、利用者の端末でシステムのssh設定ファイル(/etc/ssh/ssh_config)、またはユーザ毎の設定ファイル(~/.ssh/config)に、オプション ServerAliveInterval を60秒程度で設定してください。

[username@userpc ~]$ vi ~/.ssh/config
[username@userpc ~]$ cat ~/.ssh/config
(snip)
Host as.abci.ai
   ServerAliveInterval 60
(snip)
[username@userpc ~]$

Note

ServerAliveInterval の初期値は 0 (KeepAliveなし)です。

Q. ジョブの混雑状況を知りたい

ジョブの混雑状況に加え、計算ノードの利用状況、データセンター全体の消費電力やPUE、冷却設備の稼働状況等を可視化するWebサービスを動作させています。 ABCI内部サーバvws1の3000/tcpポートで動作していますので、以下の通りにアクセスできます。

SSHトンネルの設定をしてください。 以下の例では、ローカルPCの$HOME/.ssh/configに、ProxyCommandを用いてas.abci.ai経由でABCI内部サーバにSSHトンネル接続する設定をしています。 ABCIシステム利用環境のSSHクライアントによるログイン::一般的なログイン方法も参考にしてください。

Host *.abci.local
    User         username
    IdentityFile /path/identity_file
    ProxyCommand ssh -W %h:%p -l username -i /path/identity_file as.abci.ai

ローカルPCの3000番ポートをvws1サーバの3000/tcpポートに転送するSSHトンネルを作成します。

[username@userpc ~]$ ssh -L 3000:vws1:3000 es.abci.local

ブラウザでhttp://localhost:3000/にアクセスします。

Note

ABCI User Groupでは、インタラクティブノード上で混雑状況を確認する方法が紹介されていますので、こちらもご参照ください。

Q. ダウンロード済みのデータセットはありませんか?

データセットの利用を参照してください。

Q. バッチジョブでSingularity pullでのイメージファイル作成に失敗する

バッチジョブでSingularity pullでのイメージファイルを作成しようとした際に、mksquashfs の実行ファイルが見つからず作成に失敗することがあります。

INFO:    Converting OCI blobs to SIF format
FATAL:   While making image from oci registry: while building SIF from layers: unable to create new build: while searching for mksquashfs: exec: "mksquashfs": executable file not found in $PATH

これは、以下のように、/usr/sbin にパスを通すことで回避できます。

実行例)

[username@g0001 ~]$ export PATH="$PATH:/usr/sbin"
[username@g0001 ~]$ module load singularitypro
[username@g0001 ~]$ singularity run --nv docker://caffe2ai/caffe2:latest

Q. 計算ノードでsingularity build/pullすると容量不足でエラーになる

singularity build/pull コマンドは一時ファイルの作成場所として /tmp を使用します。 大きなコンテナを計算ノード上でsingularity build/pullする際に /tmp の容量が足りずエラーになる場合があります。

FATAL:   While making image from oci registry: error fetching image to cache: 
while building SIF from layers: conveyor failed to get: writing blob: write 
/tmp/0123456789.1.gpu/bundle-temp-0123456789/oci-put-blob0123456789: 
no space left on device

容量が足りずエラーになる場合は、次のようにローカルスクラッチを使用するようSINGULARITY_TMPDIR環境変数を設定してください。

[username@g0001 ~]$ SINGULARITY_TMPDIR=$SGE_LOCALDIR singularity pull docker://nvcr.io/nvidia/tensorflow:20.12-tf1-py3

Q. ジョブ ID を調べるには?

qsub コマンドを使ってバッチジョブを投入した場合は、コマンドがジョブ ID を出力しています。

[username@es1 ~]$ qsub -g grpname test.sh
Your job 1000001 ("test.sh") has been submitted

qrsh を使っている場合は、環境変数 JOB_ID の値を見ることで確認できます。この変数は、qsub (バッチジョブ) の場合でも利用可能です。

[username@es1 ~]$ qrsh -g grpname -l rt_C.small=1 -l h_rt=1:00:00
[username@g0001 ~]$ echo $JOB_ID
1000002
[username@g0001 ~]$

すでに投入済みのジョブに付与されているジョブ ID を確認するには、qstat コマンドを使ってください。

[username@es1 ~]$ qstat
job-ID     prior   name       user         state submit/start at     queue                          jclass                         slots ja-task-ID
------------------------------------------------------------------------------------------------------------------------------------------------
   1000003 0.00000 test.sh username   qw    08/01/2020 13:05:30

対象のジョブがすでに完了している場合は、qacct -j を使ってジョブ ID を調べます。-b-e オプションが、対象範囲を限定するために役に立ちます。qacct(1) man ページ (インタラクティブノードで man qacct) で使い方を確認できます。下記の例は、完了したジョブのうち、2020年 9月 1日 以降に開始されていたものを出力しています。jobnumber がジョブ ID です。

[username@es1 ~]$ qacct -j -b 202009010000
==============================================================
qname        gpu
hostname     g0001
group        grpname
owner        username

:

jobname      QRLOGIN
jobnumber    1000010

:

qsub_time    09/01/2020 16:41:37.736
start_time   09/01/2020 16:41:47.094
end_time     09/01/2020 16:45:46.296

:

==============================================================
qname        gpu
hostname     g0001
group        grpname
owner        username

:

jobname      testjob
jobnumber    1000120

:

qsub_time    09/07/2020 15:35:04.088
start_time   09/07/2020 15:43:11.513
end_time     09/07/2020 15:50:11.534

:

Q. 割り当てられた全計算ノードでコマンドを並列に実行したい

ABCIでは、割り当てられた全計算ノードで並列にLinuxコマンドを実行するugedshコマンドを用意しています。 ugedshコマンドの引数で指定したコマンドは、各ノードで1回ずつ実行されます。

実行例)

[username@es1 ~]$ qrsh -g grpname -l rt_F=2
[username@g0001 ~]$ ugedsh hostname
g0001: g0001.abci.local
g0002: g0002.abci.local

Q. 計算ノード(A)と計算ノード(V)の違いが知りたい

ABCIは、2021年5月にABCI 2.0にアップグレードされました。 従来より提供していたNVIDIA V100搭載の計算ノード(V)に加えて、NVIDIA A100を搭載した計算ノード(A)が利用できるようになりました。

ここでは計算ノード(A)と計算ノード(V)の違い、および、計算ノード(A)を利用する際の注意点などを説明します。

資源タイプ名

計算ノード(A)と計算ノード(V)では資源タイプ名が異なります。計算ノード(A)は、以下の資源タイプ名を指定することで利用できます。

資源タイプ 資源タイプ名 割り当て物理CPUコア数 割り当てGPU数 メモリ(GiB)
Full rt_AF 72 8 480
AG.small rt_AG.small 9 1 60

より詳しい資源タイプについては、利用可能な資源タイプを参照してください。

課金

利用可能な資源タイプに示す通り、計算ノード(A)と計算ノード(V)では資源タイプ課金係数が異なります。このため、課金に基づいて算出される、使用ABCIポイント数も異なります。

計算ノード(A)利用時の使用ABCIポイント数は、以下の通りとなります。

資源タイプ名
実行優先度
On-demandおよびSpotサービス
実行優先度: -500(既定)
(ポイント/時間)
On-demandおよびSpotサービス
実行優先度: -400
(ポイント/時間)
Reservedサービス
(ポイント/日)
rt_AF 3.0 4.5 108
rt_AG.small 0.5 0.75 NA

Operating System

計算ノード(A)と計算ノード(V)では、使用しているOSが異なります。

項目 OS
計算ノード(A) Red Hat Enterprise Linux 8.2
計算ノード(V) Rocky Linux 8.6

Rocky LinuxとRed Hat Enterprise Linuxは互換性がありますが、動作を保証するものではありません。 計算ノード(A)向けのプログラムは、計算ノード(A)や後述するインタラクティブノード(A)を使用してビルドしてください。

CUDA Version

計算ノード(A)に搭載されているNVIDIA A100はCompute Capability 8.0に準拠しています。

CUDA 10以前ではCompute Capability 8.0をサポートしていません。そのため、計算ノード(A)では、Compute Capability 8.0をサポートするCUDA 11以降を使用してください。

Note

Environment Modulesでは、試験用にCUDA 10も利用可能としていますが、動作を保証するものではありません。

インタラクティブノード(A)

ABCIでは、計算ノード(A)向けのプログラム開発の利便性のため、インタラクティブノード(A)を提供しています。 インタラクティブノード(A)は、計算ノード(A)と同様のソフトウェア構成を有しています。 インタクティブノード(A)でビルドしたプログラムは、計算ノード(V)での動作を保証しません。

インタラクティブノードの使い分けについては以下を参照してください。

インタラクティブノード(V) インタラクティブノード(A)
利用者がログインできるか? Yes Yes
計算ノード(V)向けのプログラム開発が可能か? Yes No
計算ノード(A)向けのプログラム開発が可能か? No Yes
計算ノード(V)向けのジョブ投入が可能か? Yes Yes
計算ノード(A)向けのジョブ投入が可能か? Yes Yes

インタラクティブノード(A)の詳細は、インタラクティブノードを参照してください。

Q. 過去のABCI Environment Modulesを利用したい

ABCIでは、過去のEnvironment Modulesを提供しています。 各年度でのEnvironment Modulesを以下にインストールしていますので、使用したい年度のパスをMODULE_HOME環境変数に設定し、設定ファイルを読み込んでください。

なお、これら過去のEnvironment Modulesはサポート対象外です。あらかじめご了承ください。

Note

2023年度に計算ノード(V)とインタラクティブノード(V)のOSをCentOS 7からRocky Linux 8に変更しました。 これによりCentOS 7用の過去のEnvironment Modulesは新しい計算ノード(V)とインタラクティブノード(V)では動作しません。 また、メモリインテンシブノードのサービスは、2023年10月1日15:00 に終了したため、CentOS 7用の過去のEnvironment Modulesは利用できません。

バージョン インストールパス 計算ノード(V) 計算ノード(A)
2020年度版 /apps/modules-abci-1.0 - -
2021年度版 /apps/modules-abci-2.0-2021 - Yes
2022年度版 /apps/modules-abci-2.0-2022 - Yes

以下は2021年度版Environment Modulesを利用する例です。

sh, bashの場合:

export MODULE_HOME=/apps/modules-abci-2.0-2021
. ${MODULE_HOME}/etc/profile.d/modules.sh

csh, tcshの場合:

setenv MODULE_HOME /apps/modules-abci-2.0-2021
source ${MODULE_HOME}/etc/profile.d/modules.csh

Q. inodeの使用量を削減したい

大量のファイルを生成する処理においてinodeの使用量を低減する方法として、ZIPファイルを利用する方法があります。

ここではPythonのstream-zipモジュールを使用して、生成したデータをZIPファイルに格納する例を示します。 なお、stream-zipに関する詳細は、stream-zipのドキュメント をご参照ください。

# このプログラムは、ファイル名`file0000`から`file0099`の
# 100ファイルを収めた`output.zip`ファイルを生成します。
from datetime import datetime
from stream_zip import ZIP_64, stream_zip

def gen_file(i):
    modified_at = datetime.now()
    perms = 0o600
    filename = f'file{i:04d}'
    def data_gen():
        yield b"aaaaa"
    return filename, modified_at, perms, ZIP_64, data_gen()

def generator():
    for i in range(100):
        yield gen_file(i)

with open("output.zip", "wb") as f:
    for chunk in stream_zip(generator()):
        f.write(chunk)