AkaiKKRとUbuntu 12.04 のスワップ領域

AkaiKKR(machikaneyama)をつかっていると、メモリ不足で実行ファイルの作成ができないことがあります。実際の第一原理計算で使うメモリは、実行ファイル作成時と比べてはるかに少ない場合が多いので、スワップ領域を大きくすることで、(実行ファイル作成にかかる時間を我慢すれば)原子数の多い計算もある程度可能になります。

今回は、swapファイルを追加するを参考に Ubuntu 12.04 のスワップ領域を追加してみました。


メモリ不足でAkaiKKRのmakeが失敗する場合


AkaiKKR(machikaneyama)は、実行ファイルを作成するときにメモリを最も使うようです。
そこで、スーパーセルのなかに多くの原子を含む計算を行うような場合、第一原理計算そのものには、そんなにメモリを必要としないはずなのに、実行ファイルを make する際にメモリ不足となって、計算ができないという事態に陥ることがあります。
実行ファイルを作成するときだけ、ハードディスク上のスワップ領域を使うことによって、この問題に対処することができるかもしれません。
今回は Ubuntu 12.04 でスワップ領域を増やし、実行ファイルを作成できるようにする方法について書きます。

specx.fのパラメータとメモリ


AkaiKKRは計算する系の大きさに応じて、実行ファイルをコンパイルしなおさなければならない場合があります。この際 source/specx.f の natmmx や mszemx の値を大きく変更します。(参考: AkaiKKRでスーパーセル その1, AkaiKKRの角運動量(方位量子数)のメモ)

この際にパラメータを大きくしすぎると、実行ファイルを作成できない、または、見かけ上、一瞬で実行ファイルが作成されるものの、実際には実行することができないということになります。これは、スワップ領域を含むメモリが足りていないということが原因です。

素直な解決策は、メモリを買ってきて増設することなのですが、別の解決策としてスワップ領域のサイズを大きくするという方法が考えられます。

スワップ領域の実体は、ハードディスクなので第一原理計算の際にスワップ領域にアクセスが頻繁に起こるようだと、ハードディスクへのアクセス速度がボトルネックとなって計算速度が非常に遅くなってしまいます。

しかし、実際に実メモリすべてと、実メモリの数倍のスワップ領域を利用してコンパイルした実行ファイルであっても、実際の第一原理計算では、実メモリを使いきらないことが多いです。
したがって、実行ファイルの作成のときだけ時間がかかることを我慢すれば、スワップ領域を大きく取ることによって、大きな計算セルを持つ系の計算ができる可能性があることが分かります。

Ubuntu 12.04 でのスワップ領域の追加


Ubuntu 12.04 をデフォルトの設定でインストールすると、スワップ領域のサイズは実メモリと同じぐらいの大きさになるようです。これは Ubuntu をハイバーネートするときにメモリにあったデータをスワップ領域に保存するためと思います。当然ながら Ubuntu をインストールした後からメモリを増設することもあるので、スワップ領域を後から追加する方法もネット上に多く紹介されています。
今回は Linux Salad のswapファイルを追加するのエントリにて紹介されている手順に従いました。

わたしの環境(のうちのひとつ)では、実メモリ 8 GB で、インストール時のスワップ領域が 8 GB となっていました。更に 16 GB のスワップファイルを作成して 24 GB のスワップ領域とします。

sudo dd if=/dev/zero of=/swap bs=1G count=16
sudo mkswap /swap
sudo swapon /swap
sudo emacs -nw /etc/fstab


として /etc/fstab を管理者権限で emacs で開いて下記の行をファイルの最後に追記します。

/swap    swap    swap    defaults    0    0


スワップ領域の大きさは、システムモニタなどで確認することができます。

2*2*2 fcc スーパーセル


計算セルに32原子を含む系の計算のため、イカのパラメータで実行ファイルを作成してみました。

     & (natmmx=32, ncmpmx=32, msizmx=288, mxlmx=3, nk1x=500, nk3x=701,


コンパイルには、実メモリとスワップ領域を合わせて 20 GB 程度必要でした。

関連エントリ




参考URL




参考文献/使用機器




フィードバック



にほんブログ村 その他趣味ブログ 電子工作へ

 ↑ 電子工作ブログランキング参加中です。1クリックお願いします。


コメント・トラックバックも歓迎です。 ↓      


 ↓ この記事が面白かった方は「拍手」をお願いします。


tag: AkaiKKR machikaneyama ubuntu スワップ領域 

comment

Secret

FC2カウンター
カテゴリ
ユーザータグ

LTspiceAkaiKKRmachikaneyamaScilabKKRPSoC強磁性CPAPICOPアンプecalj状態密度モンテカルロ解析常微分方程式odeトランジスタインターフェースDOSPDS5022定電流スイッチング回路確率論半導体分散関係シェルスクリプト乱数レベルシフトHP6632Aトランジスタ技術温度解析可変抵抗I2CブレッドボードR6452A反強磁性数値積分バンド構造バンドギャップセミナー絶縁偏微分方程式非線形方程式ソルバPWscf熱設計シュミットトリガLED三端子レギュレータ順列・組み合わせLM358GW近似カオスマフィンティン半径ISO-I2CフォトカプラA/Dコンバータ発振回路74HC4053数値微分直流動作点解析サーボPC817CアナログスイッチUSB補間TL431カレントミラーbzqltyVESTA電子負荷イジング模型LDA開発環境ブラべ格子FFT量子力学2ちゃんねるチョッパアンプ単振り子ポケモンGOスーパーリーグ標準ロジックQuantumESPRESSO基本並進ベクトルパラメトリック解析アセンブラBSchトレーナーバトル抵抗Maximaラプラス方程式失敗談状態方程式SMPキュリー温度スイッチト・キャパシタ位相図繰り返し熱伝導gfortranコバルトewidthTLP621不規則合金ランダムウォーク六方最密充填構造FET最適化相対論スピン軌道相互作用QSGWQuantum_ESPRESSOGGAVCA仮想結晶近似スレーターポーリング曲線cygwinZnOシュレディンガー方程式フォノンNE555詰め回路条件分岐固有値問題最大値ダイヤモンドガイガー管TLP552マントル自動計測データロガーQNAPUPSCIF井戸型ポテンシャルMCUxcrysdenゼーベック係数格子比熱最小値LM555フェルミ面fsolve過渡解析差し込みグラフ三角波起電力スーパーセル第一原理計算ブラウン運動FXA-7020ZROpenMPTLP521Ubuntuハーフメタル熱力学Writer509ubuntu平均場近似テスタawkLMC662フィルタMAS830LCK1026トランスPIC16F785AACircuit負帰還安定性ハイパーリーグCapSenseナイキスト線図ノコギリ波2SC1815EAGLEPvPP-10OPA2277MBEPGA入出力固定スピンモーメントFSMTeX結晶磁気異方性全エネルギーc/a合金multiplotgnuplot非線型方程式ソルバL10構造正規分布等高線ジバニャン方程式初期値interp1fcc面心立方構造ウィグナーザイツ胞半金属デバイ模型磁気モーメント電荷密度重積分不純物問題擬ポテンシャル状態図cif2cellPWguiSIC二相共存リジッドバンド模型edeltquantumESPRESSOスワップ領域ルチル構造ウルツ鉱構造BaO岩塩構造ヒストグラム確率論マテリアルデザインフラクタルマンデルブロ集合キーボードRealforceクーロン散乱三次元疎行列縮退化学反応関数フィッティング最小二乗法Excel直流解析PCTS-110TS-112日本語パラメータ・モデル等価回路モデル文字列不規則局所モーメント陰解法熱拡散方程式HiLAPWCrank-Nicolson法連立一次方程式specx.fifort境界条件両対数グラフ片対数グラフGimp円周率ヒストグラムシンボル線種グラフの分割軸ラベル凡例トラックボール

最新コメント
リンク

にほんブログ村 その他趣味ブログ 電子工作へ