fortran66のブログ

fortran について書きます。

Fortran2008

Fortran 2008 status

Ian D. Chivers と Jane Sleightholme の記事によると、Cray が Fortran 2008 に完全対応したようです。まぁ coarray は元々 Cray がやっていた物なので有利だとは思いますが・・・ [http://dl.acm.org/citation.cfm?id=2408749&CFID=142464621&CFTOKEN=1032…

Fortran 2003/2008 PATC CSC Course

EUのコンピュータ学習プログラムに講座がありました。 http://www.training.prace-ri.eu/training_material/?tx_pracetmo_pi1[uid]=214 Fortran 2003/2008 Lectures (6M)

block..end block

Fortran2008 では ALOGOL 的なブロック構造が導入されます。ここでは変数などがローカルに確保されます。捨て変数などをローカルに確保できるので便利になります。Intel Fortran では、まだ対応していないので、gfortran で試してみることにします。 block …

CAF の critical,lock,atom の違い

機能の違いをつらつら読んで見ますと、以下のような違いがあります。 critical no flag blocking random order lock lock_type blocking random order lock+acquired lock_type+logical non-blocking random order atom atomic_logical_kind/atomic_int_kind…

F2008のCoarray等 並列処理関連機能について

平成23年度 HPF推進協議会 総会、「京」見学会 http://www.hpfpc.org/soukai_120419.htmlF2008のCoarray等 並列処理関連機能について (日本電気 林 康晴)NECでHPFをやってきた方がCAFについて紹介しておられます。興味深いです。 lock と atomic の考え方…

pi

Intel Fortran の co-array Fortran 機能はまだ試験的なもので性能的に糞らしいですが、ちょっと遊んでみます。現在の co-array 規格では、リダクション系の命令が入っていないので、自分で定義する必要があります。Fortran の自然数は1から始まるので、イ…

coArray Fortran (CAF)

冬の学校のビデオおよびスライド PRACE Winter School 2011 - Introduction to PGAS (Coarray Fortran and UPC) http://www.training.prace-ri.eu/training_material/?tx_pracetmo_pi1%5Buid%5D=77 ドイツ語なまり?の講義。一時間半弱語っています。 http:/…

自己出力プログラム

自分自身を出力するプログラム、通称 Quine を Fortran2008 で拡張された g フォーマット機能を用いて書いてみます。Quine は慣例でクワインとカナ書きしますが、以下のページには /kwi:n/ と発音が書いてあります。まぁ日本ではクワインと呼べばよかろうと…

Arjen Markus 著『Modern Fortran in Practice』

Arjen Markus の Modern Fortran in Practice が発売開始になったようです。 アマゾンでは内容の一部がプレビューできます。 目次とまえがきは以下に。 http://assets.cambridge.org/97811070/17900/frontmatter/9781107017900_frontmatter.pdf Table of Con…

キャラクター版のマンデルブロ図形

ネットでよく見るキャラクター版マンデルブロ図形を Fortran で描いてみました。参考:ASCII Haskell Mandelbrot http://yannesposito.com/Scratch/en/blog/Haskell-Mandelbrot/intel visual fortran の visual studio のアウトライン表示は、forall 1行の…

Fortran 2003+2008 概略

規格に直接関わっている高田正之氏によるまとめ。 http://www.itscj.ipsj.or.jp/forum/forum2008SC22fortran/Fortran20032008.pdf

添え字変数を使わない方向で素因数分解

DO LOOP のループ変数をできるだけ使わない、あるいは配列の添え字変数を使わない方向で、有限個の素数のテーブルにしたがって素因数分解し、テーブルにない素数は余りとして別変数に積を取ってためるプログラムを書いてみます。 試しなので、さほど一貫した…

open 文に於ける newunit

Fortran では外部ファイルの unit 番号の決定が問題になります。そもそも unit 番号が何番まで使えるのか、何番がシステムに予約されているのかすら、規格に定められていないためによくわかりません。 Fortran2008 では、その問題を解決するために、open 文…

sine and cosine curves

昔よく見た文字グラフです。特に意味なしw Fortran2008 では、万能 G 型の Format がさらに拡張されて g0 によってあらゆる型を、よきに計らってくれます。また繰り返し指定子に * を使うことで無限反復となります。 実行結果 ソース・コード program test …

Newton法

少し改良。 実行結果 ソース・プログラム module m_sub implicit none abstract interface pure elemental real function t_f(a, x) real, intent(in) :: a, x end function t_f end interface contains recursive function xiter(f, a, xlist) result(res) …

Newton 法

最近関数プログラミングというのが流行っているわけですが、FORTRAN の父 John Backus は、関数プログラミングに対しても先駆者となっています。 昔 von Neumann モデルの限界がどうのこうの巷で騒がれたころに、Bakus のチューリング賞受賞講演 Can Program…

FizzBuss Fortran

文字型変数と他の型の変数の変換には内部ファイルへの READ/WRITE を用います。内部ファイルへの I/O があった場合、pure 性が保たれるのか気になったので試してみました。結論からいうと pure でした。 内部ファイルの I/O は型変換の代入に近いので、もっ…

Napier's constant または Euler's Number

Fortran2008 では、iso_fortran_env という intrinsic module が導入されています。その module には、単精度や倍精度実数の kind が定義されています。 実行結果 ソース・プログラム program Napier use, intrinsic :: iso_fortran_env implicit none integ…

do concurrent で Mandelbrot 集合

do concurrent は、Fortran2008 で導入された構文で、forall とよく似たループ変数の形を取りますが、forall と違って配列への代入文だけではなく、他の pure な命令を記述できます。forall より記述できる範囲が広がっています。 コンパイラは do concurren…

CoArray Fortran を試す。

暇つぶしに Fortran2008 で導入された並列化機能 CoArray Fortran を試してみました。例として江戸時代の暴れん坊将軍の頃にオイラーが証明したというの値を、並列に和をとって求めることにします。n個あるイメージのi番でiから始めてn個飛びに10**8個のデー…

配列代入のLOOP構造分類

Fortranは配列操作が得意なわけですが、配列に要素を計算して代入するときに、その要素が配列のインデックスにどの程度依存するかで並列化に適したLOOP構造を選べます。 配列の要素が全くインデックスによらない場合、インデックスを省略した記法が使えます…

Fortran2008に採用されたCAFの課題

2008年の古い話題ですが・・・ http://www.hpcsw.org/pi_meeting/presentations/John Mellor-Crummey, Rice University Programming Models for Scientific Computing on Leadership Computing Platforms: The Evolution of Coarray Fortran http://www.hpcs…

Fortran2008 で導入された coArray 機能に対する本家からの批判

coArray Fortran 2.0 In our view, both Numrich and Reid's original design and the coarray extensions proposed for Fortran 2008, suffer from the following shortcomings: There is no support for processor subsets; for instance, coarrays must b…

LU分解 pivot 付き Doolittle 法

配列の割り当てに Fortran2008 の source オプションを使ってみました。 pivotを使うと精度が上がります。 実行結果 ソース・プログラム module m_mat implicit none integer, parameter :: kd = kind(0.0d0) contains subroutine lu2(a, b, x) real(kd), in…

Modern Fortran explained 胸厚

どんどん厚くなってます。内容的には、前の版 fortran95/2003 explained に John Reid: The New Features of Fortran2008*1 と John Reid: Coarrays in the next Fortran Standard*2 を、それぞれ1章として足した感じでしょうか。 *1:ftp://ftp.nag.co.uk/s…

Modern Fortran Explained 発売開始!

CoArrays: Parallel Programming in Fortran

DO CONCURRENT

Fortran2008 で導入された DO CONCURRENT 命令のテスト。オプションとして並列化を Yes にし、かつ RELEASE MODE で実行する必要があります。関数副プログラムの方には PURE 属性をつけて依存性のないことを明示しておきました。(ELEMENTAL 属性もつけてお…

Fortran Explained シリーズの新刊が来春発売

Michael Metcalf, John Reid, and Malcolm Cohen の Fortran Explained シリーズの新しい版が 2011年3月に出るようです。Fortran95 Explained までは、Michael Metcalf and John Reid の二人で出していましたが、前回の Fortran95/2003 Explained からは Mal…

Bessel 関数および G0 FORMAT

Intel Fortran ver.12 では、Fortran2008 の機能の一部が先取りされています。その中から Bessel 関数を表示させてみました。また FORMAT の新機能、無限反復指定子 * と、万能フォーマット G0 も試してみました。またクロス・リファレンス機能がついたので…

Intel ComposerXE-2011 Release_Notes から (その2)

3.2.2 Features from Fortran 2008 ・ Maximum array rank has been raised to 31 dimensions (Fortran 2008 specifies 15) ・ Coarrays CODIMENSION attribute SYNC ALL statement SYNC IMAGES statement SYNC MEMORY statement CRITICAL and END CRITICAL …