AkaiKKRとOpenMP並列化

AkaiKKR(machikaneyama)ではOpenMPを用いた並列計算を行うに際して、August 26, 2015に公開されたバージョンから OMP_NUM_THREADS などの環境変数を設定する必要が無くなったようです。その反面、並列化する際のスレッド数の制御もできなくなりました。

今回は、それよりも古いバージョンであるMay 22, 2015を使って、計算に使うスレッドの数と計算時間の関係を調べました。

001_20150915141750561.png

Fig.1: スレッド数と計算時間の関係。計算時間は単一スレッドで計算した時間で規格化してある。スレッド数を増やすごとに計算時間が短縮されていく。短縮の度合いは、計算する物質の種類にはほとんど依存しない事がわかる。


その結果、少なくとも私が思っていたよりは、効率的に計算速度が上がっており、何も考えずに全スレッドを使った計算をしてしまってもよさそうな感触を得ました。


OpenMPによる並列化


August 26, 2015よりも以前のバージョンのAkaiKKR(machikaneyama)でもOpenMPを用いた並列化が可能でしたが、August 26, 2015のバージョンでは並列化に対する考え方が変わったようです。

以前はOpenMPを使うためには OMP_NUM_THREADS などの環境変数を設定しなければなりませんでした。この点は、初めてAkaiKKRをインストールする初心者にとって躓きやすいポイントでした(参考:AkaiKKR掲示板の6548 コンパイルスレッド)。August 26, 2015では、環境変数を設定する必要が無くなりコンパイラを指定してmakeするだけでOpenMP並列版のバイナリを作成、実行することができるようです。

その反面、以前は OMP_NUM_THREADS に実際のCPUのスレッド数よりも小さい値を指定することによって、使用するスレッドの数を制限することができていました。August 26, 2015では(少なくとも同じ方法では)スレッドの数を制限できなくなってしまいました。

並列化による速度の上昇


AkaiKKRはコヒーレントポテンシャル近似(CPA)を用いた合金の計算が得意です。従って、使われる用途は必然的に広い組成の範囲を持った合金の計算になりがちです。例えばAkaiKKRでFeCoの磁気モーメントと格子定数では、鉄とコバルトの二元合金に対して、コバルト濃度を0%から100%まで10%刻みで計算しています。

このような計算をするときに、CPUを並列化して組成を一種類ずつ順番に計算していく場合と、それぞれの計算にはCPUを1スレッドずつしか使わずに、複数の組成を平行して計算する場合の、どちらの方が高速に計算を終えることができるのか気になります。
そこで今回は、スレッド数と計算時間の関係をAugust 26, 2015よりも以前のバージョンであるMay 22, 2015で調べました。

計算条件


2015年9月の第27回CMDワークショップに参加させていただき、9月末まで大阪大学のコンピューターを使わせていただけるという事なのでcmd2の私のアカウントにMay 22, 2015のバージョンをインストールして計算を行いました。

計算セルの大きさやCPAの有無によってどの程度の影響があるのかを知るため、もっとも単純なbccFe, CPAを用いたfccNi50Fe50, 計算セルに5個の原子を持ち三成分のCPAを行う立方晶Sr(Ti0.97Ta0.02Ni0.01)O3ペロフスカイト, かなりオープンな構造であるため多量の空港を入れてあるグラファイトの4種類の計算を行いました。

#!/bin/csh -f

## *** プロジェクト名 ***
set PROJECT="Fe"
#set PROJECT="NiFe"
#set PROJECT="SrTiO3"
#set PROJECT="graphite"

setenv OMP_STACKSIZE 100M
limit stacksize unlimited

# ## スレッド数 6
setenv OMP_NUM_THREADS 6
echo "OMP_NUM_THREADS=6"
time ~/old/cpa2002v009c/specx < in/${PROJECT}.in > out/${PROJECT}_6.out

## スレッド数 5
setenv OMP_NUM_THREADS 5
echo "OMP_NUM_THREADS=5"
time ~/old/cpa2002v009c/specx < in/${PROJECT}.in > out/${PROJECT}_5.out

## スレッド数 4
setenv OMP_NUM_THREADS 4
echo "OMP_NUM_THREADS=4"
time ~/old/cpa2002v009c/specx < in/${PROJECT}.in > out/${PROJECT}_4.out

## スレッド数 3
setenv OMP_NUM_THREADS 3
echo "OMP_NUM_THREADS=3"
time ~/old/cpa2002v009c/specx < in/${PROJECT}.in > out/${PROJECT}_3.out

## スレッド数 2
setenv OMP_NUM_THREADS 2
echo "OMP_NUM_THREADS=2"
time ~/old/cpa2002v009c/specx < in/${PROJECT}.in > out/${PROJECT}_2.out

## スレッド数 1
setenv OMP_NUM_THREADS 1
echo "OMP_NUM_THREADS=1"
time ~/old/cpa2002v009c/specx < in/${PROJECT}.in > out/${PROJECT}_1.out


結果


Fig.1はスレッドの数と計算時間の関係をプロットしたものです。
CPUの処理時間は、それぞれの物質を単一スレッドで計算したときの値を1として規格化してあります。
したがって、理想的に言えば2スレッドを使った時には時間が1/2になり、3スレッドを使った時には1/3となる、といったように減少していってほしいところです。実際には多少のオーバーヘッドがありもう少し長い時間がかかっています。

スレッド数を増していくほど並列化の効果は減っていきますが、6スレッド程度までなら並列化の効果が頭打ちになってしまうという事はないようです。また、結晶構造の複雑さに応じて、並列化の効果が変わるのではないかと予想していましたが、結果を見る限りほとんど影響はないようです。

計算してみる前は、状況に応じて並列化の有無をコントロールすることで、効率よく計算ができるのではないかと考えていましたが、結果を見る限り全てOpenMP並列化でやってしまってもよさそうな気がします。
August 26, 2015にバージョンアップすることにより、OMP_NUM_THREADSで並列化数のコントロールができなくなりますが、それでもOpenMP関連に関しては、デメリットよりもメリットの方が大きそうです。

関連エントリ




参考URL




付録


このエントリで使用したファイルを添付します。ファイル名末尾の".txt"を削除して、"_"を"."に変更すれば使えるはずです。(参考:ねがてぃぶろぐの付録)


参考文献/使用機器




フィードバック



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

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


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


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

tag: AkaiKKR machikaneyama KKR CPA OpenMP 

AkaiKKRのインストール

AkaiKKR(machikayema)は、東京大学の赤井久純先生が開発された第一原理計算パッケージで、KKR-CPA法を採用することで化学的な不規則(不純物、不規則合金、固溶体)のバンド計算が可能です。

CygwinでAkaiKKR(Machikaneyama)では Cygwin + g77 でAkaiKKRを利用する方法を書きましたが g77 がCygwinのパッケージからなくなってしまったこともあり、新しい情報でエントリをまとめなおします。
また、AkaiKKRがOpenMPに対応したので、並列化を行う際の注意点についても触れます。ただし、最初はOpenMPを使わない設定で試してみることをお勧めします。

今回のエントリは、以下の流れで展開します。

  1. コンパイラのインストール
  2. AkaiKKR(machikayema)のダウンロードと展開
  3. makefileの編集
  4. specx.fの編集とコンパイル
  5. .bashrcの設定

この際、使用している環境(Ubuntu/Cygwin)とコンパイラ(ifort/gfortran)の違いによって設定方法の説明が枝分かれしていることに注意してください。

注) エントリを書いている間に September 05, 2014 がリリースされたようですが、このエントリは July 29, 2014 を基準に書かれています。September 05, 2014でも大丈夫なようです。
注) 5aと5bの.bashrcへの追記する内容が間違っていたものを修正しました。(2014年9月18日)



はじめに


CygwinでAkaiKKR(Machikaneyama)ではWindowsのCygwinでAkaiKKR(machikayema)を使う方法をまとめました。しかしながら、主に以下の理由で情報が古くなったので新しいエントリにまとめます。

  • AkaiKKRがOpenMPに対応した
  • Cygwinからg77が無くなった

g77の代わりにはgfortranが利用できます。AkaiKKRの現在の最新版(cpa2002v009c July 29, 2014)ではデフォルトではIntel Fortran Compiler(ifort)でOpenMPを有効にしたものを使う設定になっています。

しかしAkaiKKR(machikayema)にも下記の様にあるとおり、AkaiKKRは実際に様々な環境で動作させることが可能です。
AkaiKKR単体で使用することができ、小さなノートパソコンから大きなスーパーコンピュータまで様々な環境で同じように動きます。FORTRANコンパイラが入っているものならば、UNIX、Linux、Mac、Windowsといったあらゆるプラットホーム上で使用できます。

今回は、以下の各条件で動作させる際のインストールの方法と.bashrcの設定について書きます。

  • Cygwin + gfortran (+ OpenMP)
  • Ubuntu + gfortran (+ OpenMP)
  • Ubuntu + ifortran (+ OpenMP)

OpenMP


現在の最新版(cpa2002v009c July 29, 2014)よりも前のバージョンのAkaiKKRではCPUを1スレッドしか利用しません。これに対して最近のPCのCPUは2コア,4コアが当たり前となっています。そうすると極端な話、AkaiKKRはそのPCの性能の半分や四分の一しか利用できていないことになります。

そこでOpenMPを利用すると、計算に利用するスレッドの数を増やした並列計算をすることが可能になります。単純に速度が2倍4倍になるわけではないでしょうが、いくばくかの高速化が期待できるはずです。

ただし、OpenMPを使うためにはコンパイルオプションを指定したり、.bashrcを設定したりする必要があります。少々厄介なことにコンパイルオプションや.bashrcで設定する環境変数の値は、コンパイラの違い(gfortran or ifort)だけでなくAkaiKKRで計算する系によっても異なる場合があります。そのため、まずは、OpenMPを使わない状況で計算できるようにするのがオススメです。

以降、適切なタイミングで紹介しますが、OpenMPを利用する場合は下記のサイトが参考になります。


共通の確認事項


どのOSとコンパイラを使うにしても、以下の流れは共通です。

  1. コンパイラのインストール
  2. AkaiKKR(machikayema)のダウンロードと展開
  3. makefileの編集
  4. specx.fの編集とコンパイル
  5. .bashrcの設定

CygwinでAkaiKKR(Machikaneyama)と比較して「5. .bashrcの設定」の項目が増えました。これはOpenMPを使う場合は特に必須になります。

1. コンパイラのインストール


WindowsでAkaiKKRを実行する場合、Cygwin上でgfortranを使うことができます。
UbuntuなどのLinuxではgfortranの他にIntel Fortran Compiler(ifort)も非商用なら無料で利用できます。

1.a Cygwin + gfortran (+ OpenMP)


CygwinでAkaiKKR(Machikaneyama)にも書いたとおり、CygwinでAkaiKKRを使う場合、とにかく全部のパッケージをInstallにしてしまうのが簡単です(時間はかかりますが)。
最新のCygwinには32bit版と64bit版が存在します。私の環境では64bit版をインストールしました。


002_20130114153227.png

Fig.2: Cygwinのインストールでかならずgfortranがインストールされるようにする。全パッケージのインストールを選ぶとgfortranもインストールされる。


インストールの確認にはCygwinのターミナル上で以下の様にタイプします。

gfortran --version

コンパイラのバージョンが表示されればインストール完了です。

1.b Ubuntu + gfortran (+ OpenMP)


Ubuntuにgfortranをインストールする場合は、シェル上で以下のようにタイプします。

sudo apt-get install gfortran

この際、パスワードを聞かれるので入力します。

1.c Ubuntu + ifort (+ OpenMP)


AkaiKKRはIntel Fortran Compiler(ifort)を利用するのが最も標準的であると思われます。(恐らく赤井先生をはじめAkaiKKRの開発者の方々はifortをメインに利用している気がします。makefileのデフォルトの設定もifortですし。)

Ubuntu 12.04 64bitでHiLAPWでも書きましたが、私は64bit版のUbuntu 12.04にifortをインストールしています。私がインストールしたときにはUbuntu12.04 IntelR Parallel Studio XE 2011 for Linuxのインストールの通りに行いました。
しかし、最近のバージョンでは上手く行かないとのことでUbuntu14.04 64bit にIntelR Parallel Studio XE 2013 for Linuxのインストールが新たに公開されています(私はまだ試していません)。

2. AkaiKKRのダウンロードと展開


AkaiKKRのダウンロードには『計算コード利用許諾契約』への同意と利用登録が必要です。
利用登録に必要な情報は
  • 名前
  • メールアドレス
  • 所属
の3つだけです。

利用登録が完了すると入力したメールアドレスにパスワードが送信されてきます。
このパスワードを利用して、このエントリを書いている段階での最新版であるcpa2002v009c.tar.gzをダウンロードします。

AkaiKKRのページでは、プログラム本体のほかにマニュアルも配布しています。KKR-Green関数法によるバンド計算Machikaneyama2000の使用に関するメモは印刷して手元においておくとよいと思います。

また市販の書籍として計算機マテリアルデザイン入門 (大阪大学新世紀レクチャー)密度汎関数法の発展 -マテリアルデザインへの応用にAkaiKKRに関する言及があります。特に前者は、第一原理計算を"良くわからないけど、とにかくやってみる"という立場の人(私とか)にはよい本だと思います。



KKR-Green関数法によるバンド計算の『プログラムの入手、コンパイルと実行』にならった方法でインストールを進めます。

ダウンロードしたcpa2002v009c.tgzがホームディレクトリにおいてあるとします。64bit版のCygwinを利用している場合には C:\cygwin64\home\ユーザー名 がホームディレクトリとなっていると思います。

このホームディレクトリにkkrというディレクトリを作成します。つぎにcpa2002v009cをkkrフォルダの中に移動します。最後にcpa2002v009c.tgzを展開します。

mkdir kkr
cd kkr
mv ../cpa2002v009c.tgz
tar -xzvf cpa2002v009c.tgz

上記のコマンドを順に打ち込めば展開まで行うことが出来ます。もちろんコマンドではなく解凍レンジなどの解凍用ツールを利用しても大丈夫です。
最終的に ~/kkr/cpa2002v009c/ というディレクトリが出来ます。

3. makefileの編集


cpa2002v009cフォルダへ移動するとmakefileというファイルが存在していることが分かります。これをテキストエディタで開いて編集します。

cd ~/kkr/cpa2002v009c/
emacs makefile -nw

上記のコマンドはemacsで編集する場合の例です。

現在の最新版であるcpa2002v009c(July 29, 2014)に付属するmakefileの中の、以下の4つの項目を適切に設定することで、コンパイラの種類やOpenMPの有無に応じて実行ファイルを生成できるようになります。

fort = 
flag =
omp =
nomp =

OpenMPに対応した並列実行ファイルを生成したい場合であっても、最初はOpenMPなしで実行が出来るかを確認するのが良いと思います。
以降では、OSとコンパイラ、OpenMPの有無のそれぞれの条件でどのようにmakefileを編集すればよいかをまとめます。
なお、下記の条件は私の環境で実行できている設定と言うだけで、全ての環境で上手く行くのかは分かりませんし、最適な設定であることも保証しません。

3.a Ubuntu + ifort (OpenMP無し)


UbuntuなどのLinuxでOpenMPを使わない条件でのmakefileは以下の様になります。

fort = ifort
flag = -mp1 -i-dynamic
omp =
nomp =

cpa2002v009c(July 29, 2014)に付属するmakefileの初期設定が ifort + OpenMP なのでOpenMP関連のオプションを空にするだけです。

3.b Ubuntu/Cygwin + gfortran (OpenMP無し)


次にコンパイラとして gfortran をつかいOpenMPは使用しない設定を書きます。

fort = gfortran
flag =
omp =
nomp =

この設定はUbuntuなどのLinuxでもWindows上のCygwinであってもどちらでも使えます。

3.c Ubuntu + ifort + OpenMP


以下に示すのはcpa2002v009c(July 29, 2014)のデフォルトのmakefileの設定です。
UbuntuなどのLinux上でifortを使いOpenMPの並列化を行う場合は、この設定をそのまま使います。
fort = ifort
flag = -mp1 -i-dynamic
omp = -openmp
nomp = -openmp-stubs

しかしながらOpenMPを使うためには.bashrcの設定が必要になります。これを適切に設定しない場合は入力ファイルの種類によってはセグメンテーション違反(Segmentation fault)の出力が出てAkaiKKRが異常終了する場合があります。

3.d Ubuntu + gfortran + OpenMP


AkaiKKR掲示板の6548 コンパイルスレッドではgfortranでコンパイルする場合についての質問が投稿されています。その際にはOpenMPを利用しない設定にして事なきを得たようですが、実はgfortranもOpenMPに対応しています。ただし、注意しなければならないのはコンパイルオプションとして-openmpではなく-fopenmpが必要になると言うことです。

fort = gfortran
flag =
omp = -fopenmp
nomp =

上記の例はUbuntuなどのLinuxで使う場合です。Cygwinのgfortranの場合は更にコンパイルオプションが必要です。

3.e Cygwin + gfortran + OpenMP


CygwinでOpenMPを使う方法を参考にCygwinのgfortranでOpenMPを使ってAkaiKKRをコンパイルするためのmakefileの設定を書きます。

fort = gfortran
flag =
omp = -fopenmp -Wl,--stack,16777216
nomp =

前述の通りgfortranでOpenMPを使うためのオプションは-fopenmpです。
OpenMPを利用する場合は、AkaiKKRの実行ファイルを走らせる前に ulimit -s unlimited と言うコマンドを実行しておかなければならないのですがCygwinではこのコマンドが使えません。対応策はCygwinでOpenMPを使う方法にあるとおりコンパイルのオプションでスタックサイズを指定しておくことです。
上記の例ではスタックサイズとして16777216を指定していますが、これが本当に妥当な値なのかは分かりません。状況に応じて変える必要があるかもしれません。

4. specx.fの編集とコンパイル


makefileの編集が終わればmakeコマンドを使ってコンパイルを行うことが出来ます。
~/kkr/cpa2002v009c/へ移動します。
古いバージョンの実行ファイルやオブジェクトファイルが存在する可能性があるので念のため touch を行います。その後に make を行います。

cd ~/kkr/cpa2002v009c
touch source/*.f
make

CygwinでAkaiKKRを書いたときのバージョンでは、エラーメッセージが表示されてコンパイルに失敗しましたが、cpa2002v009c(July 29, 2014)では、少なくとも私の環境では、そのままコンパイルに成功しました。

ただし入力ファイルの条件、例えば計算セル内の原子の数やk点の数によっては ~/kkr/cpa2002v009c/source/specx.f の編集が必要になる場合があります。

編集すべきパラメータはcpa2002v009c(July 29, 2014)では以下の2行です。

     & (natmmx=8, ncmpmx=8, msizmx=72, mxlmx=4, nk1x=550, nk3x=25,
& msex=201, ngmx=15, nrpmx=650, ngpmx=650, npmx=350, msr=400)


これらのパラメータは『配列の大きさを指定するパラメータ』です。詳しくはKKR-Green関数法によるバンド計算のP29の表5を見てください。

この中でnatmmxとncmpmxの2つのパラメータに注目します。これらはそれぞれ計算する計算セルの中の『原子の個数』と『原子の種類』の最大値をあらわします。
例えば体心立方構造(bcc)や面心立方構造(fcc)の『原子の個数』は1個、六方最密充填構造(hcp)の場合は2個です。また『原子の種類』の方は、純金属で1種類、二元合金で2種類、三元合金で3種類です。

msizmxとmxlmxに関してはAkaiKKRの角運動量(方位量子数)のメモに書く予定です。

nk1kとnk3xは入力ファイルのbzqltyを大きくする(k点の数を増やす)場合に大きくする必要があります。

これらのパラメータを変更した場合はそのたびに make を行う必要があります。make に成功すると実行ファイルが生成されます。Linuxではspecxで、Cygwinではspecx.exeです。

5. .bashrcの設定


まず、実行ファイルのある~/kkr/cpa2002v009c/にパスを通しておくのが良いと思います。
.bashrcはホームディレクトリに存在するファイルです。テキストエディタで編集を行います。
例えばemacsで編集する場合は以下の様にコマンドをタイプします。

cd ~/
emacs .bashrc -nw

実行ファイルのあるディレクトリにパスを通す場合.bashrcの最後に以下の行を追加します。

PATH="$PATH":$HOME/kkr/cpa2002v009c

OpenMPを利用する場合は、他にも追記する必要があります。そしてその追記の内容はOSとコンパイラの種類、更には計算する入力ファイルによって変化します。

現在の最新版であるcpa2002v009c(July 29, 2014)を実行するとアウトプットの冒頭に以下の様なメッセージが表示されます。OpenMPを利用する場合は、このメッセージに従って.bashrcに追記を行います。

 OpenMP required stack size:               91288.
Use the followings command for Linux csh/tcsh:
------------------------------
setenv KMP_STACKSIZE 1M
limit stacksize unlimited
setenv OMP_NUM_THREADS n
------------------------------
Here, n is the number of threads to be used, maybe 8

ただし、上記の表記はcsh/tcsh用になっているのでbash用の表記に変えます。具体的にどのような追記が必要であるかは以降で個別に紹介します。

.bashrcへの全ての追記/編集が終わったら、再起動またはsourceコマンドで.bashrcを読み込ませます。

source ~/.bashrc

5.a Ubuntu + ifort + OpneMP


まずは最も標準的な環境であるUbuntuなどのLinux上でIntel Fortran Compiler(ifort)を使う場合の.bashrcへの追記について書きます。

export KMP_STACKSIZE=16M
ulimit -s unlimited
export OMP_NUM_THREADS=4

アウトプットファイルの冒頭にある表記をcsh/tcshのものからbashのものに書き直しました。

KMP_STACKSIZEは今回は16Mとしてありますが、計算する系によっては過剰かもしれませんし、また少なすぎるかもしれません。大きすぎて困ることがあるかはわかりませんが、少なくとも小さすぎると計算してくれません。

OMP_NUM_THREADSには、使用するCPUのスレッド数を指定します。クアッドコアのCPUなら4を指定するとフルパワーで計算してくれます。また、クアッドコアであっても、あえて2などを指定しておけばCPUを使い切るのを避けることができます。

5.b Ubuntu + gfortran + OpneMP


次にUbuntuなどのLinux上でgfortranを使う際の.bashrcの設定について書きます。

export OMP_STACKSIZE=16M
ulimit -s unlimited
export OMP_NUM_THREADS=4

各パラメータの意味は、上記の ifort のものと同じですが、注意点としては KMP_STACKSIZE が OMP_STACKSIZE に変わっているということでしょうか。
OpenMP* の環境変数によると KMP_ で始まるものはインテル固有の環境編巣であるとのことです。したがって gfortran を利用する場合には、対応する環境変数である OMP_STACKSIZE を設定します。

5.c Cygwin + gfortran + OpneMP


最後にCygwin上でgfortranを使う場合の.bashrcの設定に関して書きます。

export OMP_STACKSIZE=16M
export OMP_NUM_THREADS=4

内容はUbuntuでgfortranを使う場合と同じですが limit stacksize unlimited がなくなっています。
これは「3. makefileの編集」の中の「3.e Cygwin + gfortran + OpenMP」の項目のところで説明したとおりCygwinでは limit stacksize unlimited が使えないためです。

関連エントリ




参考URL




参考文献/使用機器



フィードバック



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

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


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


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

tag: Scilab AkaiKKR machikaneyama KKR cygwin Ubuntu ifort gfortran OpenMP 

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

LTspiceAkaiKKRScilabmachikaneyamaKKRPSoCOPアンプPICCPA強磁性モンテカルロ解析常微分方程式トランジスタode状態密度インターフェースDOSPDS5022ecaljスイッチング回路定電流半導体シェルスクリプトレベルシフト乱数HP6632A温度解析ブレッドボードI2CR6452A分散関係トランジスタ技術可変抵抗確率論数値積分反強磁性セミナー非線形方程式ソルバ絶縁バンドギャップ熱設計偏微分方程式バンド構造GW近似カオス三端子レギュレータLEDフォトカプラシュミットトリガISO-I2CA/DコンバータLM358USBカレントミラーTL431マフィンティン半径PC817C数値微分アナログスイッチ発振回路サーボ直流動作点解析74HC40532ちゃんねる標準ロジックチョッパアンプLDAアセンブラFFTbzqltyイジング模型ブラべ格子開発環境補間量子力学電子負荷BSchパラメトリック解析単振り子基本並進ベクトル熱伝導繰り返しGGAMaximaTLP621ewidthSMP相対論抵抗位相図ランダムウォークスピン軌道相互作用六方最密充填構造不規則合金FETコバルト失敗談QSGWcygwinスレーターポーリング曲線スイッチト・キャパシタラプラス方程式gfortranキュリー温度状態方程式条件分岐格子比熱TLP552LM555TLP521三角波NE555過渡解析FXA-7020ZRWriter509テスタ詰め回路MCUマントルダイヤモンドQNAPデータロガーガイガー管自動計測UPS井戸型ポテンシャルawk第一原理計算仮想結晶近似ブラウン運動差し込みグラフ平均場近似fsolve起電力熱力学OpenMPスーパーセル固有値問題最適化最小値VCAシュレディンガー方程式VESTAubuntu最大値面心立方構造PGAOPA2277L10構造非線型方程式ソルバ2SC1815fccフェルミ面等高線ジバニャン方程式ヒストグラム確率論マテリアルデザイン正規分布結晶磁気異方性interp1フィルタ初期値ウィグナーザイツ胞c/aルチル構造岩塩構造スワップ領域リジッドバンド模型edeltBaOウルツ鉱構造重積分SIC二相共存ZnOquantumESPRESSOCapSensegnuplotmultiplot全エネルギー固定スピンモーメントFSM合金ノコギリ波フォノンデバイ模型ハーフメタル半金属TeXifortTS-110不規則局所モーメントTS-112等価回路モデルパラメータ・モデルヒストグラムExcel円周率GimpトラックボールPC直流解析入出力文字列マンデルブロ集合キーボードフラクタル化学反応三次元Realforce縮退日本語最小二乗法関数フィッティング疎行列シンボル線種ナイキスト線図陰解法負帰還安定性熱拡散方程式EAGLECrank-Nicolson法連立一次方程式P-10クーロン散乱Ubuntu境界条件MBEHiLAPW軸ラベルトランスCK1026MAS830L凡例PIC16F785LMC662AACircuit両対数グラフ片対数グラフグラフの分割specx.f

最新コメント
リンク

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