SlideShare a Scribd company logo
1 of 68
feramと
強誘電体①
東北大学金属材料研究所 西松毅
t-nissie@imr.tohoku.ac.jp
【配信講義】 CMSI計算科学技術特論C (2015) 第9回
2015年11月26日
1
 東北大理学部物理 crd2txt.exeをakiu.gwから公開
◦ ftp.tohoku.ac.jp:/pub/Windows/Util/crd2txt/crd2tx10.lzh
 2000年 阪大吉田博研で博士→東北大金研で助教
 2003年〜 強誘電体の研究を始める
◦ NEC/TOKINからの国内留学生と → 谷底線法を開発(後述)
 2004年12月〜2005年2月(3ヶ月間)
◦ インド・バンガロールの Jawaharlal Nehru Centre for Advanced
Scientific Research (JNCASR) に滞在
◦ Umesh V. Waghmare教授らと強誘電体薄膜の研究
◦ feramの開発を開始、キャパシタのモデル化のアイデア
 2006年3月〜2008年2月(2年間)
◦ 米国Rutgers大学に滞在
◦ David Vanderbilt教授らと強誘電体について研究
 2008年9月 やっと自分が書いた論文を出版!
自己紹介とferamの開発の経緯
2
feramを1枚のスライドで紹介:
誘電体のマルチスケールシミュレーション
http://loto.sourceforge.net/feram/
第一原理計算による有効ハミルトニアンHeffの構築
[T. Hashimoto, T. Nishimatsu et al.: Jpn. J. Appl. Phys. 43, 6785 (2004)]
feramによる分子動力学計算
ペロフスカイト型化合物を
双極子相互作用のある擬スピン系としてHeffを
時間発展させ,その有限温度の性質をシミュレート
大規模(> 100 nm), 長時間 (> 100 ns) の計算が可能
ペロブスカイト型
酸化合物ABO3
相転移や
ドメイン構造,
ヒステリシスループ,
電気/弾性熱量効果
などのシミュレーション
PRL 99, 077601 (2007),
PRB 78, 104104 (2008),
PRB 82, 134106 (2010),
JPSJ 84, 024716 (2015), …
BaTiO3の相転移
電気/弾性熱量効果
ヒステリ
シスループ
1つの擬スピンが
ABO3の1ユニットセルに対応
3
 R. D. King-Smith and David Vanderbilt: “First-principles
investigation of ferroelectricity in perovskite compounds”,
Phys. Rev. B 49, 5828 (1994). 全エネルギ表面.
 W. Zhong, D. Vanderbilt, and K. M. Rabe: “First-principles
theory of ferroelectric phase transitions for perovskites:
The case of BaTiO3”, Phys. Rev. B 52, 6301 (1995). MC.
 U.V. Waghmare, E. J. Cockayne, and B. P. Burton:
“Ferroelectric Phase Transitions in Nano-scale Chemically
Ordered PbSc0.5Nb0.5O3 using a First-principles Model
Hamiltonian”, Ferroelectrics 291, 187 (2003). FFTでMD.
 Takeshi Nishimatsu, Umesh V. Waghmare, Yoshiyuki
Kawazoe and David Vanderbilt: “Fast molecular-dynamics
simulation for ferroelectric thin-film capacitors using a
first-principles effective Hamiltonian”, Phys. Rev. B 78,
104104 (2008). キャパシタ.
feramで使われている主な理論の発展
4
 強誘電体に特化した高速分子動力学シミュレーター
 開発ポリシー
◦ 論文を読んだ人がシミュレーションを再現できるように
◦ KISS (Keep It Short and Simple)
◦ 拝借できるものは拝借
 ライブラリ (FFTW(計算時間の1/3), LAPACK)
 Autotools (autoconf+automake) → 来週
 SourceForge.org (Subversionリポジトリ、
Webページ、メーリングリスト)
 ライセンス GNU GPLv3
◦ だれでも自由に使ってもらえたらうれしい
◦ ついでに論文とURLを引用してくれたらもっとうれしい
feramの概要(1)
5
MD
 現在BaTiO3, PbTiO3, KNbO3のパラメータを同梱
 長距離の双極子−双極子相互作用をFFTで高速計算
◦ 高速フーリエ変換 (FFT) ライブラリFFTWを利用
 OpenMPで並列化
◦ 基本的に1ノードの計算機で高速に走る
 バルクだけでなく薄膜キャパシタのシミュレーションが可能
 ./configure && make で簡単なコンパイル
 Fortram 95/2003 で Object oriented programming
(OOP)
feramの概要(2)
6
分類 概数
本体 (Fortran: *.F, *.f, *.h) 5,500行
テスト (Fortran, Shell, Ruby) 1,000行
ツール(Fortran, Shell, Ruby, PostScript, Gnuplot) 1,000行
ドキュメント、他 (configure.ac, Makefile.am, etc.) 5,000行
time (./configure && make –j4) # Core i5, SSD, gfortran6 11.4 秒
開発者 1名
ユーザ(なぜか女性が多い。よいところに就職できる。) 10名
ソースパッケージ feram-0.24.02.tar.xz の大きさ 18.5 MB
リリースしたバージョンの数 40
ダウンロード数 2,000
feramを用いて書かれた論文の数 20本
feramの行数、開発者数、ユーザ数
2015年11月現在
7
 将来的に強誘電体メモリ (FeRAM) の
設計にまで使えるようにしたい
 Search Engine Optimization (SEO)
でFeRAMの検索で上位にくるように
 ぜんぶ小文字、できればCourierで
feram ← FeRAM, FRAM®と差別化
 ツール類はferam_cross_section_q.shと
feram_で始まるようにしてインストール
先の名前空間に配慮
ソフトウエアの命名法
なぜ feram という名前にしたのか
8
誘電体 (dielectrics)
圧電体 (piezoelectrics)
焦電体 (pyroelectrics)
強誘電体 (ferroelectrics)
BaTiO3系やPbZrxTi1-xO3系 (PZT) などの強誘電体セラミックスが
工業的に優れた性質を持っているので、上記すべての誘電性につ
いての応用製品がある。強誘電体セラミックスは日本のメーカーの
シェアが高い割合を占めるものが多い、日本の得意分野。
高
対称性
低
極
性
反
転
対
称
性
晶
族
数
結 晶 系
立方 六方 正方
三方
(菱面体)
斜
方
単
斜
三
斜
非極性
結晶
(22)
有
(11)
11 Oh Th D6h C6h D4h C4h D3d C3i D2h C2h Ci
無
(21)
11
O
T
D6
D3h
C3h
D4
D2d
S4 D3 D2
Td
極性
(焦電性)
結晶
(10)
10 C6v C6 C4v C4 C3v C3 C2v
C2
C6
C1
白地:圧電性結晶 赤字:焦電性結晶
 電場をかけると分極する
 電場をゼロにすると分極もゼロになる
 応用:普通のコンデンサー (capacitor)
セラミックコンデンサーはBaTiO3系など
 応用:コンデンサーマイク(電極間にあるのは空気)
誘電体 (dielectrics) とは?
 圧電効果(と逆
圧電効果)をもつ
 GaAs(ZnS構造Td)など単純な構造でも圧電性はある
 応用:圧力センサー(ランガサイト La3Ga5SiO14)
 水晶振動子(quartz SiO2)
 圧電スピーカー(PZT、携帯電話に多用されている)
 セラミック振動子、加速度センサー、ジャイロ(PZT)
 超音波画像診断装置、魚群探知機、ソナー
超音波モーター、etc…
圧電体 (piezoelectrics) とは?
圧電体の応用: 圧電スピーカー
村田製作所のカタログ P82J.pdf
2011-06-30 より。下線は西松。
 極性(電気分極)のある結晶
 光をあてるとその分極が
わずかに変化する
 応用:人感センサー (PZT)
 さらに電場により分極の
反転が可能なものを強
誘電体と呼ぶ(焦電体と
強誘電体との区別は微妙)
焦電体 (pyroelectrics) とは?
赤外線の照射などの
ごく微小な温度変化
が分極の変化として
検出できる
東北大金研の
2階の廊下天井
の照明点灯用
人感センサー
Experimentally observed temperature dependence of lattice constants
for BaTiO3. There are three first-order phase transitions. the cubic to
tetragonal phase transition is nearly second-order one. After [H. E. Kay
and P. Vousden: Philos. Mag. 40, 1019 (1949)].
ferroelectric⇔paraelectric
 電場により
分極の反転が可能
 電場をゼロにし
ても自発分極が残る
 双極子相互作用のある有限系ではドメイン構造をと
ることにより反分極場を小さくして系を安定化させる
(ここで「有限系」とは、無限に広がった端のない強
誘電体や強磁性体ではないという意味)
強誘電体とは?
ドメイン構造とは?
薄膜の場合
(紙面に垂直)
(b)
forming domains, reducing Ed
(a)
PEd
s = Pzind
E = -4p P zd z
 Ferroelectric Random
Access Memory
(FeRAM) とは強誘電体
薄膜キャパシタのヒステ
リシスを利用し正負の
自発分極を1と0に対応
させた不揮発性の半導
体メモリー
 フラッシュ・メモリーより
低電圧で動作
 高集積・大容量化が進めば
DRAM→FeRAM(高速・不揮発性・リフレッシュ不要)
 強誘電体BaTiO3やPbTiO3を第一原理計算で調べて
有効ハミルトニアン(25個のパラメータを持つ)を構築
◦ ABINITを改造して利用 http://www.abinit.org/
 平面波展開: Ecut=60 Hartree, on 8x8x8 k-points
 Rappeのノルム保存擬ポテンシャル http://opium.sf.net/
 GGA (Wu and Cohen), LDAやGGA (PBE) ではダメ
◦ 絶対0度の物性しかわからない
 その有効ハミルトニアンを分子動力学法を使って
いろいろな条件下で時間発展して物性を予測
◦ 独自開発したferamを利用 http://loto.sf.net/feram/
◦ 大規模(32x32x512ユニット・セル、〜100nm)な系の
長時間(〜100ns)のシミュレーションが可能
◦ 温度、圧力、ひずみ、バルクか薄膜か、外部電場
[T. Hashimoto,
T. Nishimatsu et al.:
Jpn. J. Appl. Phys. 43,
6785 (2004)] より
電気分極
(双極子)
BaTiO3 GGA (Wu and Cohen)
 BaTiO3の全エネルギー
表面は浅くて原点に近い
 [111]方向に歪むのが
最安定
 PbTiO3の全エネルギー
表面は深くて原点から
遠い
 [001]方向に歪むのが
最安定
BaTiO3とPbTiO3と
の比較
その他に必要な第一原理計算
 格子定数、弾性定数を求める計算
 フォノンの分散関係の計算(線形応答で)
より正確にはフォノンの dynamical matrix D(k) で
はなく、原子の質量で割る前の interatomic force
constant matrix Φ(k)を計算し、その固有値から擬
スピン間の相互作用を見積もる
With four parameters I can fit an elephant,
and with five I can make him wiggle his trunk.
-- John von Neumann
25個ものパラメータを第一原理計算
だけで決めるのはわりとしんどい
-- 西松毅
 実際のペロブスカイト型ABO3: 15N+6 自由度
◦ 単位胞中5個の原子
◦ 各原子はx, y, zの3方向に動く
◦ スーパーセル中N個の単位胞
◦ 歪みの6成分
 粗視化したモデル: 6N+6 自由度
◦ 単位胞に1つの双極子ベクトルZ*u(R)
◦ 単位胞に1つの「音響変位」ベクトルw(R)
◦ 計 6 自由度/単位胞
すなわち、双極子を
たくさんならべた
スーパーセル(周期
的境界条件)で計算
双極子に働く力の計算方法の簡単化
したフローチャート.高速フーリエ変換
(FFT) と逆FFT (IFFT) とが長距離双
極子−双極子相互作用の高速計算を
可能にし,実空間で計算していたら
O(N2)の計算時間がかかるものが
O(NlogN)になる.
 双極子−双極子の
長距離相互作用のみ
ではM点の反強誘電
状態が最安定
 短距離相互作用を
入れてはじめてΓ点の
強誘電状態が最安定
になる
双極子−双極子の
長距離相互作用のみ
長距離相互作用
+BaTiO3の短距離相互作用
M
Γ
電極は静電的な鏡と見なすことができる
反分極場Edが
一様分極を妨げる
どんな計算ができるか: 相転移
実験値
} MD simulation
BaTiO3
BaTiO3強誘電体キャパシタの電極
依存性(断面の分極のアニメーション)
完全な電極(アニメーション) 不完全な電極 (アニメーション)
29
-50
-40
-30
-20
-10
0
10
20
30
40
50
-800 -600 -400 -200 0 200 400 600 800Pz[mC/cm
2
]
Ez [kV/cm]
(a) l=30, d=0
(perfect)
1.000 GHz 300 K
340 K
380 K
420 K
460 K
500 K
540 K
580 K
-50
-40
-30
-20
-10
0
10
20
30
40
50
-800 -600 -400 -200 0 200 400 600 800
Pz[mC/cm
2
]
Ez [kV/cm]
(b) l=255, d=1
1.000 GHz
300 K
340 K
380 K
420 K
460 K
500 K
温度
電極
依存性
不完全な電極
→TCを下げる
→TC付近での
応用に課題
←
←
PbTiO3は降温シミュレーションで
90°ドメイン構造が凍結される
averaged
凍結されたPbTiO3の90°ドメイン構造
JPSJ 81, 124702 (2012)
 SrTiO3基板に成
長させたPbTiO3
厚膜の明視野
TEM像
 基板に垂直な
c ドメインの中に
a ドメインを形成
することで基板
との miss-fit
strain を緩和
PbTiO3の
90°ドメイ
ン
 ペロブスカイト型強誘電体ABO3のための第一原理
有効ハミルトニアンに基づく高速な分子動力学計算
コードferamを開発。フリーソフトウェアとして公開。
 長距離の双極子−双極子相互作用をFFTで扱うこと
により大規模で長時間のMDシミュレーションが可
能になってきた。
 強誘電体の相転移、ヒステリシスループ、ドメイン構
造のシミュレーション
 電気熱量効果と弾性熱量効果のシミュレーション
(来週)
前半のまとめ
34
具体的にどのようにFFTWライブラリを使っているか解説
このような大きな系の計算が
できるのはFFTのおかげ
離散フーリエ変換 (DFT) とは
一般的な定義(1次元)
36
 N個の(周期的な)
複素数から、
N個の(周期的な)
複素数への写像
 1/N はどちらに
付けてもよいし、
それぞれに
1/sqrt(N) を
付けてもよい
 計算量は
約8N2 FLOP
周期TでN回サンプリング
音波の解析など
37
周期aでN回サンプリング
結晶中の電子の波動関数(Γ点の)
38
周期NaでN回サンプリング
1次元結晶中のフォノンとか
39
と3次元ベクトルにしたのが
3次元離散フーリエ変換(次ページ)
N=Lx×Ly×Lz 3次元離散フーリエ変換
3次元結晶中のフォノンとか
feramはこれの実数⇄複素数を使用
40
 和の中のe-ikXに同じものや同じものの積が何度も出て
くることを使う(?)、離散フーリエ変換を高速に行うア
ルゴリズム
 1次元でも2次元でも3次元でも何次元でも計算量は
ほぼ 5N log2N FLOP
高速フーリエ変換 (FFT) とは
41
離散フーリエ変換 (DFT) ・高速
フーリエ変換 (FFT) の演習問
題
42
X 0a 1a 2a 3a 4a 5a 6a 7a 8a …
k /(2p/a) -4/8 -3/8 -2/8 -1/8 0/8 1/8 2/8 3/8 4/8 5/8 6/8 7/8 8/8 …
配列として確保する範囲 0〜7
周期
等価
だいぶ昔に書いたN=8の演習問題をGistに置きました.kの周期性が勉強できます.
https://gist.github.com/t-nissie/831940161039db8a9da6
 MITのNinjaたち (Matteo Frigo and Steven G.
Johnson) が開発・公開しているFFTライブラリ
 フリーソフトウェア 最新: fftw-3.3.4.tar.gz
 高速(とんでもなく)
 高速(デファクトスタンダード、MKLやcuFFTにはラッパ)
 高速(「FFTWより高速」とかういベンチマークの9割は
FFTWの使い方を間違えている)
 どんなN(係数の数)にも対応
 単精度、倍精度、拡張精度にはリンクするライブラリを
変えて対応する
 初期段階にいくつかの試行計算を行って、最適なアル
ゴリズムを選択するのが特徴→plan(後述)
FFTWライブラリとは
43
 http://loto.sourceforge.net/feram/INSTALL.html
 Debian GNU/Linux系 (Ubuntuなど)
◦ # apt-get install libfftw3-dev
 RedHat系 (CentOSなど)
◦ # yum install fftw-devel
 Cygwin on Windows (gnupackなど)
◦ # apt-cyg install libfftw3-devel
 Mac OS X
◦ Homebrew: # brew install fftw
◦ MacPorts(ompはなし?): # port install fftw-3
◦ Xcode付属の/usr/bin/gcc(実はApple LLVMの
clang)で GCC (GNU Compiler Collection) を
コンパイル・インストールして、さらにそれでFFTWを
コンパイル・インストール(次ページ)
FFTWのインストール方法
44
 --prefix=, --libdir=, --max-load=の値
は適宜システムに合わせる
 MPI版が不要なら--enable-mpiは不要
FFTWのコンパイルとインストール(倍精度)
$ wget http://www.fftw.org/fftw-3.3.4.tar.gz
$ tar xf fftw-3.3.4.tar.gz
$ mkdir fftw-3.3.4/build-with-gcc
$ cd $_
$ ../configure --prefix=/usr/local --libdir=/usr/local/lib64 
--enable-openmp --enable-threads --enable-sse2 --enable-avx 
--enable-mpi --enable-shared
$ make -j --max-load=10.0
$ make check
$ su
# make install
# ldconfig # 必要なら
# exit
$ /usr/local/bin/fftw-wisdom --version
fftw-wisdom tool for FFTW version 3.3.4.
45
 初期化(FortranでもCの関数を直接使う)
◦ use, intrinsic :: iso_c_binding; include 'fftw3.f03’; type(C_PTR) :: plan
◦ ireturn = fftw_init_threads()
◦ call fftw_plan_with_nthreads(OMP_GET_MAX_THREADS())
 配列のallocateとファーストタッチ
 準備段階でplanを作成
◦ plan = fftw_plan_many_dft_r2c(..., r1, ..., c1, ..., FFTW_MEASURE)
 本番ではplanの実行を繰り返す
◦ call fftw_execute_dft_r2c(plan, r2, c2)
◦ r2, c2のサイズとファーストタッチがr1, c1と同じなら同じplanが使える
 配列のdeallocate
 終了処理(プログラムがすぐ終わるなら、なくてもよい)
◦ call fftw_destroy_plan(plan)
◦ call fftw_cleanup_threads()
FFTWの基本的な使い方
フラグ(次ページ)
SoA or AoS用(後述)
planの作成で複数のアルゴリズムなど
が試され最速のcodeletが選ばれる。 46
 FFTW_ESTIMATEで作られるplanは一般的に遅いの
で初期化などだけで用いる。配列の中身を壊さないと
いう利点はある。
 プログラム内ではFFTW_MEASUREを用いる。planを
作っているときに配列の中身が壊れることに注意。
 FFTW_PATIENTを用いてwisdom(後述)を書き出せ
るようにしておく。
 FFTW_EXHAUSTIVEはplanを作るのにとても時間が
かかる。
fftw_planのフラグについて
FFTW_MEASURE or FFTW_PATIENT
47
 配列サイズやシステムによる
 よって、最適な使い方をするにはベンチマークを取る
 メモリバンド幅が律速; Xeonなどメモリチャネル数が
多いCPUに速いメモリを積む
 実行効率は10%前後
 CPUをちゃんと冷やしておかないとクロックが上がらな
い(下がってしまう、TBが効かない)ことがある?
 FFTWのAPIをそのまま使ってプログラミングすべき
Intel MKLやCUDAにはラッパが用意されているから
 以下のスライドで、用語の説明の後、FFTWを高速か
つ高効率に使用する方法をいくつか説明
FFTWを高速に使う方法
(1ノードOpenMP篇)
48
 in-place
◦ FFTの元と先の配列が同じ。
◦ real⇄complexの場合、配列の確保が少し面倒。Fortranの
場合、C_PTRを駆使するとrealとcomplexの2つの別の配列
のようにアクセスができる。
◦ メモリ使用量を削減できる。feramの0.23.02→0.24.00の
in-place化などで64x64x1024なら3.13GB→2.73GB と
(3+6)x33x65x1024x16≒316MB 以上削減。
 out-of-place
 FFTの元と先の配列が異なる。
 real⇄complexの場合、それぞれN, N/2+1と、配列の大きさが異
なっていてもよい。コードはシンプル。とりあえずこっちで書く。
 メモリ使用量が多くなる。
 FFTWではAPIは同じで自動判定してくれる
 配列サイズやシステムによるがFFTWなら計算速度はほぼ同じ
 feramではどちらも使っている 49
in-place and out-of-place FFT
 複素数⇄複素数
◦ c(Lx, Ly, Lz) ⇄ c(Lx, Ly, Lz)
 複素数⇄複素数と比べると実数⇄複素数のFFTは
計算量とメモリ量をそれぞれ約半分にできる
◦ out-of-place: r(Lx, Ly, Lz) ⇄ c(Lx/2+1, Ly, Lz)
◦ in-place: ary(2*(Lx/2+1), Ly, Lz)
◦ FFTWではplanを作るときにc2rまたはr2cの付いた
特別な関数を使う
 以下のベンチマークはすべて倍精度の3次元実数⇄複素数
のFFTの結果(feramでは複素数⇄複素数を使っていない)
複素数⇄複素数 と 実数⇄複素数
50
51
 Lx×Ly×Lz=Nの実数⇄複素数の3次元FFT
 計算量を5N log2N/2としてGFLOPS値を概算
 SR16000, ¼ node = 1 chip, SMT on
feramのパッケージに同梱されている
FFTWのベンチマークの実行例
$ export MALLOCMULTIHEAP=true
$ export XLSMPOPTS="spins=0:yields=0:parthds=16:stride=1:startproc=0”
$ ./feram_fftw_SoA 50 128 128 128 1 FFTW_PATIENT
feram_fftw_SoA.F:66: flags = FFTW_PATIENT
50 1 128 128 128 1 2097152 in 16 0.240 45.9
50 1 128 128 128 1 2097152 out 16 0.240 45.9
50 3 128 128 128 1 2097152 in 16 0.770 42.9
50 6 128 128 128 1 2097152 in 16 1.540 42.9
50 3 128 128 128 1 2097152 out 16 0.780 42.3
50 6 128 128 128 1 2097152 out 16 1.580 41.8
$ ./feram_fftw_wisdom 50 128 128 128 1 FFTW_PATIENT
feram_fftw_wisdom.F:60: flags = FFTW_PATIENT
50 3 128 128 128 1 2097152 in 16 0.890 37.1
50 6 128 128 128 1 2097152 in 16 1.830 36.1
50 3 128 128 128 1 2097152 out 16 0.780 42.3
50 6 128 128 128 1 2097152 out 16 1.590 41.5 52
GFLOPS
 ary(2*(Lx/2+1), Ly, Lz) → ary(2*(Lx/2+1), Ly+1, Lz)
 Lx, Ly, Lzが2の冪乗のとき、paddingを入れて
バンクコンフリクトを回避すると速くなることもある。
 配列サイズやシステムによる。
 paddingにより比較的容易な変更でまずまずの
高速化が見込める。
 ただし、コードが汚くなるので、
+1でなくpadding_yなど変数を用いる。
Paddingについて
53
Padding なし vs. あり
SoA or AoS 1 SoA AoS
in-place or
out-of-place
in out in in out out in in out out
structure
length
1 1 3 6 3 6 3 6 3 6
padding_y=0 39.0 38.3 32.1 34.5 38.9 37.4 33.1 30.9 35.6 32.6
padding_y=1 45.9 45.9 42.9 42.9 42.3 41.8 37.1 36.1 42.3 41.5
128x128x128のFFTのpadding_y=0 or 1のGFLOPS値を比較
SR16000 (Power7) 3.83 GHz,¼ node = 1 chip, 8 core, SMT on, 16 thread
Intel Xeon X5650, max 3.1 GHz, 6 core x 2 chip, HT off, 12 thread
SoA or AoS 1 SoA AoS
in-place or
out-of-place
in out in in out out in in out out
structure
length
1 1 3 6 3 6 3 6 3 6
padding_y=0 36.6 25.7 24.2 23.3 20.1 20.7 27.3 26.2 23.3 22.7
padding_y=1 52.7 36.5 40.7 39.5 31.5 31.3 32.9 27.8 26.1 25.354
libfftw3_omp か libfftw3_threads か
どちらでも同じAPIが使えるが、libfftw3_ompをリンクする方が速い
ので、リンクオプションは -lfftw3 -lfftw3_omp とする。
64x64x64, padding_y=1, FFTW_PATIENT, Xeon X5650,
6 core x 2 chip, max 3.1 GHz, HT off でGFLOPS値を比較。
SoA or AoS 1 SoA AoS
in-place or
out-of-place
in out in in out out in in out out
structure
length
1 1 3 6 3 6 3 6 3 6
omp 42.9 41.2 43.5 43.0 41.2 33.2 38.7 40.1 41.2 33.8
threads 11.4 10.9 17.0 21.5 15.5 18.3 15.7 18.7 16.2 16.8
55
 Intel MKLにはFFTWのラッパが用意されているので
FFTWのほとんどのAPIがそのまま使える
 wisdomファイルのI/Oやfftw_alloc_*()はない
 fftw_malloc()はある
 現行のMKL version 11.2.3では特にSoA・AoSが遅い
 計算速度を求めるならオリジナルのFFTWを使う
 64x64x64, padding_y=1, FFTW_PATIENT, Xeon X5650,
6 core x 2 chip, max 3.1 GHz, HT off でGFLOPS値を比較
オリジナルFFTW vs Intel MKLのラッパ
56
SoA or AoS 1 SoA AoS
in-place or
out-of-place
in out in in out out in in out out
structure
length
1 1 3 6 3 6 3 6 3 6
FFTW3 42.9 41.2 43.5 43.0 41.2 33.2 38.7 40.1 41.2 33.8
MKL 35.1 29.5 12.8 24.3 10.2 17.2 0.9 0.8 4.9 7.7
NUMA (Non-Uniform Memory Access)
Xeon X5650 (2010), 6 core x 1 or 2 chip, max 3.1 GHz
Xeon E5-2680 v3 (2014), 12 core x 1 or 2 chip, max 3.3 GHz
96x96x96, padding_y=1, HT off, FFTW_PATIENT でGFLOPS値を比較
SoA or AoS 1 SoA AoS
in-place or out-
of-place
in out in in out out in in out out
structure length 1 1 3 6 3 6 3 6 3 6
X5650 1 chip 25.7 21.7 20.5 20.2 16.8 16.5 18.7 18.1 15.9 14.9
X5650 2 chip 40.1 39.4 38.1 34.2 28.9 27.8 37.9 31.2 29.7 24.7
E5-2680 v3 1 77.3 76.0 79.7 48.0 45.7 34.0 64.4 45.8 47.8 24.8
E5-2680 v3 2 107.9 112.0 117.6 117.6 114.0 63.3 100.1 117.0 104.0 66.7
128x128x128, padding_y=1, HT off, FFTW_PATIENT でGFLOPS値を比較
SoA or AoS 1 SoA AoS
X5650 1 chip 26.2 19.5 22.9 22.8 18.2 18.1 17.2 17.8 15.6 15.8
X5650 2 chip 52.7 36.5 40.7 39.5 31.5 31.3 32.9 27.8 26.1 25.3
E5-2680 v3 1 135.9 104.4 75.2 59.0 40.3 44.7 48.1 43.8 36.2 28.3
E5-2680 v3 2 161.9 160.7 152.9 97.0 80.4 69.6 111.8 80.4 76.7 57.1
57
 配列サイズやシステムによる
 128x128x128の実数⇄複素数の3次元FFT
SR16000 (Power7) 3.83 GHz
¼ node = 1 chip, 8 core
SMT off, 8 thread vs. SMT on, 16 thread
Simultaneous Multithreading (SMT、同
時マルチスレッディング、HT) はonかoffか
58
SoA or AoS 1 SoA AoS
in-place or
out-of-place
in out in in out out in in out out
structure
length
1 1 3 6 3 6 3 6 3 6
SMT off 8 th. 46.4 46.9 43.7 42.8 42.5 45.1 34.6 36.1 42.8 42.1
SMT on 16 th. 45.9 45.9 42.9 42.9 42.3 41.8 37.1 36.1 42.3 41.5
単位はGFLOPS。あまりかわらない。
 配列サイズやシステムにもよるが、SR16000では
FFTWだけなら計算時間はたいして変わらない
 他の部分でAoSにするとSR16000では高速になる
→SR16000に最適化しすぎた
 Intel系ではSoAにして1配列づつ実行するのが最速
かもしれない(旧バージョンではそうしていた)が、
コードが汚くなるし、将来のFFTWのバージョンアップ
で1配列のFFTとSoAがほぼ同じ速さになる可能性は
ある
 Intel系でわりとAoSは遅かった…
 GPGPU (NDIVIA K20X, CUDA 5.5, cuFFT,
cuBLAS) でもAoSは遅かった…
今年 Structure of Array (SoA) から
Array of Structure (AoS) に変更した
59
0.24.00で一部の配列をin-place化。 60
新旧バージョンを比較
feram
version
¼ node
of
SR16000#
(Power7)
8 core
3.83 GHz
1 node of
SR16000#
(Power7)
32 core
3.83 GHz
1 chip of
Xeon
X5650
6 core
2.66 GHz
2 chip of
Xeon
X5650
12 core
2.66
GHz
1 chip of
Xeon
E5-2680
v3 12 core
2.87* GHz
2 chip
of Xeon
E5-2680
v3 24 core
2.87@ GHz
TDP 250 W 1000 W 95 W 190 W 120 W 240 W
0.22.06 2818 sec 1023 sec 6361 sec 3716 sec 2093 sec 1686 sec
0.23.01 1980 sec 601 sec
0.23.02 1866 sec 557 sec 2072 sec 1731 sec
0.24.00 1819 sec 553 sec 5663 sec 3179 sec 2050 sec 1650 sec
input file: 64x64x1024.feram, 8,200 MD steps, padding_y=1
並列化率が改善 2011年のSandy Bridge
以降並列化率がよくない?
# SR16000ではスレッドをコアにバインドするなど工夫が必要
* turbostatコマンドでTurbo Boostの周波数を実測
@ 24 coreで実行中はヒマにしているcoreもある
高
速
化
61
 wisdomファイルを通して、FFTWがplanを作るときに行っ
たベンチマークの結果の書き出し/読み込みができる
 S式で書かれている
 feram_fftw_wisdom: feram の中で使うFFTのベンチ
マークをして、wisdom_newを出力する
 FFTW_MEASURE と
FFTW_PATIENT で
feram_fftw_wisdom
を数回づつ実行して
最速のwisdomを使う
 48x48x960、SR16000の1チップ=¼ノード、SMT on、
MD5万ステップ 9393秒→9091秒 約3%高速化
 wisdomを読み込むと使われるcodeletが固定される
FFTW: wisdomの利用
GFLOPS
62
 flat MPIも,OpenMP+MPIのハイブリッド並列も可能
◦ flat MPIの実行効率は5%前後
◦ ハイブリッド並列は1〜2%前後
 1D (or slab) decomposition にのみ対応
 Fortranの配列c(Lx, Ly, Lz)ならMPI並列はLzまで
 最後の順序変換(final transpose、多量の通信を
伴う)をoffにもできるが、プログラミングが大変
 プログラムとベンチマークの例:
https://github.com/t-nissie/fft_check_mpi
FFTWのMPI並列化機能
63
 feramのFFTにはFFTWライブラリを使っている
 FFTWはplanを用いるなど特徴がある
 FFTWをより高速に使うためにはいくつか調節すべき
パラメータがある→プログラムのFFT以外の部分の寄
与も考慮しながらそれらのパラメータを調節する
◦ padding
◦ リンクすべきライブラリ
◦ NUMA
◦ SMT (HT)
◦ SoA or AoS
◦ wisdomファイル
 さらにFFTWを使い倒したい→guruやgenfftと検索
後半のまとめ
64
補足資料
65
Xeon X5650 vs Core i7 3770K
FFTはメモリバンド幅が律速; Xeonなどメモリチャンネル数が
多いCPUに速い(クロック周波数の高い)メモリを積むべき
Xeon X5650 (2010), 6 core, max 3.06 GHz, HT off, 1 chip, チャンネル数 3
Core i7 3770K (2012), 4 core, max 3.9 GHz, HT on, 1 chip, チャンネル数 2
96x96x96, padding_y=1, FFTW_PATIENT でGFLOPS値を比較
SoA or AoS 1 SoA AoS
in-place or
out-of-place
in out in in out out in in out out
structure
length
1 1 3 6 3 6 3 6 3 6
Xeon 6 core 25.7 21.7 20.5 20.2 16.8 16.5 18.7 18.1 15.9 14.9
Xeon 4 core 18.3 16.1 15.0 14.8 13.3 13.4 13.5 12.8 11.9 12.0
Core i7 16.4 14.7 13.5 13.4 12.9 12.8 6.2 6.2 13.1 13.1
66
 gfortran -fopenmp -ffree-form -c cufft_module.f
(feramに同梱予定、cuFFTライブラリのAPIへのinterfaceが書いてある)
 gfortran -fopenmp -ffree-form -c cufft_check.F
 gfortran -fopenmp -o cufft_check cufft_check.o cufft_module.o
-L/usr/local/cuda/lib64 -lcublas -lcufft –lcudart
 ./cufft_check 100 64 64 1024
100 64 64 1024 4194304 0.551 秒 83.7 GFLOPS
100 64 64 1024 4194304 3.056 秒 45.3 GFLOPS ←遅い
 ./cufft_check 100 128 128 1024
100 128 128 1024 16777216 2.114 秒 95.2 GFLOPS
100 128 128 1024 16777216 11.891 秒 50.8 GFLOPS ←遅い
SoAからAoSに変更したら
GPU (CUDA#, cuFFT, cuBLAS, Fortranだけで)
だとFFTが2倍遅くなってしまった with K20X*
# CUDA 5.5を使用。CUDA 7でも速くはなっていない。
* K20XのTDPは235 W。67
 crd2txt.exeはWindows 3.1に付属していたカード
ファイルアプリcardfile.exeのファイルフォーマットを
テキストファイルに変換するプログラム
 1995年に公開
 現在はEvernote export format (.enex) に変換す
るプログラムを公開している
https://gist.github.com/t-nissie/9771048
crd2txt.exeのその後
68

More Related Content

What's hot

不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類Shintaro Fukushima
 
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さんAkira Shibata
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
論文紹介資料「Quantum Deep Field : Data-Driven Wave Function ...」
論文紹介資料「Quantum Deep Field : Data-Driven Wave Function ...」論文紹介資料「Quantum Deep Field : Data-Driven Wave Function ...」
論文紹介資料「Quantum Deep Field : Data-Driven Wave Function ...」DaikiKoge
 
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23Masashi Shibata
 
クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別Hiroshi Nakagawa
 
機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論Taiji Suzuki
 
量子コンピュータの量子化学計算への応用の現状と展望
量子コンピュータの量子化学計算への応用の現状と展望量子コンピュータの量子化学計算への応用の現状と展望
量子コンピュータの量子化学計算への応用の現状と展望Maho Nakata
 
2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)Tatsuya Yokota
 
20190609 bayes ml ch3
20190609 bayes ml ch320190609 bayes ml ch3
20190609 bayes ml ch3Yoichi Tokita
 
密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回
密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回
密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回SATOH daisuke, Ph.D.
 
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~SSII
 
汎用ニューラルネットワークポテンシャル「PFP」による材料探索_MRS-J2021招待講演_2021/12/15
汎用ニューラルネットワークポテンシャル「PFP」による材料探索_MRS-J2021招待講演_2021/12/15汎用ニューラルネットワークポテンシャル「PFP」による材料探索_MRS-J2021招待講演_2021/12/15
汎用ニューラルネットワークポテンシャル「PFP」による材料探索_MRS-J2021招待講演_2021/12/15Matlantis
 
機械学習プロフェッショナルシリーズ 深層学習 chapter3 確率的勾配降下法
機械学習プロフェッショナルシリーズ 深層学習 chapter3 確率的勾配降下法機械学習プロフェッショナルシリーズ 深層学習 chapter3 確率的勾配降下法
機械学習プロフェッショナルシリーズ 深層学習 chapter3 確率的勾配降下法zakktakk
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Preferred Networks
 
光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン
光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン
光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシンUtsunomiya Shoko
 
Objectnessとその周辺技術
Objectnessとその周辺技術Objectnessとその周辺技術
Objectnessとその周辺技術Takao Yamanaka
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2Preferred Networks
 
データ解析14 ナイーブベイズ
データ解析14 ナイーブベイズデータ解析14 ナイーブベイズ
データ解析14 ナイーブベイズHirotaka Hachiya
 

What's hot (20)

不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
論文紹介資料「Quantum Deep Field : Data-Driven Wave Function ...」
論文紹介資料「Quantum Deep Field : Data-Driven Wave Function ...」論文紹介資料「Quantum Deep Field : Data-Driven Wave Function ...」
論文紹介資料「Quantum Deep Field : Data-Driven Wave Function ...」
 
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
 
クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別クラシックな機械学習の入門 3. 線形回帰および識別
クラシックな機械学習の入門 3. 線形回帰および識別
 
機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論
 
量子コンピュータの量子化学計算への応用の現状と展望
量子コンピュータの量子化学計算への応用の現状と展望量子コンピュータの量子化学計算への応用の現状と展望
量子コンピュータの量子化学計算への応用の現状と展望
 
2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)2014 3 13(テンソル分解の基礎)
2014 3 13(テンソル分解の基礎)
 
20190609 bayes ml ch3
20190609 bayes ml ch320190609 bayes ml ch3
20190609 bayes ml ch3
 
密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回
密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回
密度汎関数法, Density Fuctional Theory (DFT)の基礎第5回
 
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
SSII2019OS: 深層学習にかかる時間を短くしてみませんか? ~分散学習の勧め~
 
汎用ニューラルネットワークポテンシャル「PFP」による材料探索_MRS-J2021招待講演_2021/12/15
汎用ニューラルネットワークポテンシャル「PFP」による材料探索_MRS-J2021招待講演_2021/12/15汎用ニューラルネットワークポテンシャル「PFP」による材料探索_MRS-J2021招待講演_2021/12/15
汎用ニューラルネットワークポテンシャル「PFP」による材料探索_MRS-J2021招待講演_2021/12/15
 
機械学習プロフェッショナルシリーズ 深層学習 chapter3 確率的勾配降下法
機械学習プロフェッショナルシリーズ 深層学習 chapter3 確率的勾配降下法機械学習プロフェッショナルシリーズ 深層学習 chapter3 確率的勾配降下法
機械学習プロフェッショナルシリーズ 深層学習 chapter3 確率的勾配降下法
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
 
光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン
光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン
光発振器ネットワークで組合せ最適化問題を解くコヒーレントイジングマシン
 
Objectnessとその周辺技術
Objectnessとその周辺技術Objectnessとその周辺技術
Objectnessとその周辺技術
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
 
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM) 一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
 
データ解析14 ナイーブベイズ
データ解析14 ナイーブベイズデータ解析14 ナイーブベイズ
データ解析14 ナイーブベイズ
 

Viewers also liked

CMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードと
CMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードとCMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードと
CMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードとComputational Materials Science Initiative
 
高精度擬ポテンシャル法の開発と表面系への応用
高精度擬ポテンシャル法の開発と表面系への応用高精度擬ポテンシャル法の開発と表面系への応用
高精度擬ポテンシャル法の開発と表面系への応用dc1394
 
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウムComputational Materials Science Initiative
 
量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMOKazufumi Ohkawa
 
技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底Hiromi Ishii
 

Viewers also liked (8)

CMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードと
CMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードとCMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードと
CMSI計算科学技術特論C (2015) xTAPP をはじめとしたDFT コードと
 
高精度擬ポテンシャル法の開発と表面系への応用
高精度擬ポテンシャル法の開発と表面系への応用高精度擬ポテンシャル法の開発と表面系への応用
高精度擬ポテンシャル法の開発と表面系への応用
 
CMSI計算科学技術特論C (2015) feram と強誘電体②
CMSI計算科学技術特論C (2015)  feram と強誘電体②CMSI計算科学技術特論C (2015)  feram と強誘電体②
CMSI計算科学技術特論C (2015) feram と強誘電体②
 
2015-07-28 @ 材料構造の解析に役立つ計算科学研究会
2015-07-28 @ 材料構造の解析に役立つ計算科学研究会2015-07-28 @ 材料構造の解析に役立つ計算科学研究会
2015-07-28 @ 材料構造の解析に役立つ計算科学研究会
 
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム
2015-09-02 @ 大型実験施設とスーパーコンピュータとの連携利用シンポジウム
 
CMSI計算科学技術特論C (2015) OpenMX とDFT①
CMSI計算科学技術特論C (2015) OpenMX とDFT①CMSI計算科学技術特論C (2015) OpenMX とDFT①
CMSI計算科学技術特論C (2015) OpenMX とDFT①
 
量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO
 
技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底技術者が知るべき Gröbner 基底
技術者が知るべき Gröbner 基底
 

Similar to CMSI計算科学技術特論C (2015) feram と強誘電体①

The Innovations accelerated by Computational Study コンピュータサイエンスにより加速する新しい産業創出
The Innovations accelerated by Computational Study コンピュータサイエンスにより加速する新しい産業創出The Innovations accelerated by Computational Study コンピュータサイエンスにより加速する新しい産業創出
The Innovations accelerated by Computational Study コンピュータサイエンスにより加速する新しい産業創出SATOH daisuke, Ph.D.
 
研究発表 スライド
研究発表 スライド研究発表 スライド
研究発表 スライドMaekawa Takuya
 
katagaitaictf11_misc_ysk
katagaitaictf11_misc_yskkatagaitaictf11_misc_ysk
katagaitaictf11_misc_yskysk256
 
表面イオントラップ上での共振器量子電気力学系の実現の検討
表面イオントラップ上での共振器量子電気力学系の実現の検討表面イオントラップ上での共振器量子電気力学系の実現の検討
表面イオントラップ上での共振器量子電気力学系の実現の検討Alto Osada
 
わかものハムの集い3 テーマ発表 アンテナ小僧 発表資料
わかものハムの集い3 テーマ発表 アンテナ小僧 発表資料わかものハムの集い3 テーマ発表 アンテナ小僧 発表資料
わかものハムの集い3 テーマ発表 アンテナ小僧 発表資料j_rocket_boy
 
東大航空宇宙工学科ゼミ 夜輪講「航空宇宙機設計における発見的最適化法の応用」at東京大学 今村先生
東大航空宇宙工学科ゼミ 夜輪講「航空宇宙機設計における発見的最適化法の応用」at東京大学 今村先生東大航空宇宙工学科ゼミ 夜輪講「航空宇宙機設計における発見的最適化法の応用」at東京大学 今村先生
東大航空宇宙工学科ゼミ 夜輪講「航空宇宙機設計における発見的最適化法の応用」at東京大学 今村先生Masahiro Kanazaki
 
ICTSC8 Backboneの紹介
ICTSC8 Backboneの紹介ICTSC8 Backboneの紹介
ICTSC8 Backboneの紹介h-otter
 
STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜
STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜
STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜Masahiko Kimoto
 
研究内容 カタログマイニング
研究内容 カタログマイニング研究内容 カタログマイニング
研究内容 カタログマイニングShogo Tabata
 

Similar to CMSI計算科学技術特論C (2015) feram と強誘電体① (11)

The Innovations accelerated by Computational Study コンピュータサイエンスにより加速する新しい産業創出
The Innovations accelerated by Computational Study コンピュータサイエンスにより加速する新しい産業創出The Innovations accelerated by Computational Study コンピュータサイエンスにより加速する新しい産業創出
The Innovations accelerated by Computational Study コンピュータサイエンスにより加速する新しい産業創出
 
研究発表 スライド
研究発表 スライド研究発表 スライド
研究発表 スライド
 
katagaitaictf11_misc_ysk
katagaitaictf11_misc_yskkatagaitaictf11_misc_ysk
katagaitaictf11_misc_ysk
 
表面イオントラップ上での共振器量子電気力学系の実現の検討
表面イオントラップ上での共振器量子電気力学系の実現の検討表面イオントラップ上での共振器量子電気力学系の実現の検討
表面イオントラップ上での共振器量子電気力学系の実現の検討
 
Tp03 2
Tp03 2Tp03 2
Tp03 2
 
わかものハムの集い3 テーマ発表 アンテナ小僧 発表資料
わかものハムの集い3 テーマ発表 アンテナ小僧 発表資料わかものハムの集い3 テーマ発表 アンテナ小僧 発表資料
わかものハムの集い3 テーマ発表 アンテナ小僧 発表資料
 
feram-0.24.00 is released!
feram-0.24.00 is released!feram-0.24.00 is released!
feram-0.24.00 is released!
 
東大航空宇宙工学科ゼミ 夜輪講「航空宇宙機設計における発見的最適化法の応用」at東京大学 今村先生
東大航空宇宙工学科ゼミ 夜輪講「航空宇宙機設計における発見的最適化法の応用」at東京大学 今村先生東大航空宇宙工学科ゼミ 夜輪講「航空宇宙機設計における発見的最適化法の応用」at東京大学 今村先生
東大航空宇宙工学科ゼミ 夜輪講「航空宇宙機設計における発見的最適化法の応用」at東京大学 今村先生
 
ICTSC8 Backboneの紹介
ICTSC8 Backboneの紹介ICTSC8 Backboneの紹介
ICTSC8 Backboneの紹介
 
STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜
STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜
STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜
 
研究内容 カタログマイニング
研究内容 カタログマイニング研究内容 カタログマイニング
研究内容 カタログマイニング
 

More from Computational Materials Science Initiative

More from Computational Materials Science Initiative (20)

MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE!の設定
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE! の設定
MateriApps LIVE! の設定MateriApps LIVE! の設定
MateriApps LIVE! の設定
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE!の設定
 
ALPSチュートリアル
ALPSチュートリアルALPSチュートリアル
ALPSチュートリアル
 
How to setup MateriApps LIVE!
How to setup MateriApps LIVE!How to setup MateriApps LIVE!
How to setup MateriApps LIVE!
 
MateriApps LIVE!の設定
MateriApps LIVE!の設定MateriApps LIVE!の設定
MateriApps LIVE!の設定
 
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
MateriApps: OpenMXを利用した第一原理計算の簡単な実習MateriApps: OpenMXを利用した第一原理計算の簡単な実習
MateriApps: OpenMXを利用した第一原理計算の簡単な実習
 
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
CMSI計算科学技術特論C (2015) ALPS と量子多体問題②
 
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
CMSI計算科学技術特論C (2015) ALPS と量子多体問題①
 

Recently uploaded

My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」inspirehighstaff03
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」inspirehighstaff03
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」inspirehighstaff03
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドKen Fukui
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」inspirehighstaff03
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfinspirehighstaff03
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドKen Fukui
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfoganekyokoi
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」inspirehighstaff03
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」inspirehighstaff03
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」inspirehighstaff03
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfyukisuga3
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」inspirehighstaff03
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfoganekyokoi
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」inspirehighstaff03
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドKen Fukui
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdfoganekyokoi
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slidessusere0a682
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドKen Fukui
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」inspirehighstaff03
 

Recently uploaded (20)

My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
 
My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」My Inspire High Award 2024  「正義って存在するの?」
My Inspire High Award 2024  「正義って存在するの?」
 
My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdf
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
 

CMSI計算科学技術特論C (2015) feram と強誘電体①

Editor's Notes

  1. 伝説的な anonymous ftp server akiu.gw.tohoku.ac.jp 秋保窓は窓の杜の前身
  2. 本スライドは強誘電体の超高速分子動力学シミュレーターferamの計算手順と,どんな物性をシミュレートできるかを表しています.まず,ペロブスカイト型強誘電体ABO3を第一原理計算で調べ,有効ハミルトニアンのパラメーターを決定します.そのとき,この論文の全エネルギー表面の自動評価方法を使います.また,西松も開発に参加しているABINITを使います.次に強誘電体を双極子相互作用のある擬スピン系としてあらわしたその有効ハミルトニアンを分子動力学法で時間発展させることにより,強誘電体の有限温度での性質をシミュレートすることができます.FFTで双極子相互作用を扱っているので高速で,大規模長時間の計算が可能になっています.相転移やドメイン構造,ヒステリシスループ,電気熱量効果などのシミュレーションが可能です.これらが該当の論文です.
  3. いちいち読む wc -l *.F *.f; wc -l *.rb; wc -l *.sh; wc -l *gp; wc -l *.feram*; wc -l *check*F *check*f
  4. ご存知の通り、絶縁体を誘電性で分類しますと、すべての絶縁体は誘電体であり、その中に圧電体と焦電体があり、対称性から分類されます。 焦電体のうちいくつかは強誘電体ということができて、 BaTiO3系やPbZrxTi1-xO3系 (PZT) などの強誘電体セラミックスが工業的に優れた性質を持っているので、 上記すべての誘電性についての応用製品がある。強誘電体セラミックスは日本のメーカーのシェアが高い割合を占めるものが多い、日本の得意分野です。
  5. 結晶の対称性から見ると、対称性が低いと圧電性があって、さらに対称性が低いと焦電性が出てきて、そのなかのいくつかは強誘電体です。
  6. セラミックスなので「硬い」ので低音が苦手。回路的、デジタル的に補正。それでも音質に不満。バッテリーの容量の増大、磁石の保持力の増大→スピーカーの復権
  7. One of the most famous ferroelectric materials is Barium Titanate, BaTiO3. This is temperature dependence of cell parameters in Angstrom. It exhibit three phase transitions. cubic to tetra, tetra to ortho, and ortho to Rhombo. First one is paraelectric to ferroelectric transition.
  8. 将来的にいちばんお金になりそうなのが強誘電体メモリーでありまして、
  9. これら3方向の全エネルギ表面の高低が相転移の様相を決定します
  10. 次に分子動力学計算の方のご説明をします。分子動力学計算では次のような粗視化を用いて計算の高速化をしています。
  11. /home/t-nissie/feram/feram-o.00/BTOnew/BTOnew-107-plot/
  12. どうやら
  13. super4t$ MALLOCMULTIHEAP=true XLSMPOPTS="spins=0:yields=0:parthds=16:stride=1:startproc=0" ./feram_fftw_SoA 200 128 128 128 0 FFTW_PATIENT feram_fftw_SoA.F:66: flags = FFTW_PATIENT 200 1 128 128 128 0 2097152 in 16 1.130 39.0 200 1 128 128 128 0 2097152 out 16 1.150 38.3 200 3 128 128 128 0 2097152 in 16 4.110 32.1 200 6 128 128 128 0 2097152 in 16 7.660 34.5 200 3 128 128 128 0 2097152 out 16 3.400 38.9 200 6 128 128 128 0 2097152 out 16 7.060 37.4 super4t$ MALLOCMULTIHEAP=true XLSMPOPTS="spins=0:yields=0:parthds=16:stride=1:startproc=0" ./feram_fftw_wisdom 200 128 128 128 0 FFTW_PATIENT feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 200 3 128 128 128 0 2097152 in 16 3.990 33.1 200 6 128 128 128 0 2097152 in 16 8.540 30.9 200 3 128 128 128 0 2097152 out 16 3.710 35.6 super3t$ MALLOCMULTIHEAP=true XLSMPOPTS="spins=0:yields=0:parthds=16:stride=1:startproc=0" ./feram_fftw_SoA 50 128 128 128 1 FFTW_PATIENT feram_fftw_SoA.F:66: flags = FFTW_PATIENT 50 1 128 128 128 1 2097152 in 16 0.240 45.9 50 1 128 128 128 1 2097152 out 16 0.240 45.9 50 3 128 128 128 1 2097152 in 16 0.770 42.9 50 6 128 128 128 1 2097152 in 16 1.540 42.9 50 3 128 128 128 1 2097152 out 16 0.780 42.3 50 6 128 128 128 1 2097152 out 16 1.580 41.8 super3t$ MALLOCMULTIHEAP=true XLSMPOPTS="spins=0:yields=0:parthds=16:stride=1:startproc=0" ./feram_fftw_wisdom 50 128 128 128 1 FFTW_PATIENT feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 50 3 128 128 128 1 2097152 in 16 0.890 37.1 50 6 128 128 128 1 2097152 in 16 1.830 36.1 50 3 128 128 128 1 2097152 out 16 0.780 42.3 50 6 128 128 128 1 2097152 out 16 1.590 41.5 app27$ ./feram_fftw_SoA 50 128 128 128 1 FFTW_PATIENT ../../src/feram_fftw_SoA.F:66: flags = FFTW_PATIENT 50 1 128 128 128 1 2097152 in 12 0.209 52.7 50 1 128 128 128 1 2097152 out 12 0.302 36.5 50 3 128 128 128 1 2097152 in 12 0.812 40.7 50 6 128 128 128 1 2097152 in 12 1.674 39.5 50 3 128 128 128 1 2097152 out 12 1.047 31.5 50 6 128 128 128 1 2097152 out 12 2.109 31.3 app27$ ./feram_fftw_wisdom 20 128 128 128 1 FFTW_PATIENT ../../src/feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 20 3 128 128 128 1 2097152 in 12 0.401 32.9 20 6 128 128 128 1 2097152 in 12 0.950 27.8 20 3 128 128 128 1 2097152 out 12 0.506 26.1 20 6 128 128 128 1 2097152 out 12 1.045 25.3 app27$
  14. app14$ pwd /home/t-nissie/benchmark/feram_fft_wisdom/r2634-app4t-gfortran-5.2.0/ app14$ cat /proc/cpuinfo | grep Xeon | tail -1 model name : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz app14$ app14$ ./feram_fftw_SoA 500 64 64 64 1 FFTW_PATIENT && ./feram_fftw_wisdom 500 64 64 64 1 FFTW_PATIENT feram_fftw_SoA.F:66: flags = FFTW_PATIENT 500 1 64 64 64 1 262144 in 12 0.275 42.896 500 1 64 64 64 1 262144 out 12 0.286 41.246 500 3 64 64 64 1 262144 in 12 0.813 43.529 500 6 64 64 64 1 262144 in 12 1.645 43.027 500 3 64 64 64 1 262144 out 12 0.858 41.246 500 6 64 64 64 1 262144 out 12 2.130 33.230 feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 500 3 64 64 64 1 262144 in 12 1.006 35.178 500 6 64 64 64 1 262144 in 12 1.799 39.343 500 3 64 64 64 1 262144 out 12 0.867 40.818 500 6 64 64 64 1 262144 out 12 2.408 29.393 app14$ pwd /home/t-nissie/benchmark/feram_fft_wisdom/r2634-app4t-gfortran-5.2.0-threads app14$ ./feram_fftw_SoA 500 64 64 64 1 FFTW_PATIENT && ./feram_fftw_wisdom 500 64 64 64 1 FFTW_PATIENTferam_fftw_SoA.F:66: flags = FFTW_PATIENT 500 1 64 64 64 1 262144 in 12 1.037 11.376 500 1 64 64 64 1 262144 out 12 1.083 10.892 500 3 64 64 64 1 262144 in 12 2.080 17.014 500 6 64 64 64 1 262144 in 12 3.294 21.487 500 3 64 64 64 1 262144 out 12 2.284 15.495 500 6 64 64 64 1 262144 out 12 3.864 18.318 feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 500 3 64 64 64 1 262144 in 12 2.255 15.694 500 6 64 64 64 1 262144 in 12 3.795 18.651 500 3 64 64 64 1 262144 out 12 2.189 16.167 500 6 64 64 64 1 262144 out 12 4.212 16.804 app27$ pwd /home/t-nissie/f/loto/feram/branches/z_star_r/0.25.01-r2638-2015-11-11-gfortran-5.2.0-app4t/src app27$ head feram_fftw_*log ==> feram_fftw_SoA.log <== ../../src/feram_fftw_SoA.F:66: flags = FFTW_MEASURE 100 1 64 64 64 1 262144 in 12 0.058 40.7 100 1 64 64 64 1 262144 out 12 0.058 40.7 100 3 64 64 64 1 262144 in 12 0.466 15.2 100 6 64 64 64 1 262144 in 12 0.483 29.3 100 3 64 64 64 1 262144 out 12 0.471 15.0 100 6 64 64 64 1 262144 out 12 0.532 26.6 ==> feram_fftw_wisdom.log <== ../../src/feram_fftw_wisdom.F:60: flags = FFTW_MEASURE 100 3 64 64 64 1 262144 in 12 0.183 38.7 100 6 64 64 64 1 262144 in 12 0.353 40.1 100 3 64 64 64 1 262144 out 12 0.172 41.2 100 6 64 64 64 1 262144 out 12 0.419 33.8 app27$ ./feram_fftw_wisdom 100 64 64 64 1 FFTW_PATIENT ../../src/feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 100 3 64 64 64 1 262144 in 12 0.190 37.3 100 6 64 64 64 1 262144 in 12 0.356 39.8 100 3 64 64 64 1 262144 out 12 0.172 41.2 100 6 64 64 64 1 262144 out 12 0.469 30.2
  15. keywords: SIMD alignment app14$ pwd /home/t-nissie/benchmark/feram_fft_wisdom/r2634-app4t-gfortran-5.2.0/ app14$ cat /proc/cpuinfo | grep Xeon | tail -1 model name : Intel(R) Xeon(R) CPU X5650 @ 2.67GHz app14$ app14$ ./feram_fftw_SoA 500 64 64 64 1 FFTW_PATIENT && ./feram_fftw_wisdom 500 64 64 64 1 FFTW_PATIENT feram_fftw_SoA.F:66: flags = FFTW_PATIENT 500 1 64 64 64 1 262144 in 12 0.275 42.896 500 1 64 64 64 1 262144 out 12 0.286 41.246 500 3 64 64 64 1 262144 in 12 0.813 43.529 500 6 64 64 64 1 262144 in 12 1.645 43.027 500 3 64 64 64 1 262144 out 12 0.858 41.246 500 6 64 64 64 1 262144 out 12 2.130 33.230 feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 500 3 64 64 64 1 262144 in 12 1.006 35.178 500 6 64 64 64 1 262144 in 12 1.799 39.343 500 3 64 64 64 1 262144 out 12 0.867 40.818 500 6 64 64 64 1 262144 out 12 2.408 29.393 ==> feram_fftw_wisdom.log <== ../../src/feram_fftw_wisdom.F:60: flags = FFTW_MEASURE 100 3 64 64 64 1 262144 in 12 0.183 38.7 100 6 64 64 64 1 262144 in 12 0.353 40.1 100 3 64 64 64 1 262144 out 12 0.172 41.2 100 6 64 64 64 1 262144 out 12 0.419 33.8 app14$ date; pwd Sat Nov 14 15:37:27 JST 2015 /home/t-nissie/benchmark/feram_fft_wisdom/r2640-app4t-ifort-15.0.3-MKL-11.2.3 app14$ cat 64x64x64-1.txt app14$ ./feram_fftw_SoA 100 64 64 64 1 FFTW_MEASURE;\ ./feram_fftw_wisdom 100 64 64 64 1 FFTW_MEASURE;\ ./feram_fftw_wisdom 100 64 64 64 1 FFTW_MEASURE;\ ./feram_fftw_wisdom 100 64 64 64 1 FFTW_MEASURE;\ ./feram_fftw_wisdom 100 64 64 64 1 FFTW_MEASURE feram_fftw_SoA.F:69: flags = FFTW_MEASURE 100 1 64 64 64 1 262144 in 12 0.067 35.1 100 1 64 64 64 1 262144 out 12 0.080 29.5 100 3 64 64 64 1 262144 in 12 0.553 12.8 100 6 64 64 64 1 262144 in 12 0.583 24.3 100 3 64 64 64 1 262144 out 12 0.691 10.2 100 6 64 64 64 1 262144 out 12 0.825 17.2 feram_fftw_wisdom.F:63: flags = FFTW_MEASURE 100 3 64 64 64 1 262144 in 12 7.933 0.9 100 6 64 64 64 1 262144 in 12 17.347 0.8 100 3 64 64 64 1 262144 out 12 1.681 4.2 100 6 64 64 64 1 262144 out 12 2.053 6.9 feram_fftw_wisdom.F:63: flags = FFTW_MEASURE 100 3 64 64 64 1 262144 in 12 7.930 0.9 100 6 64 64 64 1 262144 in 12 17.341 0.8 100 3 64 64 64 1 262144 out 12 1.433 4.9 100 6 64 64 64 1 262144 out 12 1.961 7.2 feram_fftw_wisdom.F:63: flags = FFTW_MEASURE 100 3 64 64 64 1 262144 in 12 7.936 0.9 100 6 64 64 64 1 262144 in 12 17.346 0.8 100 3 64 64 64 1 262144 out 12 1.419 5.0 100 6 64 64 64 1 262144 out 12 1.958 7.2 feram_fftw_wisdom.F:63: flags = FFTW_MEASURE 100 3 64 64 64 1 262144 in 12 7.956 0.9 100 6 64 64 64 1 262144 in 12 17.401 0.8 100 3 64 64 64 1 262144 out 12 1.393 5.1 100 6 64 64 64 1 262144 out 12 1.952 7.3 app14$
  16. app27$ taskset -c 6-11 ./feram_fftw_SoA 50 96 96 96 1 FFTW_PATIENT; taskset -c 6-11 ./feram_fftw_wisdom 50 96 96 96 1 FFTW_PATIENT feram_fftw_SoA.F:66: flags = FFTW_PATIENT 50 1 96 96 96 1 884736 in 6 0.167 26.2 50 1 96 96 96 1 884736 out 6 0.200 21.8 50 3 96 96 96 1 884736 in 6 0.623 21.0 50 6 96 96 96 1 884736 in 6 1.266 20.7 50 3 96 96 96 1 884736 out 6 0.762 17.2 50 6 96 96 96 1 884736 out 6 1.548 16.9 feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 50 3 96 96 96 1 884736 in 6 0.695 18.9 50 6 96 96 96 1 884736 in 6 1.486 17.6 50 3 96 96 96 1 884736 out 6 0.872 15.0 50 6 96 96 96 1 884736 out 6 1.802 14.5 app27$ taskset -c 0-11 ./feram_fftw_SoA 50 96 96 96 1 FFTW_PATIENT; taskset -c 0-11 ./feram_fftw_wisdom 50 96 96 96 1 FFTW_PATIENT feram_fftw_SoA.F:66: flags = FFTW_PATIENT 50 1 96 96 96 1 884736 in 12 0.109 40.1 50 1 96 96 96 1 884736 out 12 0.111 39.4 50 3 96 96 96 1 884736 in 12 0.344 38.1 50 6 96 96 96 1 884736 in 12 0.766 34.2 50 3 96 96 96 1 884736 out 12 0.454 28.9 50 6 96 96 96 1 884736 out 12 0.944 27.8 feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 50 3 96 96 96 1 884736 in 12 0.346 37.9 50 6 96 96 96 1 884736 in 12 0.840 31.2 50 3 96 96 96 1 884736 out 12 0.442 29.7 50 6 96 96 96 1 884736 out 12 1.061 24.7 americium01$ numactl --cpubind 0 ./feram_fftw_SoA 100 96 96 96 1 FFTW_PATIENT; numactl --cpubind 0 ./feram_fftw_wisdom 100 96 96 96 1 FFTW_PATIENT feram_fftw_SoA.F:66: flags = FFTW_PATIENT 100 1 96 96 96 1 884736 in 12 0.113 77.3 100 1 96 96 96 1 884736 out 12 0.115 76.0 100 3 96 96 96 1 884736 in 12 0.329 79.7 100 6 96 96 96 1 884736 in 12 1.092 48.0 100 3 96 96 96 1 884736 out 12 0.574 45.7 100 6 96 96 96 1 884736 out 12 1.542 34.0 feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 100 3 96 96 96 1 884736 in 12 0.407 64.4 100 6 96 96 96 1 884736 in 12 1.145 45.8 100 3 96 96 96 1 884736 out 12 0.548 47.8 100 6 96 96 96 1 884736 out 12 2.112 24.8 americium01$ ./feram_fftw_SoA 100 96 96 96 1 FFTW_PATIENT; ./feram_fftw_wisdom 100 96 96 96 1 FFTW_PATIENT feram_fftw_SoA.F:66: flags = FFTW_PATIENT 100 1 96 96 96 1 884736 in 24 0.081 107.9 100 1 96 96 96 1 884736 out 24 0.078 112.0 100 3 96 96 96 1 884736 in 24 0.223 117.6 100 6 96 96 96 1 884736 in 24 0.446 117.6 100 3 96 96 96 1 884736 out 24 0.230 114.0 100 6 96 96 96 1 884736 out 24 0.828 63.3 feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 100 3 96 96 96 1 884736 in 24 0.262 100.1 100 6 96 96 96 1 884736 in 24 0.480 109.2 100 3 96 96 96 1 884736 out 24 0.252 104.0 100 6 96 96 96 1 884736 out 24 0.849 61.8 app27$ taskset -c 0-5 ./feram_fftw_SoA 20 128 128 128 1 FFTW_PATIENT; taskset -c 0-5 ./feram_fftw_wisdom 20 128 128 128 1 FFTW_PATIENT ../../src/feram_fftw_SoA.F:66: flags = FFTW_PATIENT 20 1 128 128 128 1 2097152 in 6 0.168 26.2 20 1 128 128 128 1 2097152 out 6 0.226 19.5 20 3 128 128 128 1 2097152 in 6 0.576 22.9 20 6 128 128 128 1 2097152 in 6 1.159 22.8 20 3 128 128 128 1 2097152 out 6 0.726 18.2 20 6 128 128 128 1 2097152 out 6 1.457 18.1 ../../src/feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 20 3 128 128 128 1 2097152 in 6 0.767 17.2 20 6 128 128 128 1 2097152 in 6 1.485 17.8 20 3 128 128 128 1 2097152 out 6 0.849 15.6 20 6 128 128 128 1 2097152 out 6 1.668 15.8 app27$ ./feram_fftw_SoA 50 128 128 128 1 FFTW_PATIENT ../../src/feram_fftw_SoA.F:66: flags = FFTW_PATIENT 50 1 128 128 128 1 2097152 in 12 0.209 52.7 50 1 128 128 128 1 2097152 out 12 0.302 36.5 50 3 128 128 128 1 2097152 in 12 0.812 40.7 50 6 128 128 128 1 2097152 in 12 1.674 39.5 50 3 128 128 128 1 2097152 out 12 1.047 31.5 50 6 128 128 128 1 2097152 out 12 2.109 31.3 app27$ ./feram_fftw_wisdom 20 128 128 128 1 FFTW_PATIENT ../../src/feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 20 3 128 128 128 1 2097152 in 12 0.401 32.9 20 6 128 128 128 1 2097152 in 12 0.950 27.8 20 3 128 128 128 1 2097152 out 12 0.506 26.1 20 6 128 128 128 1 2097152 out 12 1.045 25.3 app27$ americium01$ numactl --cpubind 0 ./feram_fftw_SoA 100 128 128 128 1 FFTW_PATIENT; numactl --cpubind 0 ./feram_fftw_wisdom 100 128 128 128 1 FFTW_PATIENT; ./feram_fftw_SoA 100 128 128 128 1 FFTW_PATIENT; ./feram_fftw_wisdom 100 128 128 128 1 FFTW_PATIENT feram_fftw_SoA.F:66: flags = FFTW_PATIENT 100 1 128 128 128 1 2097152 in 12 0.161 136.8 100 1 128 128 128 1 2097152 out 12 0.215 102.4 100 3 128 128 128 1 2097152 in 12 0.901 73.3 100 6 128 128 128 1 2097152 in 12 2.311 57.2 100 3 128 128 128 1 2097152 out 12 1.744 37.9 100 6 128 128 128 1 2097152 out 12 3.127 42.3 feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 100 3 128 128 128 1 2097152 in 12 1.361 48.5 100 6 128 128 128 1 2097152 in 12 3.201 41.3 100 3 128 128 128 1 2097152 out 12 2.121 31.1 100 6 128 128 128 1 2097152 out 12 4.956 26.7 feram_fftw_SoA.F:66: flags = FFTW_PATIENT 100 1 128 128 128 1 2097152 in 24 0.136 161.9 100 1 128 128 128 1 2097152 out 24 0.137 160.7 100 3 128 128 128 1 2097152 in 24 0.432 152.9 100 6 128 128 128 1 2097152 in 24 1.355 97.5 100 3 128 128 128 1 2097152 out 24 0.821 80.5 100 6 128 128 128 1 2097152 out 24 1.897 69.6 feram_fftw_wisdom.F:60: flags = FFTW_PATIENT 100 3 128 128 128 1 2097152 in 24 0.591 111.8 100 6 128 128 128 1 2097152 in 24 1.781 74.2 100 3 128 128 128 1 2097152 out 24 0.861 76.7 100 6 128 128 128 1 2097152 out 24 2.312 57.1
  17. 下段はベンチマークの例より 上段 super4t$ date; pwd; cat 128x128x128-1.txt Sat Nov 14 17:32:00 JST 2015 /home/t-nissie/benchmark/feram_fft_wisdom/r2641-xlf-14.01-fftw_xlc_simd super4t$ MALLOCMULTIHEAP=true XLSMPOPTS="spins=0:yields=0:parthds=16:stride=1:startproc=0" ./feram_fftw_SoA 200 128 128 128 1 FFTW_PATIENT; MALLOCMULTIHEAP=true XLSMPOPTS="spins=0:yields=0:parthds=16:stride=1:startproc=0" ./feram_fftw_wisdom 200 128 128 128 1 FFTW_PATIENT feram_fftw_SoA.F:69: flags = FFTW_PATIENT 200 1 128 128 128 1 2097152 in 16 0.940 46.9 200 1 128 128 128 1 2097152 out 16 1.090 40.4 200 3 128 128 128 1 2097152 in 16 3.080 42.9 200 6 128 128 128 1 2097152 in 16 6.130 43.1 200 3 128 128 128 1 2097152 out 16 3.400 38.9 200 6 128 128 128 1 2097152 out 16 6.390 41.4 feram_fftw_wisdom.F:63: flags = FFTW_PATIENT 200 3 128 128 128 1 2097152 in 16 3.650 36.2 200 6 128 128 128 1 2097152 in 16 7.200 36.7 200 3 128 128 128 1 2097152 out 16 3.050 43.3 200 6 128 128 128 1 2097152 out 16 6.170 42.8 super4t$ MALLOCMULTIHEAP=true XLSMPOPTS="spins=0:yields=0:parthds=8:stride=2:startproc=0" ./feram_fftw_SoA 200 128 128 128 1 FFTW_PATIENT; MALLOCMULTIHEAP=true XLSMPOPTS="spins=0:yields=0:parthds=8:stride=2:startproc=0" ./feram_fftw_wisdom 200 128 128 128 1 FFTW_PATIENT feram_fftw_SoA.F:69: flags = FFTW_PATIENT 200 1 128 128 128 1 2097152 in 8 0.950 46.4 200 1 128 128 128 1 2097152 out 8 0.940 46.9 200 3 128 128 128 1 2097152 in 8 3.020 43.7 200 6 128 128 128 1 2097152 in 8 6.180 42.8 200 3 128 128 128 1 2097152 out 8 3.110 42.5 200 6 128 128 128 1 2097152 out 8 5.860 45.1 feram_fftw_wisdom.F:63: flags = FFTW_PATIENT 200 3 128 128 128 1 2097152 in 8 3.820 34.6 200 6 128 128 128 1 2097152 in 8 7.310 36.1 200 3 128 128 128 1 2097152 out 8 3.090 42.8 200 6 128 128 128 1 2097152 out 8 6.270 42.1 super4t$
  18. super4t: /home/t-nissie/benchmark/feram_fft_wisdom/r2621-xlf-14.01-fftw_xlc_simd measure_19 100 3 48 48 960 1 2211840 in 16 2.760 25.336 100 6 48 48 960 1 2211840 in 16 4.960 28.197 100 3 48 48 960 1 2211840 out 16 2.180 32.077 100 6 48 48 960 1 2211840 out 16 4.580 30.536 patient_01 100 3 48 48 960 1 2211840 in 16 2.420 28.896 100 6 48 48 960 1 2211840 in 16 4.760 29.381 100 3 48 48 960 1 2211840 out 16 2.120 32.985 100 6 48 48 960 1 2211840 out 16 4.160 33.619 app26$ date; pwd Tue Oct 20 16:47:22 JST 2015 /home/t-nissie/feram/feram-m.06/BTO-thermal-conductivity/BTOtc-a5-05K-0.00001-0.00001-Py-48x48x960-300-600-average400k-with-SC app26$ grep TIMING *1vs.log | grep ' 31' | awk '{m+=$3} END{print NR, m/NR;}' 36 9393.09 app26$ grep TIMING *1vs.log | egrep ' 1[34]' | awk '{m+=$3} END{print NR, m/NR;}' 25 9090.54 app26$