Programming GPUs with Fortran
CUDA Fortran for Scientists and Engineers: Best Practices for Efficient CUDA Fortran Programming
- 作者:Ruetsch, Gregory
- 発売日: 2013/09/17
- メディア: ペーパーバック
CUDA Fortran for Scientists and Engineers: Best Practices for Efficient CUDA Fortran Programming
輿水幸子(CV TKTT)
Hey you …
— Elon Musk (@elonmusk) 2021年1月12日
Yeah you Queen …
You’re gonna make it! 💕💕 pic.twitter.com/LrqdIrbIyd
竹達彩奈 BEST LIVE "apple feuille" Blu-ray
【Blu-ray】竹達彩奈/あやち ~東京→南の島~ [販路限定]
竹達彩奈 イメージBlu-ray 「あやち ~イタリアの旅~」
Bloomberg.com
虎の巻版もあるようです。なおこの本は持ってないデスw
Introduction to Computational Economics Using Fortran: Exercise and Solutions Manual
llnl
Gaussian 社からもバンされそうw
tumblr ならあるいは・・・
The guy simply can not use the internet. : PoliticalHumor
Kill All Normies: Online Culture Wars from 4chan and Tumblr to Trump and the Alt-right
大掃除をしていたら、ゴミの中から阿部さんの絵がw 方眼紙で座標を読んでいてマメですね。
そんなわけで、年末大掃除も全然片付かずクソミソな結果に終わってしまった・・・
サポートにメールすると $12 + 送料($10~)で紙版が買えるクーポンを送ってもらえます。
I purchased an eBook from manning.com, can I upgrade to the print version?
Yes! The cost to upgrade from an eBook to a pBook is only $12 + shipping. Simply write to support@manning.com with your order number or the email you used to purchase the eBook and we will send you an upgrade code. Upgrades are only available to original customers who purchased the eBook at manning.com, and cannot be combined with other discount offers.
Modern Fortran: Building efficient parallel applications
program F2018 implicit none integer, allocatable :: m(:) m = [(i, integer:: i = 1, 10)] print *, m end program F2018
この単純な形でコンパイル時の syntax error が出る。
loop.f90(5): error #6404: This name does not have a type, and must have an explicit type. [I]
しかし、implicit none を外したり integer :: i の宣言を入れるとコンパイル通る。
program F2018 ! implicit none integer, allocatable :: m(:) m = [(i, integer:: i = 1, 10)] print *, m end program F2018
1 2 3 4 5 6 7 8 9 10
forall の時も同じことをやっているので Intel 進歩してない。多分チェックプログラムに implicit none を付けてないw implicit none の場合は integer(8) にすると変数 i はちゃんと 8 byte になるが、implicit none ; integer :: i で 4byte 変数として宣言してあると、implied do loop 中で 8byte 宣言しても 4byte 変数となって overflow するキチガイ挙動w
program F2018 ! implicit none integer(8), allocatable :: m(:) m = [(i, integer(8):: i = 10_8**10, 10_8**10 + 10)] print *, m end program F2018
10000000000 10000000001 10000000002 10000000003 10000000004 10000000005 10000000006 10000000007 10000000008 10000000009 10000000010
program F2018 ! implicit none integer :: i integer(8), allocatable :: m(:) m = [(i, integer(8):: i = 10_8**10, 10_8**10 + 10)] print *, m end program F2018
1410065408 1410065409 1410065410 1410065411 1410065412 1410065413 1410065414 1410065415 1410065416 1410065417 1410065418
大室家4巻 特装版の付録はみさきち話で私的にイマイチ。小学生世代では、こころちゃんが好き。
なお公式略語も OMRK と先頭の母音以外は母音を抜いて子音を並べる FORTRAN の変数名づけのようで好ましい。
先生たちの方は、まだこれからか・・・
Fortran 2018 とは関係なくて Fortran 2003 水準での話ですが、implied do loop そのままだと loop 変数の値が残るのに、これを配列構成子の中に置くと、loop 変数の終了値が残らないという不思議。gfortran でもそうなっているので規格上の挙動なのでしょうか・・・?規格を調べる気力が起きないです。
(配列構成子を (/.../) にすれば Fortran90 水準の話の気もします。そのうち調べたいです。)
[補足 R5.6.6] MFE 赤本 §23.9 に array constructor と data 文中の implied do loop は limited scope を持つが、入出力文中の implied do loop はそうではないと書いてありました。
program Hello i = 99 print *, i print *, (i, i = 1, 10) print *, i i = 99 print *, i print *, [(i, i = 1, 10)] print *, i end program Hello
一個目は loop を抜けた後で i=11 になっているのに、二個目は loop を抜けても loop に入る前の値の i=99 を保っている。
$main 99 1 2 3 4 5 6 7 8 9 10 11 99 1 2 3 4 5 6 7 8 9 10 99
Fortran 90 で配列 reduction 関数として、sum(), product() 等が与えられましたが、Fortran 2018 規格ではユーザー定義の reduction 演算を行う reduce 汎関数が導入されました。ここで配列 reduction とは演算の結果として、配列の次元 rank が減るような演算を行う操作を指します。
引数としては、被演算配列と結合則を満たす pure な2項演算関数を取ります。reduce 汎関数と書いてみたのは、関数を引数として取って数値を返り値として返すからです。(まぁ Fortran 文法上は、関数と書いてもばちは当たらないと思います。)
なお、ここでいう結合則は数学的な形式上の結合則で、浮動小数点数では厳密にいえば実数で成り立つ様々な結合則が成り立たたないわけですが、それは気にしなくていいそうです。
最近無料化された intel fortran が Fortran 2018 に完全準拠したと嘯いているので、以下で試してみます。
一例として積の modulo 演算を取るものを以下に示します。modulo 演算は最後に一回だけ余りをとっても、途中で演算ごとに余りをとっても結果は変わらないはずですが、積の途中で overflow すると困るので積を取るごとに余りを取りたいことがあります。reduce 汎関数を使うと、これを簡潔に書けます。
規格では pure 関数は module (大域)変数に依存しても良いです。ただし、演算中にその module 変数が書き換えられてはならない条件付きで。
module test_m implicit none real :: r = 60.0 contains pure real function f(a, b) result(res) real, intent(in) :: a, b res = mod(a * b, r) end function f end module test_m program F2018 use test_m implicit none print *, reduce([9999.,1213.,33333.], f) !Fortran 2018 print *, mod(mod(9999. * 1213., 60.0) * 3333., 60.0) print *, mod(product([9999.,1213.,33333.]), 60.0) stop 999, quiet = .true. !Fortran 2018 end program F2018
三番目の結果が一致しないのは、単精度仮数部が overflow して下の方の桁が切り捨てられたためだと思います。 想定通りの結果が得られたのではないかと思います。
51.00000 51.00000 36.00000
Fortran 2018 with Parallel Programming (English Edition)
本邦発の Coarray Fortran とも共存できるコンパイラ・ディレクティブ型の言語拡張です。
HPF の流れを汲むものではないかと思います。
XcalableMP PGAS Programming Language: From Programming Model to Applications
今日は至点の一つ冬至で太陽復活の日と思うとエクスタシーを感じます。
夕空には木星と土星が大接近して輝いていました。キリストが生まれた頃も木星と土星が大接近していた説がありますが、今日もどこか西方の馬小屋で救い主が誕生か。
日出処の天子 完全版 1 (MFコミックス ダ・ヴィンチシリーズ)
日出処の天子 完全版 2 (MFコミックス ダ・ヴィンチシリーズ)
武内義雄の「論語之研究」は岩波書店刊だけれども、戦後版も支那の語を残しています。
郷党篇最後の「山梁雌雉云々かんぬん」の章は、意味不明でわけわかめな章ですが、私はあらかた竹簡の最後の方がちぎれて適当に余ったものをくっつけたのではないかと思っていました。皇侃の論語義疏によると孔家壁中から出た古文にはこの章が無かったということらしいので、まぁもっともな気がします。(110頁、248頁)
昔は漫画や雑誌を読みまわしたりしていると前や後ろの方がちぎれて、話が途中から始まって結末も分からんということがよくありましたが、竹簡もちぎれていいのではないかと思いますw