トップ «前の日記(2019-12-04) 最新 次の日記(2019-12-06)» 編集

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2019-12-05 [長年日記]

_ [SAD]module function on LLVM/flang

どうやら、module functionに割り当てられるシンボルの符号化規則はGNU Fortranとは異なるようである

コンパイラbar function on foo module
GNU Fortran__foo_MOD_bar
LLVM/flangfoo_bar_

従って、module functionをC側から呼び出す場合は、ISO_C_BINDINGとBIND(C)を使ってC互換ABIで関数定義するのが移植性的には正しい模様

伝統的なcommon blockのシンボル割当ては同様の模様

_ [SAD]tfsortlの書き直し

  • 並べ替えるリストを配列渡しで受け取りたいので、C側で再実装する
    • エンジン部は、標準ライブラリを使う qsort(3) とか mergesort(3)とか
    • ドライバ部は標準化出来る
    • 比較関数に並べ替えるべきリストの情報を渡さねば成らない
      • 同時に走らないなら、SAD stack上にポインタを置く
      • 別解として、*sort_b(3)でblocks内の定数としてポインタを渡す
      • blocks拡張が有効な場合、__BLOCKS__マクロが定義される
      • 類似の機能に、GCCのNested Function拡張がある
        • 関数スコープ内で定義された関数を関数ポインタ扱いで渡せる(ただし、定義スコープ外では保証が無い)
    • ad/avのみのリストのSortに関しては、duplicate済みのad/av配列要素のswapで実装可能になるので、間接参照の分だけ最適化出来る
  • CanonicalOrderの実装で、NaNの順序を明確にする必要がある
    • また、内部表現の異なるNaN間の順序はどうするか?
      • 同一元とみなす or 内部表現で順序を付ける(isnan + integer-castが必要)

カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記