実行したジョブの情報(経過時間やメモリ使用量)を取得したい
SQUIDでは、acstatコマンドを使って過去に実行したジョブの経過時間を取得可能です。メモリ使用量については取得できませんので、以下のお問い合わせフォームからご連絡くださいませ。
OCTOPUSについては、経過時間・メモリ使用量ともに取得できません。同じく、以下のお問い合わせフォームからご連絡くださいませ。
お問い合わせフォーム
SQUIDでは、acstatコマンドを使って過去に実行したジョブの経過時間を取得可能です。メモリ使用量については取得できませんので、以下のお問い合わせフォームからご連絡くださいませ。
OCTOPUSについては、経過時間・メモリ使用量ともに取得できません。同じく、以下のお問い合わせフォームからご連絡くださいませ。
お問い合わせフォーム
OpenMPIについては独自にインストールしてご利用することが可能です。
MPIのパスを記載したmoduleファイルを作成してください。
1 2 3 4 5 6 7 8 9 10 11 12 |
#%Module 1.0 # # OMP-sample # proc ModulesHelp { } { puts stderr "OMP-sample\n" } prepend-path PATH /sqfs/work/(MPIインストール先)/bin prepend-path LD_LIBRARY_PATH /sqfs/work/(MPIインストール先)//lib/ setenv MPI_ROOT /sqfs/work/(MPIインストール先)/ |
ジョブスクリプトの中で以下のようにmoduleファイル指定してください。
1 2 |
#PBS -T openmpi #PBS -v NQSV_MPI_MODULE=moduleファイルへの(フルパス) |
本エラーは、書式なしの入出力文の並びに配列が指定されており、その配列サイズが大きい場合に発生するエラーです。
以下のコンパイラオプション、実行時環境変数を指定して実行いただくことで特定可能です。
★のように、エラーの出たファイルと行数が表示されます。
例)
$ nfort main.f90 -g -traceback=verbose
$ export VE_TRACEBACK=VERBOSE
$ ./a.out
Runtime Error: Cannot allocate memory for environment variable VE_FORT_UFMTENDIAN.
Program terminated by fatal error
[ 0] 0x600c00a58910 ? ?:?
[ 1] 0x600c00a51b38 ? ?:?
[ 2] 0x600c00cd4c78 ? ?:?
[ 3] 0x60000001f850 MAIN main.f90:28 ★
[ 4] 0x60000001fc80 ? ?:?
[ 5] 0x600c02a407a8 ? ?:?
[ 6] 0x600000002d00 ? ?:?
wandbについてはpipコマンドにてインストール可能です。
pip install wandb
wandb login "XXXX"
SQUIDでは原則計算ノードからのインターネットアクセスを許可しておりませんが、wandbに限定して許可しています。
以下のようにジョブスクリプトを記述してください。
#!/bin/bash
#PBS -q SQUID
#PBS --group=[グループ名]
#PBS -l elapstim_req=1:00:00
cd $PBS_O_WORKDIR
export http_proxy="http://ibgw1f-ib0:3128"
export https_proxy="https://ibgw1f-ib0:3128"
python test.py
requests-2.24を使用してください。2.26等のバージョンについては、SQUIDで正常に動作しません。
SQUIDでは環境変数 $NQSII_MPIOPTS / $NQSV_MPIOPTによって、#PBS -l cpunum_jobで指定した値を元に、machinefileを自動生成しMPIに設定しています。ppn, rr, prehostといったオプションはmachinefileと同時に指定することが出来ないため、仮に128 MPIプロセス / 1ノードあたり64プロセス割り当てることを想定し、以下のように指定したとしても、ppn オプションは無効となります。
mpirun ${NQSV_MPIOPTS} -np 128 -ppn 64 ./a.out
基本的には以下のように指定いただくことで、128 MPIプロセスを生成し、1ノードあたり64プロセス割り当てることが可能です。
#PBS -l cpunum_job=64
(中略)
mpirun ${NQSV_MPIOPTS} -np 128 ./a.out
環境変数 $NQSV_MPIOPTS は、以下のオプションとファイルが指定されています。
-machinefile /var/opt/nec/nqsv/jsv/jobfile/[リクエストID等の数値]/mpinodes
mpinodesファイルはマシンファイルとなっており、上記の場合は以下のようなホスト名、コア数が指定されています。
host001:64
host002:64
ただし、より細かくプロセス配置を指定したい場合(例えばピニングを設定し特定のコアにプロセスを使用せずに計算する場合など)上記のオプションでは対応出来ないケースがあります。ppn, rr, prehostオプションを使用する場合は、環境変数 $NQSII_MPIOPTS / $NQSV_MPIOPT を指定する代わりにhostfileオプションと環境変数 $PBS_NODEFILE を指定してください。128 MPIプロセスを生成し、1ノードあたり64プロセス割り当てる場合は以下のように指定します。
mpirun -hostfile ${PBS_NODEFILE} -np 128 -ppn 64 ./a.out
※PBS_NODEFILEを使う場合、#PBS -l cpunum_jobで指定した値がMPIに設定されません。ご自身でプロセス数の確認をお願いします。また、OCTOPUSではご利用いただけません。
以下のコマンドで取得可能です。ジョブスクリプトの最後で実行してください。
$ nvidia-smi --query-accounted-apps=timestamp,gpu_name,gpu_bus_id,gpu_serial,gpu_uuid,vgpu_instance,pid,time,gpu_util,mem_util,max_memory_usage --format=csv
出力例は以下のとおりです。最後に記載されている523MiBがGPUで使用した最大メモリサイズです。
2021/11/24 19:26:26.333, A100-SXM4-40GB, 00000000:27:00.0, 1564720026417, GPU-a3b25bed-7bb1-cbd8-89e3-3f14b6118874, N/A, 761279, 117202 ms, 2 %, 0 %, 523 MiB
ジョブクラス「SQUID-S」を使用している場合は、同じノード内で別の方のジョブが実行されている場合があるため、正しい値が取得されない可能性があります。予めご了承ください。
2段階認証コードのリセットには管理者の操作が必要となりますので、お問い合わせフォームからお知らせください。その際、氏名、利用者番号、メールアドレスは登録時のものを記入してください。2段階認証のリセット時にパスワードもあわせて初期化いたしますので、予めご了承ください。
お問い合わせフォーム
アカウントの所有者が卒業してしまった等、本人からの連絡が難しい場合に限り、当該アカウントに登録されている指導教員またはグループの申請代表者からの2段階認証リセットの依頼にも対応します。
ご自身でインストールすることで、利用可能です。手順は以下のとおりです。
インストール手順
1 2 3 4 5 6 7 8 9 10 11 12 |
# Python+GPUのEnvironmental modulesを設定する module load BasePy module --force switch python3/3.6 python3/3.6.GPU module load BaseGPU module load cudnn/8.2.0.53 #Pytorchをインストールする仮想環境 test-envを作成し、Activateする python3 -m venv /sqfs/work/【グループ名】/【ユーザ名】/test-env/ source /sqfs/work/【グループ名】/【ユーザ名】/test-env/bin/activate # SQUIDのGPUノード(A100)に対応するCUDA11.1 + Pytorchをインストール pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html |
利用手順(ジョブスクリプト例)
1 2 3 4 5 6 7 8 9 10 11 |
#!/bin/bash #PBS -q SQUID #PBS --group=(グループ名) #PBS -l elapstim_req=1:00:00,gpunum_job=8 cd $PBS_O_WORKDIR module load BasePy module --force switch python3/3.6 python3/3.6.GPU module load BaseGPU module load cudnn/8.2.0.53 source /sqfs/work/【グループ名】/【ユーザ名】/test-env/bin/activate python test.py |
インストール手順
1 2 3 4 5 6 7 8 9 10 |
# Anaconda仮想環境の作成準備 conda config --add envs_dirs /sqfs/work/(グループ名)/(利用者番号)/conda_env conda config --add pkgs_dirs /sqfs/work/(グループ名)/(利用者番号)/conda_pkg #Pytorchをインストールする仮想環境 test-envを作成し、Activateする conda create --name test-env python=3.8 conda activate test-env # SQUIDのGPUノード(A100)に対応するCUDA11.1 + Pytorchをインストール conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge |
利用手順(ジョブスクリプト例)
1 2 3 4 5 6 7 |
#!/bin/bash #PBS -q SQUID #PBS --group=(グループ名) #PBS -l elapstim_req=1:00:00,gpunum_job=8 cd $PBS_O_WORKDIR conda activate test-env python test.py |
ワークフローにてA⇒Bの順序で制御しているときに、AがRERUNとなった場合、Aを再実行、Bは再スケジューリングされ、ワークフローの順番を保ったまま実行されます。
ベクトルノード群の場合、実行時に以下の環境変数を指定いただくことでNaNを含む無効演算例外を検知することが可能です。
(NaNを演算に使用されるとエラーとなります。)
export VE_FPE_ENABLE=INV
詳細は、以下のマニュアル 6ページ「1.9 演算例外」の項目をご参照ください。
SX-Aurora TSUBASA Fortran コンパイラ ユーザーズガイド
また、エラーを検知した該当箇所を確認する場合は以下も合わせてご指定ください。
コンパイラオプション:-traceback=verbose -g
実行時環境変数:export VE_TRACEBACK=VERBOSE
詳細は上記マニュアルの24ページに記載しております。
qstatコマンドを実行すると、SX-Aurora TSUBASA(ベクトルエンジン)が接続されているLinux(ベクトルホスト)のCPU時間や使用メモリが表示されます。SX-Aurora TSUBASA(ベクトルエンジン)の情報を確認する場合は以下のオプションを指定してください。
1 2 3 4 5 6 7 8 9 10 11 |
$ qstat -J -e #実行結果例 JNO RequestID EJID VEMemory VECPU JSVNO VectorIsland UserName Exit ---- --------------- ----- -------- -------- ----- --------------- -------- ---- 0 1000.sqd 896040 10.38G 147578.00 4100 vec0100 user01 - 0 1001.sqd 129054 20.45G 15251.00 4101 vec0101 user01 - 0 1002.sqd 2138470 21.35G 5668.00 4102 vec0102 user01 - 1 1002.sqd 2138455 21.35G 6503.00 4102 vec0102 user01 - 0 1003.sqd 1813977 21.54G 33667.00 4103 vec0103 user01 - 1 1003.sqd 1814130 21.54G 32972.00 4103 vec0103 user01 - |
1行に出力される情報は、投入するジョブクラスによって異なります。
DBGやSQUID-Sに投入した場合:ベクトルエンジン1台分の使用メモリ量、CPU時間を表示します
SQUIDやSQUID-Hに投入した場合:ベクトルエンジン8台分の使用メモリ量、CPU時間を表示します
SX-ACEでは標準で出力されていましたが、SX-Aurora TSUBASAではコンパイル時および実行時にオプションを設定する必要があります。
コンパイラオプションでproginfオプションを指定してください。
nfort -proginf test.f90
また、ジョブスクリプトで以下を指定してください。
export VE_PROGINF=YES
または
export VE_PROGINF=DETAIL
ファイル名に連続した数値が含まれている場合、パラメトリックジョブという投入方法で、一度に大量のジョブを投入できます。
パラメトリックジョブでは、ジョブスクリプト内の"$PBS_SUBREQNO"環境変数に、-tで指定した数値(下記の例では1から5までの数値)が格納されます。
qsubすると同時に5本のジョブが投入され、a.outに対してそれぞれ異なる入力ファイル(下記の例ではinput1からinput5)が設定されます。
ジョブスクリプト例
1 2 3 4 |
#PBS -q OCTOPUS #PBS -l elapstim_req=0:30:00,cpunum_job=24 cd $PBS_O_WORKDIR ./a.out input$PBS_SUBREQNO |
投入例
1 2 |
qsub -t 1-5 jobscript.sh |
qstatの表示例:パラメトリックジョブの場合、1回のqsubにつき1件分の表示となります
1 2 3 4 |
RequestID ReqName UserName Queue Pri STT S Memory CPU Elapse R H M Jobs --------------- -------- -------- -------- ---- --- - -------- -------- -------- - - - ---- 123456[].oct nqs username OC1C 0 QUE - - - - Y Y Y 1 |
sstatの表示例:-tで指定した数値分だけ表示されます
1 2 3 4 5 6 7 8 |
RequestID ReqName UserName Queue Pri STT PlannedStartTime --------------- -------- -------- -------- ----------------- --- ------------------- 123456[1].oct nqs username OC1C 0.5002/ 0.5002 QUE - 123456[2].oct nqs username OC1C 0.5002/ 0.5002 QUE - 123456[3].oct nqs username OC1C 0.5002/ 0.5002 QUE - 123456[4].oct nqs username OC1C 0.5002/ 0.5002 QUE - 123456[5].oct nqs username OC1C 0.5002/ 0.5002 QUE - |
資源に空きがある限り、複数のジョブを同時に実行可能です。
qsub A.nqs
qsub B.nqs
といったように、1件1件個別にqsubしていくことで、A.nqsとB.nqsが同時に実行可能な状態となります。
利用者単位、計算機単位でジョブの投入数上限を設定しており、いずれかの上限を超過していることによるエラーとなります。
基本的には、誤った利用方法による事故を防ぐ目的で設定しているものであり、利用を阻害するために設けているものではありませんので、本エラーを確認された場合は、以下までお知らせください。
お問い合わせフォーム
計算に使用するノードは、スケジューラ側が自動で最適なノードを割り当てるようになっており、利用者様の方では指定することはできません。
ご理解くださいませ。
コンパイル時に、OpenMPや自動並列化を使用するオプションを指定した場合、並列化指示行の有無に関わらず、「並列版ライブラリ」がリンクされます。「並列版ライブラリ」の関数(並列版の関数)には通常版ライブラリと比べて、排他制御のために他スレッドのリソースへのアクセスを制限する「ロック処理」が組み込まれています。
並列化指示行を挿入していない箇所で並列版の関数がコールされた場合、1スレッドで動作するので、実際にロック処理に伴う「他スレッドの処理待ち」が発生するわけではないのですが、例えば、「排他が必要かどうか」といった判定を行う都合で、わずかですが通常版ライブラリより処理時間が増えることとなります。
一回のオーバヘッドはわずかですが、大量にコールすると、処理時間に大きく影響することとなります。
ご注意ください。
フロントエンドサーバのstacksizeの制限を超過している可能性があります。
標準でははstacksize 10240 kbytesとなっておりますので、任意の値に変更し、再度コンパイルを試みてください。
stacksizeは、下記のコマンドで変更可能です。
limit stacksize (任意の値) kbytes
この対応でも改善しない場合、こちらで調査しますので、下記よりお問い合わせください。
お問い合わせフォーム
SQUID ベクトルノードで実行するNEC MPIにおいて標準出力をリダイレクトする場合は、「/opt/nec/ve/bin/mpisep.sh」スクリプトをご利用ください。
MPIを実行する際、ジョブスクリプトに
1 2 |
#PBS -v MPISEPSELECT=3 mpirun -np 160 /opt/nec/ve/bin/mpisep.sh ./a.out |
と指定していただくと、標準出力はstdout.0:(MPIプロセスID)、標準エラー出力はstderr.0:(MPIプロセスID)へリアルタイムで出力されます。
これらの詳しい解説は、下記「NEC MPIユーザズガイド」の3.3 MPI プロセスの標準出力 および 標準エラー出力 に記載されております。
NEC MPIユーザズガイド
上記のスクリプトをそのまま使用した場合、stdout/stderrというファイル名になってしまいますが、ご自身でmpisep.shを修正いただくと、任意の名前に変更することも可能です。
標準出力ファイル、標準エラー出力ファイルは、umaskコマンドで指定したパーミッションに従い、出力されます。フロントエンド上でumaskコマンドを実行し、指定してください。
承ください。
ノード時間を残高以上に使用した場合(ノード時間を使い過ぎてしまった場合)に、そのような表記になります。
※当センターではノード時間を1日に1度取得しますので、ノード時間の残高以上の計算も実行できてしまいます。
たとえば、8月1日時点で、usage_viewは下記のような表示だったとします。残りノード時間(remaining)は200ノード時間です。
[ SX-ACE ]
shared use : 300 / 500 node-hour (remaining : 200 node-hour)
仮に、8月1日にSX-ACEで20ノードを使った、15時間のジョブを実行したとしますと、計300ノード時間を消費することになります。
8月2日のusage_viewは下記のようになり、残りノード時間(remaining)に負の値が表示されます。
[ SX-ACE ]
shared use : 600 / 500 node-hour (remaining : -100 node-hour)
使いすぎてしまった分については、改めて料金を請求することはございませんので、ご安心くださいませ。
ただし、もし年度中に「資源追加」された場合は、使い過ぎてしまったノード時間分を追加分から差し引いて処理することになりますので、ご了承くださいませ。
年度を越えた際に、使用されたノード時間の情報は全てリセットされます。
qstatやsstatコマンドは実行中にライセンスを消費します。
平常利用においては、十分なライセンスを確保しておりますが、短い周期で定期実行されますと、ライセンスが不足し、他の利用者が利用できない状態に陥る可能性があります。
定期的な実行はできるだけお控えいただき、もしどうしても必要ということでしたら10分周期程度でご利用いただきますよう、よろしくお願いいたします。
システムを利用中の方については、センター側でデータを削除することはありません。
「ディスク容量の超過」についてですが、ディスクの容量は、基本的に「quota」という、Linuxのグループやユーザ毎にディスクを割り当てる機能を使っております。「quota」で決められた容量を超過しそうな場合は、対象の領域(この場合ext領域)について、新規のディスク書き込みができない状態になります。閲覧・削除等は可能です。
新規のディスク書き込みが出来なくなりますので、Writeを行うようなジョブは全てエラーとなってしまいます。ご注意ください。
申し込み時期にかかわらず、年度末までとなります。翌年度もご利用いただく場合は、継続申請時にディスク容量追加の申請が必要となります。
申請代表者様は、その申請枠内(同一グループ内)で利用者を追加登録することができます。
詳細については下記をご参照くださいませ。
利用者様の方で、ご自身のディスク領域に対して、特定のライブラリやアプリケーションをインストールされる場合、許可は不要です。(管理者権限を要しない場合は、許可不要です。)
センター側でのインストールを希望する場合は、下記のお問い合わせフォームよりご連絡くださいませ。(管理者権限を要する場合は、ご連絡ください。)
お問い合わせフォーム
ライブラリやアプリケーションの内容によっては、お断りする場合や、利用者様自身でのインストールをお願いする場合がございます。あらかじめご了承くださいませ。
ワークフロー実行機能あるいはリクエスト連携機能を使用することで可能です。
ワークフロー実行についての詳細は下記マニュアルの7.ワークフローをご参照くださいませ。
リクエスト連携機能については下記マニュアルの1.2.22. リクエスト連携機能をご参照くださいませ。
NQS利用の手引き
リクエスト連携機能とではアサインされるタイミングが異なります。ワークフローの場合、投入後すぐに全リクエストがアサイン対象になりますが、リクエスト連携機能の場合、前のリクエストの実行が完了した時点でアサインされます。そのため、混んでいる場合にはワークフローの方が早く実行される可能性があります。