HOME > FAQ > 計算サービス

計算サービス

質問

 

回答

  • 計算サーバで並列化プログラミングを行いたいと考えています。
    プログラムを並列化する上での開発支援などはしてもらえますか?

  • スーパーコンピュータシステムでは、より多くの方々に利用していただけるように、計算サーバ上にさまざまなツールをあらかじめ用意しています。
    並列プログラミングにつきましては、計算サーバに、自動並列化コンパイラ, プログラムを並列化コードへ自動変換する並列化支援ツール, プログラムの性能解析ツール, 各種デバッグツールがインストールされており、ユーザーは自由にそれらのツールを利用することができます。 積極的な開発支援は難しいですが、並列化手法に関するオンラインマニュアルの提供や、外部講師による講習会なども適宜実施していますので、ぜひご活用ください。

  • 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 以下についてはあくまでも一時領域という扱いのため、自動バックアップは行っていませんのでご注意ください。