計算サービス
質問
回答
インタラクティブでは実行できるのに、バッチジョブとして実行すると、すぐにエラーをはいて終了してしまいます。ちなみに、一部のファイルは 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//g' file.cell file.param
% file *
file.cell: ASCII text
file.txt: ASCII text
file.check: data
file.param: ASCII text
あるいは、dos2unix コマンドでも解決できる場合があります。
% dos2unix file.cell
dos2unix: converting file file.cell to UNIX format ...
-
計算サーバで並列化プログラミングを行いたいと考えています。
プログラムを並列化する上での開発支援などはしてもらえますか?
-
スーパーコンピュータシステムでは、より多くの方々に利用していただけるように、計算サーバ上にさまざまなツールをあらかじめ用意しています。
並列プログラミングにつきましては、計算サーバに、自動並列化コンパイラ, プログラムを並列化コードへ自動変換する並列化支援ツール, プログラムの性能解析ツール, 各種デバッグツールがインストールされており、ユーザーは自由にそれらのツールを利用することができます。
積極的な開発支援は難しいですが、並列化手法に関するオンラインマニュアルの提供や、外部講師による講習会なども適宜実施していますので、ぜひご活用ください。
-
計算サーバにおけるログインシェルの変更は可能でしょうか。
-
ldapchsh コマンドで変更することができます。
% ldapchsh bash (bash に変更したい場合)
Enter LDAP Password: (現在のパスワード)
modifying entry "uid=xxx,ou=xxx,dc=xxx,dc=xxx,dc=xxx,dc=xxx"
引数としては、以下を指定することができます。
csh, tcsh, bash, zsh
-
MPIジョブを実行すると以下のようなエラーメッセージが出力され、ジョブの実行ができません。どうしたらよいのでしょうか。
% mpirun -np 4 ./a.out
mmap failed (memmap_base) for 2830980 pages (46382776320 bytes)
Killed
-
このメッセージは、仮想メモリのサイズが足りないために出力されるメッセージです。この例では、46382776320 bytes (およそ46GB) の仮想メモリが確保できなかったことを示しています。この問題を解決する方法としては、
1) 環境変数 MPI_MEMMAP_OFF を設定する
2) 実行CPU数を減らして必要な仮想メモリのサイズを減らす
3) limit コマンドでスタックサイズの上限値を減らす
4) limit コマンドで仮想メモリサイズの上限値を増やす
5) バッチジョブとして実行する
といういくつかの方法があります。
方法1の場合には、
% setenv MPI_MEMMAP_OFF 1
をジョブ実行前に設定します。
方法3の場合には、
% limit stacksize 8192
と実行してデフォルトのスタックサイズを減らすことができます。
方法4の場合には、
% limit vmemoryuse 40000megabytes
と実行して増やすことができます。
方法5の場合には
% qstat -Qf <Queue>
のコマンドを実行し、resources_max.vmem の数値を参照することで、仮想メモリ(vmem)の上限値を確認することができますので、必要な仮想メモリが確保できるキューにてジョブを実行してください。
-
誤って大事なファイルを削除してしまいました。もとに戻す方法はあるでしょうか。
-
ユーザのホームディレクトリには .snapshot というディレクトリがあり、そこには昨晩もしくは数日前のファイルやディレクトリが保存されています。
ls コマンドではその存在が確認できませんが、
% cd .snapshot
と入力後、ls コマンドを実行すると、過去の日付のついたディレクトリが表示されますので、復元したいファイルなどを
コピーしてください。
なお、一時領域である /aptmp/xxx 以下についてはあくまでも一時領域という扱いのため、自動バックアップは行っていませんのでご注意ください。
|