2022.12.09

SQUIDにMPIを独自にインストールして利用することは可能ですか?

OpenMPIについては独自にインストールしてご利用することが可能です。

MPIのパスを記載したmoduleファイルを作成してください。

ジョブスクリプトの中で以下のようにmoduleファイル指定してください。

2019.12.05

一度に大量のジョブを投入し、ジョブごとに入力ファイル/実行ファイルを変更したい

ファイル名に連続した数値が含まれている場合、パラメトリックジョブという投入方法で、一度に大量のジョブを投入できます。
パラメトリックジョブでは、ジョブスクリプト内の"$PBS_SUBREQNO"環境変数に、-tで指定した数値(下記の例では1から5までの数値)が格納されます。
qsubすると同時に5本のジョブが投入され、a.outに対してそれぞれ異なる入力ファイル(下記の例ではinput1からinput5)が設定されます。
 

ジョブスクリプト例

 

投入例

 

qstatの表示例:パラメトリックジョブの場合、1回のqsubにつき1件分の表示となります

 

sstatの表示例:-tで指定した数値分だけ表示されます

2019.04.11

複数のジョブを同時に実行させたい

資源に空きがある限り、複数のジョブを同時に実行可能です。

qsub A.nqs
qsub B.nqs

といったように、1件1件個別にqsubしていくことで、A.nqsとB.nqsが同時に実行可能な状態となります。

2018.12.20

ジョブを投入するとNQScrereq: [BSV ELIMEXCEED] Global submit limit has exceeded.というエラーが表示される

利用者単位、計算機単位でジョブの投入数上限を設定しており、いずれかの上限を超過していることによるエラーとなります。
基本的には、誤った利用方法による事故を防ぐ目的で設定しているものであり、利用を阻害するために設けているものではありませんので、本エラーを確認された場合は、以下までお知らせください。
 
お問い合わせフォーム

2017.11.27

qsubやqstatコマンド実行時に"Setting locale failed."と表示される

接続を行っている端末のターミナルソフトがフロントエンドサーバ接続時に環境変数を引き継ぐように設定している場合、このメッセージが表示されます。以下の2通りの方法をお試しください。
 

使用しているターミナルソフトの設定を変更する

自身の使用しているターミナル上の/etc/ssh_configファイルの"SendEnv"の記述を下記のようにコメントアウトしてください。
 ※フロントエンドに接続していない状態で行ってください。

    Host *
    # SendEnv LANG LC_*

 

フロントエンドサーバ接続時に自動で環境変数が設定されるようにする(ターミナルの設定を変更したくない場合)

profileファイルに下記のように記述してください。
bashの場合.bash_profileに記述します。

    LC_ALL=en.US UTF=8

 

2017.06.06

MPIで並列計算を行う際に、ノード間のネットワーク的な距離の近いノード群を指定して利用できますか?

計算に使用するノードは、スケジューラ側が自動で最適なノードを割り当てるようになっており、利用者様の方では指定することはできません。
ご理解くださいませ。

2017.06.06

MPIプロセスをノード毎にラウンドロビンで1プロセスずつ割り当てたい

(質問の補足)
OCTOPUS(24コア)4ノードでIntelMPIを使って並列計算を実行する際に、

node 1: rank 0, 1, 2, ... , 24
node 2: rank 25, 26, 27, ... ,48
node 3: rank 49, 50, 51, ... ,72
node 4: rank 73, 74, 75, ... , 96

とするのではなく、

node 1: rank 0, 4, 8, ..., 93
node 2: rank 1, 5, 9, ..., 94
node 3: rank 2, 6, 10, ..., 95
node 4: rank 3, 7, 11, ..., 96

としたいが、どのようにすればよいのか?
 
(回答)
OCTOPUS(24コア)4ノードで並列計算を実行する場合、ジョブスクリプトで

#PBS -b 4
mpirun {NQSII_MPI_p} -ppn 1 -n 80 ./a.out

と指定してください。
IntelMPIはmpiexecの-ppnオプションに指定した値の数だけ、連続したプロセスをノード毎に割り当てます。
したがって、-ppn 1と指定していただくことで、1ノードに1プロセスずつ割り当てるようになります。
 

「man mpiexec」コマンドで表示される-ppnオプションの解説(IntelMPI)

-perhost <# of processes>, -ppn <# of processes, -grr <# of processes>
Use this option to place the specified number of consecutive MPI processes on every host in the group using round robin scheduling.

2017.01.20

SQUID ベクトルノードで標準出力に出力されるMPIの実行結果を、別ファイルにリダイレクトしたい

SQUID ベクトルノードで実行するNEC MPIにおいて標準出力をリダイレクトする場合は、「/opt/nec/ve/bin/mpisep.sh」スクリプトをご利用ください。

MPIを実行する際、ジョブスクリプトに

と指定していただくと、標準出力はstdout.0:(MPIプロセスID)、標準エラー出力はstderr.0:(MPIプロセスID)へリアルタイムで出力されます。
 

これらの詳しい解説は、下記「NEC MPIユーザズガイド」の3.3 MPI プロセスの標準出力 および 標準エラー出力 に記載されております。
NEC MPIユーザズガイド
 

上記のスクリプトをそのまま使用した場合、stdout/stderrというファイル名になってしまいますが、ご自身でmpisep.shを修正いただくと、任意の名前に変更することも可能です。

2016.09.16

標準出力ファイル、標準エラー出力ファイルに対して任意のパーミッションを設定したい

標準出力ファイル、標準エラー出力ファイルは、umaskコマンドで指定したパーミッションに従い、出力されます。フロントエンド上でumaskコマンドを実行し、指定してください。
 承ください。

2016.08.24

複数のジョブを順番に実行させたい

ワークフロー実行機能あるいはリクエスト連携機能を使用することで可能です。
 

ワークフロー実行についての詳細は下記マニュアルの7.ワークフローをご参照くださいませ。
リクエスト連携機能については下記マニュアルの1.2.22. リクエスト連携機能をご参照くださいませ。
NQS利用の手引き
 

ワークフロー実行とリクエスト連携機能の違いについて

リクエスト連携機能とではアサインされるタイミングが異なります。ワークフローの場合、投入後すぐに全リクエストがアサイン対象になりますが、リクエスト連携機能の場合、前のリクエストの実行が完了した時点でアサインされます。そのため、混んでいる場合にはワークフローの方が早く実行される可能性があります。

2016.08.24

MPIスレーブノードに対して、任意のPATHを指定することは可能でしょうか?

ほぼ全ての環境変数は、#PBS -v によってMPIスレーブノードに対しても指定することができますが、いくつかの環境変数はスケジューラNQSIIの標準機能(#PBS -v)で指定することが出来ません。PATHもその一つになります。指定できない環境変数については下記マニュアルの1.16 qsub(1)をご参照ください。
NQSII 利用の手引き(OCTOPUS)
NQSV 利用の手引き(SQUID)
 
MPI実行時オプションをご利用いただくことで、これらの環境変数をスレーブノードに対して設定することが可能です。

2015.07.13

ジョブ実行時に「/var/spool/nqsII/jsv/jobfile/0.10989.11/user_script: 実行形式エラー. 間違ったアーキテクチャです.」というエラーが表示される

ファイル形式が、BOM(Byte Order Mark)付きの形式となっており、バッチスクリプトの1行目のシェル指定が正しく認識されていない可能性があります。
BOM付きかどうかは、下記で確認可能です。
 

% file nqs.sh

 

BOMはviなどのエディタで編集可能ですので、削除いただいた上で、再度ジョブの投入をお願いいたします。
下記に、viでの編集例を示しています。
 

編集例
% vi -b nqs.sh (-bオプションを付けてください)
 
<feff>#!/bin/csh
^^^^上記の<feff>という文字がBOMとなります。こちらを削除し、保存してください。
 

2015.05.25

ジョブ投入時にRequest could not be routed.Request deleted.というエラーが表示される

投入したジョブクラスに誤りがある可能性があります。
再度ご確認の上、問題なさそうであれば下記までご連絡ください。
 
お問い合わせ

2015.03.12

qsubコマンドやqstatコマンドを実行時にNQSconnect: [BSV ELICENSE] nqscui license was exceeded.というメッセージが表示される

当該エラーメッセージは、qsub/qstatコマンドのライセンス数制限を超過していることを示しています。
 
ライセンス数は十分な数を用意しておりますが、コマンドの実行が集中した場合に、一時的に不足する可能性があります。
当該エラーメッセージを確認された場合は、以下からご連絡くださいませ。
 
お問い合わせフォーム

2015.03.04

計算機のメンテナンス前後に投入したジョブはどのような挙動になるのでしょうか?

ジョブの投入時間と経過時間の指定により、実行されるタイミングがやや異なりますが、基本的には正しく実行されます。
※共有利用の場合は、他の利用者の投入状況によって実行されない場合がございます。
 
詳細は下記をご覧ください。
 

メンテナンス前にジョブを投入した場合

投入したジョブの実行終了予定時刻が、メンテナンス開始時刻を超えていた場合、メンテナンス終了後まで実行されません。
実行終了予定時刻は、「投入時間」とジョブスクリプトに記載した「経過時間の指定(elapstime_req)」から算出します。
 
例えば、ジョブスクリプトに「elapstime_req=5:00:00」と記載したジョブを、13:00に投入した場合、
実行終了予定時刻は18:00となります。
※共有利用の場合は、上記に関わらず、他の利用者の投入状況によって実行されない場合がございます。
※年度末メンテナンスの場合、メンテナンス終了時点で全てのジョブを削除します。
 

ジョブの実行終了予定時刻がメンテナンス開始時刻を超えていない場合

正常に実行されます。(メンテナンスの終了を待たずに実行可能です)
 

ジョブの実行終了予定時刻がメンテナンス開始時刻を超えている場合

前述の通り、メンテナンス終了後まで実行されません。
投入されたジョブはQUE状態のまま受け付けられ、メンテナンス終了後に実行されます。
年度末メンテナンスの場合、全てのジョブが削除されますのでご注意ください。
 
「経過時間の指定(elapstime_req)」を調整し、
実行終了予定時刻がメンテナンス時刻を超えないようにして、再投入することで、実行できる可能性があります。
もしお急ぎの場合は、お試しください。
 

メンテナンスが計画された時点で、メンテナンス開始時刻を超えるジョブを実行している場合

占有利用等で、長時間のジョブを実行されている方が対象となります。
メンテナンス開始までは正常に実行されます。
メンテナンス中は、計算を実行できませんので、停止をお願いすることがございますが、ご了承ください。
該当している場合、こちらからご連絡いたします。
 

メンテナンス中にジョブを投入した場合

メンテナンス終了後まで実行されません
投入されたジョブはQUE状態のまま受け付けられ、メンテナンス終了後に実行されます。
 

メンテナンス後にジョブを投入した場合

正常に実行されます。
 
20150304

2015.02.10

ジョブスクリプトで指定した環境変数やオプションが読み込まれない

環境変数やオプションはsetenvも設定できますが、マルチノードでジョブを実行した場合は、
スレーブノードにsetenvで指定した環境変数が設定されません。
マルチノードでジョブを実行する場合は、NQSIIの-vオプションをご利用ください。

#PBS -v [環境変数orオプション]=[設定内容]

のように指定します。

2014.07.24

投入したジョブの計算がいつ始まるかという目安はこちらから確認することはできないのでしょうか?

以下のコマンドを実行することで、
ジョブの予約状況を確認することが可能です。

sstat

実行開始時刻が決定していると、
STT(スケジューリング状態)がASG(Assigned)となり、PlannedStartTime(実行開始予定時間)に開始時刻が表示されます。詳細は下記をご覧ください。

スケジューラコマンドについて

2014.07.14

ジョブ投入時にNo request queue specified, and no local default has been defined.というエラーが表示される

スクリプトファイルにおける、制御コードに問題がある可能性があります。
当センターのシステムでは、文字コードはUTF-8となっておりますので、パソコンからファイル転送する際は、アスキーコードで送付するか、nkf コマンドで文字コード・改行コードを変換する必要があります。

2014.07.14

ジョブがなかなかスケジューリングされません

ジョブは各利用者様の優先度に応じて、スケジューリングされますので、場合によっては待ち時間が発生することがあります。
以下のコマンドを実行することで、ジョブの予約状況を確認することが可能です。

sstat

実行開始時刻が決定していると、
STT(スケジューリング状態)がASG(Assigned)となり、PlannedStartTime(実行開始予定時間)に開始時刻が表示されます。詳細は下記をご覧ください。

スケジューラコマンドについて

あまりに長時間の待ちが発生する場合は、何らかの制限に抵触しているか、もしくはシステムに問題がある可能性があります。以下までご連絡ください。

system{at}hpc.cmc.osaka-u.ac.jp

2014.07.14

実行中のジョブが終了したことを合図に、次のジョブを自動で投入したい。 その際、実行中のjobが成功したかどうかで、投入するジョブを変えたい。

「qwait」コマンドを使用することで、実現可能です。

このコマンドは引数で与えたリクエストID(例:12345.cmc)を待ち合わせするというものです。
指定のリクエストIDのジョブが終了するとメッセージ終了と共にコマンドが終了します。

コマンドの詳細についてはポータルで公開されておりますマニュアル
「NQS利用の手引」のリファレンス編 第1章 ユーザコマンドをご参照頂けますようお願い致します。

NQSII利用の手引き(要認証)
NQSV利用の手引き
※ man qwait でもヘルプを参照できます。

qwait については下記のような使い方が可能です。

監視スクリプトをバックグラウンド実行し、スクリプト内で qwaitを実行します。
exitコード(上記のマニュアルに記載があります)で判定し、その後の動作を分岐させています。
参考にしてください。

-----------
$ qsub job1-1
Request 12345.cmc submitted to queue: Pxx.
$ (./chkjob >& log &)

----- chkjob
#!/bin/sh
while :
do
qwait 12345.cmc #リクエストIDを任意のものに変更して下さい
case $? in
0) qsub job1-2;exit;;
1) qsub job2-1;exit;;
2) qsub job3-1;exit;;
3) echo NQS error | mail xxxx@yyyy.ac.jp;exit;;#メールアドレスを任意のものに変更してください
7) continue;;
*) ;;
esac
done
------------

以上です。

2014.07.14

ジョブを実行しても、エラーメッセージに 「/var/spool/nqsII/jsv/jobfile/****/user_script: コマンドが見つかりません.」 と出力され実行されない。

このエラーの原因は基本的に以下の2つのどちらかとなります。
 

    1.先頭行の "#!" で指定されているコマンド名(通常はシェル名)の絶対パスが誤っている可能性があります。
     パスが正しいか、入力ミスが無いかをご確認ください。
     
    2.ジョブスクリプトファイルの改行コードが CRLF (Windows)になっている可能性があります。
     スクリプトファイルは、文字コードを "UTF-8"、改行コードを "LF" で作成してください。
     

改行コードがCRLFのファイルはエディタ(vi,emacsなど)で開いた際、画面下に[DOS]と表記されます。
アップロードする前の対処方法としては下記の通りです。
 

    ・文字コードや改行コードを指定できるテキストエディタを利用する。
     (秀丸エディタ[シェアウェア] や サクラエディタ 等いろいろあります)
      ※ 文字コードは "UTF-8"、改行コードは "LF" を指定
     
    ・WinSCP でファイルをアップロードする時に転送モードを"テキスト" に設定するか、
     ファイルの拡張子をテキストだと自動判別されるもの(.txt , .sh 等)にする。
     ※ この方法では文字コードには対応できません

 
またアップロード後であっても、フロントエンドノード上で以下のコマンドを実行することで、
改行コードがCRLFからLFに変換されたsample2.shが生成されます。
 

    sed 's/\r//g' sample.sh > sample2.sh