Recommended
PPTX
Androidとfpgaを高速fifo通信させちゃう
PDF
F#によるFunctional Programming入門
PDF
KEY
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
PDF
PDF
PDF
PDF
PPTX
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PPT
PDF
PDF
PDF
PPT
PPT
Raspberry Jam #1 20121229
PPT
PDF
Processing によるプログラミング入門 第1回
PDF
PDF
Unity × graphics × effects
PDF
Barry Shaked - Navigating Through Challenging Times - Retalix Synergy 2008 Op...
PDF
Wicket with Spring Boot on Azure
More Related Content
PPTX
Androidとfpgaを高速fifo通信させちゃう
PDF
F#によるFunctional Programming入門
PDF
KEY
DE0でラジコンカー作ってみた 関西de0 fpga勉強会20120519
PDF
PDF
PDF
PDF
What's hot
PPTX
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PPT
PDF
PDF
PDF
PPT
PPT
Raspberry Jam #1 20121229
PPT
Viewers also liked
PDF
Processing によるプログラミング入門 第1回
PDF
PDF
Unity × graphics × effects
PDF
Barry Shaked - Navigating Through Challenging Times - Retalix Synergy 2008 Op...
PDF
Wicket with Spring Boot on Azure
PDF
ngx_small_light at 第2回闇鍋プログラミング勉強会
PPTX
PDF
PDF
Similar to Yaminabe fortran
PDF
PDF
PDF
PDF
PDF
PGI CUDA FortranとGPU最適化ライブラリの一連携法
PDF
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
PDF
PFI Christmas seminar 2009
PDF
FP習熟度レベルとFSharpxのIteratee
PPT
CA Japan seminar CA Easytrieve updates 2012/6/5
PDF
PDF
PPT
KEY
Algebraic DP: 動的計画法を書きやすく
PDF
PPTX
PPTX
PPTX
PDF
[CE81] プログラミング入門教育用学習環境PEN
PDF
PDF
More from HPCシステムズ株式会社
PPTX
JAWS-UG HPC #2 LT 並列処理・MPIの第一歩
PPTX
Dentoo.LT12 並列処理・MPIの第一歩 20151025
PPTX
セーラー万年筆の青色ベスポーク(別注品):唯一無二の青の魅力とカスタム体験について
PPTX
HPCで使えそうなFPGA搭載AWS F1 インスタンス_20161218
PPTX
PPTX
PPTX
自宅ラック勉強会20150328 LT自己紹介「自宅ラックと私」
PPTX
LT KYT危険予知トレーニング 20150820
PPTX
PPTX
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
PPTX
20161120_HPCでFPGAを使ってみたい_fpgastartup
PPTX
20170604 Dentoo.Lt #17 静音ガジェットの検証試験
PPTX
PPTX
20170604 Dentoo.Lt #17 飛び入り枠: 手話のすすめ
PPTX
PPTX
PPTX
PPTX
PPTX
PPTX
Yaminabe fortran 1. 2. 博士課程の研究テーマ、
自己紹介 中性子散乱が由来です。
2
た な べ(ぶ) せいいち
田名部 誠一
[Twitter] @n_scattering
[facebook]
http://www.facebook.com/seiichi.tanabetanabu
東北人と関東人のハーフ
日本の産業界・研究開発の黒子としてHPC
(High-Performance Computing) などの技術者
として従事
非研究者博士(役に立っていない)
温故知新・Fortran / @n_scattering 2012/9/15
3. Agenda
3
1. はじめに
2. Fortranとは
3. Fortranの歴史
4. 現在使用できるFortran処理系
5. Fortran入門
6. 大規模科学技術計算への道
温故知新・Fortran / @n_scattering 2012/9/15
4. はじめに
3/31に開催された、第
1回闇鍋プログラミング
勉強会に参加。(@東京
工科大学)
今まで親しみのなかっ
た言語について、数多
くのトピック提供で、刺
激を受けた。
温故知新・Fortran /
2012/9/15 4
@n_scattering
5. はじめに
5
学生だった頃、原子分子物理学(化学?)をテー
マに研究を行いました。
ちなみに、twitter nameは、「中性子散乱」をテーマに
していたことに由来します。
(実験ではなく)理論的研究でしたので、もっぱら
計算機を回していました。
そのときに使用していた言語がFortran (フォートラ
ン)です。
温故知新・Fortran / @n_scattering 2012/9/15
6. はじめに
6
今は、研究とかプログラミン
グから離れて久しいですが、
HPC業界として、計算機を取
り扱う仕事柄、たまにFortran
を思い出す機会があります。
そんなわけで、今回、Fortran
の歴史を振り返りつつ、話を
していこうと思います。
温故知新・Fortran / @n_scattering 2012/9/15
7. 計算科学とは
7
自然界や人工の系についてのモデルを詳しく研
究して、深く理解しようとする分野。
解析的には答えられない
(答えが数式では表現できない)
人間が解くには複雑すぎて θ
どうしようもない L
こういった課題をコンピュータを m
使って解決する
更に進展し、CAEなどに応用される
温故知新・Fortran / @n_scattering 2012/9/15
8. 計算科学とは
8
コンピュータは
高機能な電卓
複雑なシステムを数値的に
シミュレートする実験室
人間の知能を拡大してくれる道具
最大の力を発揮:3役割を同時に機能するとき
計算科学で最も使われている言語がFortran
温故知新・Fortran / @n_scattering 2012/9/15
9. Fortranとは
1954年にIBMのジョン・
バッカスのチームによっ
て考案されたコンピュー
タにおける史上初の
高水準記述言語
「FORTRAN」 の由来は
「数式翻訳」→「formula
translation」
温故知新・Fortran /
2012/9/15 9
@n_scattering
10. Fortranとは
10
FORTRAN/Fortranは科学技術計算に特化した手
続き型プログラミング言語
長い歴史に支えられ、多くの数学関数やサブルー
チンをライブラリで持つ
他の言語より高速 (←最適化しやすい)
古くから、複素数も取り扱えた
(複素数を当たり前のように使う、
電気関係や量子力学関係のファンが多い)
温故知新・Fortran / @n_scattering 2012/9/15
11. Fortranとは
11
広く使われていたFORTRAN77では・・・
数式を簡便に書ける
ほぼ数学の数式通りに計算式を記述できる。もっともこの特徴
は他に計算向きの高級言語がなかった時代の話であり、現代
の水準では「プログラミング言語における標準数式表現の始
祖」といった方が当たっている。
出力が容易
簡単に出力形式を定義できるFORMAT文や、実際の出力デバ
イスを意識しないで済む入出力文がある
(C言語の標準入出力と似た概念である)。
温故知新・Fortran / @n_scattering 2012/9/15
12. Fortranとは
12
スタック指向/構造化指向の言語ではない
COMMON文、BLOCK DATA文やSAVE文など、データ
を固定的に割り当てることを前提としている。
固定形式の書式である
記述方法がカラム位置で決まっている(一部の実装
では拡張されている)
かつて、穿孔カードを
用いていた由来
古くさい
温故知新・Fortran / @n_scattering 2012/9/15
13. Fortranとは
13
Fortran 90/95・・・では
数値計算プログラムを簡単かつ簡潔に記述できる。
プログラムの誤りを犯しにくい言語である。
数値計算のための便利な道具があらかじめ用意され
ている。 (言語仕様・ライブラリ)
作成したプログラムを大規模高速演算に使用
無料のコンパイラが公開されている。
gFortran, g95, Intel Fortran Composer 等
温故知新・Fortran / @n_scattering 2012/9/15
14. Fortranの歴史
14
IBMのジョン・ワーナー・バッ
カス (John Warner Backus,
1924年12月3日 - 2007年3月17日)のチーム
により
IBM 704 メインフレームのた
めのFORTRANの設計と開発
(1954~)
目的はミサイルの軌道計算
のプログラムの簡略化
温故知新・Fortran / @n_scattering 2012/9/15
15. Fortranの歴史
15
1957 IBM704用FORTRAN
1966 American Standards Association
(現ANSI)による規格制定
FORTRAN66
1978 FORTRAN77
世代間の断絶(やや大げさ)
1991 Fortran90
95, 2003, 2008・・・今に至る
温故知新・Fortran / @n_scattering 2012/9/15
16. Fortranの歴史
16
FORTRAN77が利用されてきた期間が長かった。
(今もこよなく愛する人もいるくらい)
Fortran90/95で大きく仕様が変更された。
今現在も、メジャー/マイナーな仕様変更が地味
に行われ、現実の処理系に反映されつつある。
温故知新・Fortran / @n_scattering 2012/9/15
17. Fortranの歴史
17
FORTRAN77とFortran90との比較
フリーフォームソース入力と小文字のFortranキー
ワード。プログラム本文を7桁目から書かなくても良く、
80桁の制限も無い。
変数の長さも32文字までOK
配列演算(配列ごとにまとめて計算できる)
Do While文の実装
FORTRANからFortranへ
温故知新・Fortran / @n_scattering 2012/9/15
18. 現在使用できるFortran処理系
18
今も生き続けるFortranの世界
現在利用できる処理系 自宅でも
Fortran焼肉
無償 が楽しめる
Gfortran、G95
Intel Fortran Composer (非商用利用に限り)
有償 Linux版に限る
Intel Visual Fortran
PGI Fortran
NAG Fortran ・・・etc.
温故知新・Fortran / @n_scattering 2012/9/15
19. Fortran入門
19
近代的な高級言語は論理構造ブロックを持って
いる
書いてある順(linear)に実行する(上から下)
N回の繰り返し(do~enddo)
If-Then-Else
(回数未定の繰り返し) (While)
ただし、古くさい仕様もある。GOTOなど。
温故知新・Fortran / @n_scattering 2012/9/15
20. Fortran入門
20
逐次実行の例 Program area
c
半径rを持つ円 c area of circle, input r
implicit none
の面積を求め c
REAL*8 pi ,r, a
calculate pi
る c
pi=3.1415926535d0
read r from standard input (terminal)
write(*,*) 'Input Radius'
read(*,*) r
c calculate area
a = pi * r**2
c write area onto terminal screen
write (*,10) 'radius r=',r, 'a =',a
10 Format (a10, e20.10, a5, e22.12)
Stop 'area'
End
温故知新・Fortran / @n_scattering 2012/9/15
21. Fortran入門
21
N回の繰り返し
do i = i1, i2
(処理)
end do
温故知新・Fortran / @n_scattering 2012/9/15
22. Fortran入門
22
繰り返し実行の例
Program diff
Implicit None
c Declarations
c h stepsize for approximation, xrange and xstepsize
c
Real*8 f, h, result(3), x, xmin, xmax, xstep
Open(6, File='diff.dat', Status='Unknown')
h = 1.e-3
xmin = 0.0
xmax = 7.0
xstep = 0.01
Do 10 x=xmin, xmax, xstep
result(1) = (f(x+h) - f(x))/h
result(2) = (f(x+h/2) - f(x-h/2))/h
result(3) = (8*(f(x+h/4)-f(x-h/4)) - (f(x+h/2)-f(x-h/2)))/(3*h)
Write (6, 20) x, result(1), result(2), result(3)
10 Continue
温故知新・Fortran / @n_scattering 2012/9/15
23. Fortran入門
23
関数f(x)の数値微分(3パターン実施)
・・・続く
10 Format(F5.3, TR4, F10.8, TR4, F10.8, TR4, F10.8)
Close(6)
Stop 'data saved in diff.dat'
End
c
c the function we want to integrate
Function f(x)
Implicit none
Real*8 f, x
f = cos(x) 微分する関数の定義
Return
End
温故知新・Fortran / @n_scattering 2012/9/15
24. Fortran入門
24
result(1) = (f(x+h) - f(x))/h
result(2) = (f(x+h/2) - f(x-h/2))/h
result(3) = (8*(f(x+h/4)-f(x-h/4)) -
(f(x+h/2)-f(x-h/2)))/(3*h)
温故知新・Fortran / @n_scattering 2012/9/15
25. Fortran入門
25
If-Then-Else
if (条件1) then
(処理1)
elseif (条件2) then
(処理2)
else
(処理3)
endif
温故知新・Fortran / @n_scattering 2012/9/15
26. Fortran入門
26
Program fizzbuzz
条件分岐の例
C
implicit none
integer i,fb
いわゆる「Fizz- do i=1,30
fb=0
Buzz」の簡単な if(mod(i,3).eq.0) then
write(*,*) 'fizz'
例 fb=1
endif
if(mod(i,5).eq.0) then
write(*,*) 'buzz'
fb=1
endif
if (fb.eq.0) then
write(*,*) i
endif
enddo
Stop 'fizzbuzz'
End
温故知新・Fortran / @n_scattering 2012/9/15
27. Fortran入門
27
回数未定の繰り返し
do while (条件1)
(
(処理1)
1)
end do
Fortran90で標準で実装されたので、FORTRAN77
では実装されていない処理系がある。
温故知新・Fortran / @n_scattering 2012/9/15
28. Fortran入門
28
よく使われる数値演算ライブラリ
BLAS (ベクトルと行列に関する基本線型代数操作)
LAPACK (線型計算のための数値解析ソフトウェアライブラリ)
FFTW (高速フーリエ変換のためのライブラリ)
AMD ACML
市販などのライブラリ
Intel MKL
などなど
温故知新・Fortran / @n_scattering 2012/9/15
29. 大規模科学技術計算への道
29
最近のマシン(単体ワークステーションなど)では、
1台の計算機に複数のコア、複数のCPUが利用可
能な場合が増えています。
このような環境の場合には、OpenMPを使って、複
数のコアを有効活用して並列処理することが可能
です。
OpenMPは、Fortran処理系に実装されています。
温故知新・Fortran / @n_scattering 2012/9/15
30. 31. 大規模科学技術計算への道
31
CPUの各コアに、ジョブを分け与えて、「分担作
業」で全体の計算時間を短縮する。
計算時間が1/N(コア数)となってくれるのが理想だ
が、一人でやる作業:
各コアに平等にジョブを分ける作業
各コアの作業が終わって、結果をまとめる作業
があるため、単純には1/Nとはなってくれない。
一人でやる作業をできるだけ少なくする匠の技
温故知新・Fortran / @n_scattering 2012/9/15
32. 大規模科学技術計算への道
32
PCサーバなどをネットワークなどで相互に接続し、
PCクラスタを構築する場合もあります。
複数の計算機を協調して動かすために、互いの
計算機同士と通信しあう必要性があり、
そのため、MPI (Message Passing Interface)が必要
になります。
MPIはMPICH2、OpenMPIなどがあり、処理系に応
じて構築する必要があります。
温故知新・Fortran / @n_scattering 2012/9/15
33. 34. 大規模科学技術計算への道
34
ネットワークに接続されている全マシンにあるCPU
の各コアに、ジョブを分け与えて、「分担作業」で
全体の計算時間を短縮する。
計算時間が1/N(コア数)となってくれるのが理想だ
が
各コアに平等にジョブを分ける作業
各コアの作業が終わって、結果をまとめる作業
ノードをまたぐ際に、通信で時間が掛かる
があるため、単純には1/Nとはなってくれない。
温故知新・Fortran / @n_scattering 2012/9/15
35. まとめ
35
1. はじめに
2. Fortranとは
3. Fortranの歴史
4. 現在使用できるFortran処理系
5. Fortran入門
6. 大規模科学技術計算への道
温故知新・Fortran / @n_scattering 2012/9/15
36. 最後に (フォートランの歌)
36
おおブレネリ あなたの言語はなに?
私の言語はフォートランよ 数値計算が得意なのよ
ヤーーッフォー フォートランランラン
ヤッフォー フォートランランラン
ヤッフォー フォートランランラン
ヤッフォー フォートランランラン
ヤーーッフォー フォートランランラン
ヤッフォー フォートランランラン
ヤッフォー フォートランランラン
ヤッフォーフォー
(いろいろなところで語り継がれています。)
温故知新・Fortran / @n_scattering 2012/9/15
37. 参考文献
37
Wikipedia 「FORTRAN」の項目
小柳義夫 監訳 「計算物理学」(基礎編・応用編)
朝倉書店(2001)
原田賢一 著 「Fortran77 プログラミング」
サイエンス社(1986)
理化学研究所 「スカラー・チューニング講習会」、
「並列プログラミング(MPI)講習会」テキスト
http://accc.riken.jp/HPC/training/
温故知新・Fortran / @n_scattering 2012/9/15