計算サービス
質問
回答
インタラクティブでは実行できるのに、バッチジョブとして実行すると、すぐにエラーをはいて終了してしまいます。ちなみに、一部のファイルは Windows からファイル転送で持ってきています。
-
Windowsファイルの改行コードには \r が含まれていて、バッチジョブで利用するファイルにこのコードが含まれていると、エラーが生じることがあります。まずは file コマンドでそのようなファイルがあるかどうか確認します。
% file *
file.cell: ASCII text, with CRLF line terminators
file.txt: ASCII text
file.check: data
file.param: ASCII text, with CRLF line terminators
上記の場合、file.cell と file.param が該当するファイルです。このコード \r を削除するには、以下のようにコマンドを実行してください。なお、ファイル内の \r をすべて削除します。事前に、他への影響がないかどうか確認してください。
% perl -i -pe 's/\r//' file.cell file.param
% file *
file.cell: ASCII text
file.txt: ASCII text
file.check: data
file.param: ASCII text
-
Altix上で並列化プログラミングを行いたいと考えています。
プログラムを並列化する上での開発支援などはしてもらえませんか?
-
スーパーコンピュータシステムでは、より多くの方々に利用していただけるように、計算サーバ上にさまざまなツールをあらかじめ用意しています。
並列プログラミングにつきましては、計算サーバに、自動並列化コンパイラ, プログラムを並列化コードへ自動変換する並列化支援ツール, プログラムの性能解析ツール, 各種デバッグツールがインストールされており、ユーザーは自由にそれらのツールを利用することができます。
積極的な開発支援をすることは難しいですが、並列化手法に関するオンラインマニュアルの提供や、外部講師による講習会なども適宜企画していますので、ぜひご活用ください。
-
計算サーバにおけるログインシェルの変更は可能でしょうか。
-
現在は csh もしくは tcsh のみの変更が可能です。altixaにログイン後、chsh コマンドにて変更してください。以下に例を示します。
ユーザ名 user の場合
altixa{user}236: chsh
Changing login shell for user.
Password: ← ログインパスワードを入力
Enter login(LDAP) password: ← 同じくログインパスワードを入力
Enter the new value, or press return for the default.
Login Shell [/bin/csh]: /usr/local/bin/tcsh ← 変更したいログインシェルの絶対パスを入力
Shell changed.
なお通常の運用ではログインしない計算サーバにおいても、同様にここで設定したログインシェルへ変更されますが、変更には数分から10分程度かかります。
以下に、シェルとその絶対パスを示します。下記以外のシェル(bash,kshやzshなど)には変更しないでください。必要な設定がなされませんのでアプリケーションが正しく実行できなくなります。
ログインシェル | 絶対パス |
csh | /bin/csh |
tcsh | /usr/local/bin/tcsh |
-
MPIジョブを実行すると以下のようなエラーメッセージが出力され、ジョブの実行ができません。どうしたらよいのでしょうか。
altix{user}95: mpirun -np 4 ./a.out
mmap failed (memmap_base) for 2830980 pages (46382776320 bytes)
Killed
-
このメッセージは、仮想メモリのサイズが足りないために出力されるメッセージです。この例では、46382776320 bytes (およそ46GB) の仮想メモリが確保できなかったことを示しています。この問題を解決する方法としては、
1) 実行CPU数を減らして必要な仮想メモリのサイズを減らす
2) limit コマンドでスタックサイズの上限値を減らす
3) limit コマンドで仮想メモリサイズの上限値を増やす
4) バッチジョブとして実行する
といういくつかの方法があります。
方法2の場合には、
% limit stacksize 8192
と実行してデフォルトのスタックサイズを減らすことができます。
方法3の場合には、
% limit vmemoryuse 40000megabytes
と実行して増やすことができます。
方法4の場合には
% qstat -Qf <Queue>
のコマンドを実行し、resources_max.vmem の数値を参照することで、仮想メモリ(vmem)の上限値を確認することができますので、必要な仮想メモリが確保できるキューにてジョブを実行してください。
|