ToDo:
SAD stackの抽象度の低い利用例
どうやら、module functionに割り当てられるシンボルの符号化規則はGNU Fortranとは異なるようである
コンパイラ | bar function on foo module |
GNU Fortran | __foo_MOD_bar |
LLVM/flang | foo_bar_ |
従って、module functionをC側から呼び出す場合は、ISO_C_BINDINGとBIND(C)を使ってC互換ABIで関数定義するのが移植性的には正しい模様
伝統的なcommon blockのシンボル割当ては同様の模様
ごそごそ整理を実施
次は、rlist回りの配列ポインタ化か?
memory allocator更新に向けて、equivalence arrayを参照しているコードを順次array pointer参照に書き換えているが、性能が下がっているっぽい
Compiler | Function | Optics | Tracking | Matching | Overall |
flang -O3 | 0.73760 ± 0.01816 | 1.45360 ± 0.01242 | 0.55039 ± 0.01773 | 0.09693 ± 0.00106 | 0.03945 ± 0.00064 |
gfortran -O3 | 0.80652 ± 0.00745 | 1.64528 ± 0.01197 | 0.54286 ± 0.00375 | 0.10905 ± 0.00106 | 0.04313 ± 0.00030 |
Compiler | Function | Optics | Tracking | Matching | Overall |
flang -O3 | 0.81291 ± 0.01002 | 1.45929 ± 0.01368 | 0.54700 ± 0.00336 | 0.09879 ± 0.00083 | 0.04128 ± 0.00037 |
gfortran -O3 | 0.86364 ± 0.00700 | 1.65001 ± 0.01053 | 0.54365 ± 0.00445 | 0.10941 ± 0.00123 | 0.04455 ± 0.00026 |
Compiler | Function | Optics | Tracking | Matching | Overall |
flang -O3 | 1.15773 ± 0.00700 | 1.51878 ± 0.00963 | 0.55605 ± 0.00555 | 0.10194 ± 0.00110 | 0.05024 ± 0.00026 |
gfortran -O1 | 1.15793 ± 0.01206 | 1.73687 ± 0.01438 | 0.80146 ± 0.00918 | 0.11540 ± 0.00122 | 0.05521 ± 0.00050 |
gfortran -O2 -fno-strict-aliasing | 1.12681 ± 0.01155 | 1.75418 ± 0.01813 | 0.78415 ± 0.00693 | 0.11625 ± 0.00165 | 0.05448 ± 0.00046 |
gfortran -O3 -fno-strict-aliasing | 1.09313 ± 0.00945 | 1.67546 ± 0.01245 | 0.54557 ± 0.00413 | 0.11088 ± 0.00112 | 0.05032 ± 0.00035 |
rlist pointerのrange更新コードを追加したので、添字検査を有効にして試してみたが、色々あってまともに添字検査が出来ない罠
一応、typo等に伴う無効参照等のバグが何件かかかっているので、無駄ではないがすぐに修正出来ない部分のrange checkを無効化するコストが高いのが難
stack over runをrange checkerではなく、MMUを使って検出するアイデア
基本的には以下の様に、3枚のguard pageで itastk及びvstk1領域を囲む
guard page | itastk | guard page | vstk1 | guard page |
その過程で、src/track.fのバグ発見
rev.520537で入ったfiles/patch-bug1556301が、includeしているmozilla/widget/mozwayland.hが見つからない(多分、Wayland環境向けのheader)
直前のnsAppRunner.hのincludeにfor IsWaylandDisabledというコメントがあるので、なんらかのifdefが必要そうな気配が…
nsAppRunner.hを調べるとIsWaylandDisabledの定義が、ifdef MOZ_WAYLANDで囲まれているので、ifdef MOZ_WAYLANDをあちこちに書く必要があるっぽぃ
とりあえずの優先順位
カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記