fortran66のブログ

fortran について書きます。

【ニュース】Fortran 久しぶりの Tiobe 20位圏入りw

TIOBE Index for March 2023

調子のいい時だけ記事にするw

www.tiobe.com

そもそも指数関数的に減少する分布をしていて、線形順序のランキングを付けるのはセンスがない。

【寝言】学士会報 No.959 2023-II その他

今号の面白 49頁

昭和40年代の丹下健三

建築意匠という授業の担当であった丹下氏は半期の間に一度だけ登場したが、雑誌に掲載された自らの原稿を棒読みしただけであった。グリーンのタータンチェックのジャケットに蝶ネクタイ、パンタロンと先のとがった靴を履いたファッションだけが今も脳裏に焼き付いている。

追記: 今号ではカビ(麹)とダニを研究している人の記事が続けて載っていて、どちらも面白かった。日本および沖縄の麹は DNA 解析によって支那・東亜・南亜とは異なる独自のものである事が示されて、国菌になっているようで喜ばしくもめでたいことです。一方、日本朱鷺の羽に住んでいたダニも固有種だったのが朱鷺の絶滅とともにまた絶滅したとのことで悲しみに涙が止まりません。

chatGPT

質問1

 Modern Fortran を日本語 Rap で教えて Yo! 韻も踏んでYo!
Yo! Yo! Yo!
Modern Fortranのこと、Rapで説明するよ!
数値計算に強い言語で、高速化もバッチリ
構文もシンプルで、使いやすいってのが特徴的

配列を使うと、繰り返し処理も簡単にできるぜ
サブルーチンやモジュールも使えて、再利用もバッチリ
そして、並列化もできるので、大規模計算も怖くない

Fortran90からは、オブジェクト指向にも対応してる
型変換や演算子のオーバーロードも、余裕でできる
データベースとの連携も可能で、便利なんだぜ

そんなModern Fortran、まだ使ったことない人は
ぜひ使ってみて欲しいぜ!
数値計算で困ったとき、強い味方になってくれること間違いなし!
Yo!

質問2

高飛車お嬢様風に Modern Fortran について教えて下さい
ふふふ、いいですわね、Modern Fortranについて教えて差し上げましょう。

Modern Fortranは、高貴なる数値計算のために生まれた、素晴らしいプログラミング言語ですわ。古き良きFortranから進化し、より効率的で簡潔な文法が特徴となっておりますわ。

Fortranは古くから科学技術分野で広く使われてきましたが、Modern Fortranは、オブジェクト指向やジェネリックプログラミング、並列処理にも対応しており、更に高度な計算に対応することができますわ。

また、配列やモジュールを使った再利用性の高いプログラムの作成や、データベースとの連携など、幅広い用途に利用されておりますわ。

我々お嬢様たちが使用する際にも、そのエレガントな文法と高速な処理速度は、大変心強い味方となってくれることでしょうわ。ぜひ一度、Modern Fortranを手に取って、その優雅さと実力を体験してみてはいかがでしょうか。

【メモ帳】SONY デジタルペーパー DPT-RP1 を外部モニターに

SpaceDesk で SONY DPT-RP1 を Windows 外部モニターに

以前 SONY DPT-RP1 で Andoroid 5.1 が動かせるということを紹介しました。 fortran66.hatenablog.com

今日ネットニュース記事で Android 4 以降で利用可能な SpaceDesk というソフトが紹介されておりましたので、早速試してみました。特に問題も無く Apk ファイルがインストール出来て、すぐに動作しました。

pc.watch.impress.co.jp www.spacedesk.net

これによって、電子ペーパーをモニターにすることが出来ましたが、一般用途ではあまり実用性はない感じです。タッチ端末になりますがペン書きは遅延がひどいです。カーソルのブリンクなども周囲が丸ごとリフレッシュされるため見にくいです。

ただ電子書籍を PC ソフトで見る分には、わりと問題ありません。スワイプでページめくりなどもできます。静止画に近い表示をさせる分には WiFi 無線接続だし、軽くて持ち運び可能でタッチ操作もできるので、狭い用途では意外に行けるかもしれません?

メモ帳

D:\work\platform-tools>adb devices
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached
844301001007889 device


D:\work\platform-tools>adb install -r "spacedesk - display monitor_0.91.4_Apkpure.apk"
Performing Push Install
spacedesk - display monitor_0.91.4_Apkpure.apk: 1 file pushed, 0 skipped. 115.0 MB/s (2758568 bytes in 0.023s)
        pkg: /data/local/tmp/spacedesk - display monitor_0.91.4_Apkpure.apk
Success

追記

色反転等パフォーマンスが落ちると書いてあるものを選ぶと、本来のデジタルペーパーのペン書きの反応が悪くなるので注意が必要です。

金星と木星が接近中

夕方の空に明るい星が二つ並んでいました。

昨日の記事ですが。 tenki.jp

【メモ帳】LFortran generics 例増える

LFortran

例としていくつか上がっています。

do concurrent

よく見てませんが、実行速度的に C++ と変わりない結果が出ているようです。

【ララベル速報】flang の近況 ARM から

ARM flang progress update

llvm に入れてもらうまでは威勢が良かった flang ですが、その後はちんたらやってるようです。f95 対応すら終わってないようです。

https://www.phoronix.net/image.php?id=2023&image=fosdem_flang_1

ARM の講演のスライド(記事の最後にリンクあり)が出ているようです。講演動画はまだのようですが、いずれ上がるものと思われます。

www.phoronix.com

【メモ帳】Intel webinar llvm backend の fortran cmpiler ifx について

次世代 llvm backend の ifx コンパイラ

the The Next Chapter for Intel® Fortran Compiler

上記タイトルで検索してください。

登録すると見られます。スライドも落とせます。

今までの ifx の話と同じような話題ですが、より詳しい内容です。 OpenMP による GPU への offload についてが多かった気がします。

フロントエンドは共通なので、基本的に ifort で動いていたソースコードはそのまま動くようですが、コンパイラのオプションがすっかり変わっているのが注意点のようです。Fortran 2018 完全対応を謳っています。

【メモ帳】単位行列を一行で生成 その2

単位行列一行生成

干支が回るくらい前に、単位行列を一行で生成してみましたが、Fortran 文法もこちらの理解も進んだので新たな生成を試みます。

fortran66.hatenablog.com

プログラム

前回の reshape によるものより、二次元の構造を素直に反映して分かりやすいと思います。merge 関数はスカラー値にも使え、三項演算子の代用になります。

fortran 2008 では、forall 構文内で局所変数を宣言できるようになりました。これは一般に fortran の整数の default 長が 4 byte 符号付整数であることが多くて 2 G で overflow するのに対して、昨今のメモリ増強によって配列サイズが 2G を超えることがままあるので、integer(int64) などで局所変数を宣言して乗り切りなさいという親心から出たもののようです。(ただしここでは default の int32 で宣言しています。また普通に i, j を宣言すれば Fortran 95 の範囲に収まります。)

    program unitmat
        implicit none
        integer :: m(8, 8)
        forall(integer::i = 1:8, j = 1:8) m(i, j) = merge(1, 0, i == j)
        print '(8i2)', transpose(m)
    end program unitmat
 1 0 0 0 0 0 0 0
 0 1 0 0 0 0 0 0
 0 0 1 0 0 0 0 0
 0 0 0 1 0 0 0 0
 0 0 0 0 1 0 0 0
 0 0 0 0 0 1 0 0
 0 0 0 0 0 0 1 0
 0 0 0 0 0 0 0 1

配列構成子による方法

昔の記事では配列構成子をテストしていたので、その方法でもやってみます。この場合ループ変数の i, j をあらかじめ宣言しておかねばなりませんが、allocatable 配列の自動 allocation が可能になります。

    program unitmat
        implicit none
        integer, allocatable :: m(:, :)
        integer :: i, j
        
        m = reshape([((merge(1, 0, i == j), j = 1, 8), i = 1, 8)], [8, 8])
        print '(8i2)', transpose(m)
    end program unitmat

学士会報 第958号

皇侃の論語義疏に、孔子の娘婿の公冶長が鳥語を解するゆえに鳥情報から死体のありかを当てて殺人犯扱いされ牢屋に入れられる話が出てきますが、学士会報の付録にシジュウカラの言葉を解して単語と文法を研究している人が出て来て面白かったです。公冶長はスズメの乞食速報「米俵を積んだ牛車がひっくり返って米食い放題の件」を聞いて笑ったことから無実が証明されて許されますが、今の支那人も事故でひっくり返った車から村人総出で積荷を盗んだりするので、進歩の無さにこっちも笑いがこぼれます。