fortran66のブログ

fortran について書きます。

【ニュース】llvm の flang 方針ビデオ

“An MLIR Dialect for High-Level Optimization of Fortran

fortran66.hatenablog.com

2019 LLVM Developers' Meeting - Bay Area の一環で、30分近く話してくれています。


2019 LLVM Developers’ Meeting: E. Schweitz “An MLIR Dialect for High-Level Optimization of Fortran ”

MLIR の定義が書いていないのですが、"Multi-Level Intermediate Representation" のようです。

参考記事:

medium.com

https://llvm.org/devmtg/2019-04/slides/Keynote-ShpeismanLattner-MLIR.pdf

うむ分からん。

【乞食ニュース】Springer open access 無料本

Programming for Computations - Python

Python 3.6 ということで著者の一人の Python 2.7 本の一部改訂にもなっているようです。

link.springer.com

A Primer on Scientific Programming with Python (Texts in Computational Science and Engineering)

A Primer on Scientific Programming with Python (Texts in Computational Science and Engineering)

著者の他の無料本 www.simula.no

【メモ帳】群行列式

行列式 group determinant

Frobenius が群の指標の研究を始めたのは、Dedekind から群表の要素を  x_1 とか変数に置き換えて行列式を取ると、群の規約表現に対応する小行列の行列式の次元乗の積の形になるようだと手紙を受け取ってからとのことらしいです。

読んだだけではよく分からないので、計算機を使って二次と三次の対称群  S_2, S_3 で見てみたいと思います。

対称群

あみだくじに対応するもので、置換群とも言います。

S2

位数 2!=2 で、二個の元を持ちます。一つは単位元、もう一つは二個のものを交換する元です。

群表は

e (12)
e e (12)
(12) (12) e

となります。これを Dedekind に従って、e を x1, (12) を x2 に置き換えて

e (12)
e x1 x2
(12) x2 x1

のように書いて、変数の部分を行列と思って、行列式をとってみます。

Wolfram Language にて

S2={{x1, x2},{x2,x1}}
{{x1, x2}, {x2, x1}}
MatrixForm[S2]
Output
Det[S2]
Output
Factor[%]
Output

すると、行列式 (x1+x2), (x1-x2) の積にまとめられました。Dedekind を信じれば、二つの1次元表現に対応する行列式  (x1+x2) (x1-x2) が得られたことになります。

これは、e+(12) と e-(12) の対称表現と反対称表現にそれぞれ対応するものになっています。Young 図の記法で書けば [2], [11] に対応する規約表現に相当しています。

S3

次に調子に乗って三次の対称群でも試してみます。位数は 3!=6 で六次元の行列が出てくることになります。

群表を書くと(めんどくさいので変数 x1~x6 に置き換えた形で)、

x1 x2 x3 x4 x5 x6
e (12) (23) (13) (123) (132)
e x1 x2 x3 x4 x6 x5
(12) x2 x2 x5 x6 x4 x3
(23) x3 x6 x1 x5 x2 x4
(13) x4 x5 x6 x1 x3 x2
(123) x5 x4 x2 x3 x1 x6
(132) x6 x3 x4 x2 x5 x1

これの変数部分を 6x6 の行列とみて行列式を計算してみます。

Wolfram Language にて

S3={{x1,x2,x3,x4,x6,x5},
    {x2,x1,x5,x6,x4,x3},
    {x3,x6,x1,x5,x2,x4},
    {x4,x5,x6,x1,x3,x2},
    {x5,x4,x2,x3,x1,x6},
    {x6,x3,x4,x2,x5,x1}}
{{x1, x2, x3, x4, x6, x5}, {x2, x1, x5, x6, x4, x3}, {x3, x6, x1, x5, x2, x4}, {x4, x5, x6, x1, x3, x2}, {x5, x4, x2, x3, x1, x6}, {x6, x3, x4, x2, x5, x1}}
MatrixForm[S3]
Output
Factor[Det[S3]]
Output

この結果をみると、三次の対称群は二つの1次元表現と一つの二次元表現に分かれるようです。一次元表現の方は、(x1+x2+x3+x4+x5+x6) すなわち (e+(12)+(23)+(13)+(123)+(132) ) の全対称表現 ( [3] ) と、 (x1+x5+x6-x2-x3-x4) すなわち (e+(123)+(132) - (12) - (23) - (13) ) の反対称表現 ([111]) に書けて、もっともな気がします。一方、二次元表現 ([21]) の方は行列式が [tex:(x12 + x52 + x62 -x1x5 - x1x6 - x5x6)-(x22+x32+x42-x2x3-x2x4-x3x4)] となって、素朴には元の2*2行列の形が思い浮かびません。Frobenius は、この辺から頑張って考えたのでしょうか?

以下の記事を見ると、Dedekind は一の三乗根をつかってもう少しきれいにまとめたようですが、あまり助けにはなりません。 PDF 直リン The Origin of Representation Theory - UConn Math

Littlewood の本では The Frobenius Algebra の章でいきなり行列を書き下していますが、具体的な求め方は The Symmetric Group の章で Young の対称子を利用した方法で示されています。

The Theory of Group Characters and Matrix Representations of Groups (AMS Chelsea Publishing)

The Theory of Group Characters and Matrix Representations of Groups (AMS Chelsea Publishing)

それによれば(記号や定義をここのものに直してやると、規格化因子も適当にいれて)

1/3( e+(12)-(23)-(132) ) 1/3( (13)-(23)+(123)-(132) )
1/3( (13)-(12)+(132)-(123) ) 1/3( e-(12)+(23)-(123) )
x1+x2-x3-x6 x4-x3+x5-x6
x4-x2+x6-x5 x1-x2+x3-x5

となって、この 2*2 行列の行列式を求めると、ここでの群行列式の結果を再現します。

Wolfram language にて

Q={{x1+x2-x3-x6,  x4-x3+x5-x6}, { x4-x2+x6-x5, x1-x2+x3-x5}}
Output
MatrixForm[Q]
Output
Factor[Det[Q]]
Output

寝言

Dedekind は巡回群などでも群行列式を計算したようですが、その式を見ると佐武一郎の「線形代数学」で見たことがあるような式だったのですが、本を引っ張り出してみると確かにあって、行列式の章で文脈も無くいきなり出てきて、ヘンテコな行列式を計算し始めてうんざりさせられるばかりだったのを思い出しました。今見ると群行列式と関係するとも書いてありましたw うへw

線型代数学 (数学選書 (1))

線型代数学 (数学選書 (1))

【メモ帳】google の配列用言語 その他

DEX とかいう Haskell 風の言語

Haskell とか関数型言語だと、再帰の関係でシーケンシャルな順序集合を使いたがるので、配列というO(1)でランダムアクセス最適化可能な等質な構造の利点を生かせない気がするのですが、どうなんでしょう。

初代 FORTRAN コンパイラの開発が遅れたのは配列関係のインデックス操作の最適化に時間がかかったからでしたが。

また浮動小数点数FORTRANの実数型)だと結合則が成立しないので、桁落ちなどを考えると、単純な代数的等式変形も出来ず、最適化化や並列化には純粋性のない醜い規則が必要な気がします。

サンプル・プログラムのモンテカルロでの円周率計算やマンデルブロ集合のプログラムが見られます。

Googleの技術者、配列処理言語「Dex」を発表 - CIOニュース:CIO Magazine

元記事 www.infoworld.com

チュートリアル https://google-research.github.io/dex-lang/tutorial.html

アニメで見た! ILLIAC IV は三分割で多数決

Programming for Hybrid Multi/Manycore MPP Systems 1st Edition John Levesque, Aaron Vose

プレビューしてみたのですが、CRAY でスパコンプログラム最適化生活 50 年みたいなおじさんが面白エピソードを所々に書いています。

www.crcpress.com

§3.1 に 2001年宇宙の旅HAL9000 の元ネタと言われる(イリノイ州アーバナ・シャンペーンでつくられたとか記憶装置のイメージとか)、1960年代の夢の並列スパコン ILLIAC IV が、遅れに遅れて ’70年代に出来たもののあまりに不安定で、筐体の扉を閉めると暴走するとか、NASAでは 64 CPU 並列のところ、21 CPU づつ3分割して同じ計算を同時にやらせ、それぞれの結果を多数決でチェックしつつ利用していたとか(アニメで見たことある!)

西洋の帆船時代の格言に、「気圧計を持ってゆくなら一つか三つにしろ(二つだとどっちを信じるか迷うから)」というのがあったようですが、なかなか味わい深いw

Programming for Hybrid Multi/Manycore MPP Systems (Chapman & Hall/CRC Computational Science) (English Edition)

Programming for Hybrid Multi/Manycore MPP Systems (Chapman & Hall/CRC Computational Science) (English Edition)

amazon のプレヴューでは、§4.8 FORETRAN2003 AND INEFFICIENCIES というセクションで、Modern Fortran スタイルでの最適上の問題点が指摘されています。また C++ で可能な最適化された性能を出すことの困難性にもそちこちで触れられています。

なお ILLIAC IV の並列ソフト担当の David Kuck が OpenMP につながっています。

【新刊】Fortran 2018 本 その他

Subrata Ray ”Fortran 2018 with Parallel Programming”

印度からの Fortran 本。以前、Fortran2003 本を書いていた方かと思います。

Fortran 2018 with Parallel Programming

Fortran 2018 with Parallel Programming

A Textbook on Fortran/2003

A Textbook on Fortran/2003

CRC press 直販で買えば二割引きです。もうすぐ来るサイバーマンデーで三割引き位になるかもしれません。 ついでに、なんとかイギリスポンド暴落で安くしてほしいもの。頑張れボリス・ジョンソン!君の尊敬するチャーチルは、戦時中に自分の炭鉱で金儲けをするため炭鉱夫動員法を提出して、総スカンを食らったぞ!

www.crcpress.com

二日月

今日は西の空に細い月が出ていましたが、月齢2くらいだったようです。月齢3以下の月を見たのはしばらくぶりの様な。近頃、あんまり夕焼け空を見ていないのかも。

FortranTCP/IP いじり

Manning 本の最新章に出ています。

github.com

www.manning.com

【ニュース】Intel のクラウド?

Intel® DevCloud for Data-Centric Workloads

intel からベータのお誘いメールが来たので、よく分からないままクリックを繰り返したら、intelクラウドが使えるようになりました。AI や機械学習が主眼のようです。よく分かりません。登録後一晩すると、準備が整うようです。

devcloud.intel.com

他人と共有ながら、CPU 24個、メモリ94Gbyte 使えるようです。バッチジョブだともっと使えるのかもしれません。

なお Jupyter notebook からも、intel fortran が使えるようです。gfortran も使えます。

ifort (IFORT) 19.0.3.199 20190206 GNU Fortran (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0

f:id:fortran66:20191028003132p:plain