トップ «前の日記(2008-05-06) 最新 次の日記(2008-05-09)» 編集

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|

2008-05-06 [長年日記]

_ [SAD]NPARA出力問題

追いかけ回せした結果だが、NPARA>1で並列処理に入るために fork(2)する際にFortran側の Output Bufferが Dirtyな場合、 fork(2)後の子プロセス側でも Bufferの書き出しが発生しているのが 原因の模様。子プロセス側では、write文は実行されないのだが 並列処理を合流させるために子プロセスがSTOPする際に Dirty Bufferが出力されているのかな?

対処法としては、fork(2)前に全ての Dirty Bufferを フラッシュすれば良いわけだが...効率的で移植性のある方法が有りません!

Fortran2003から実装された flush文は装置番号が必要だし、 引数なしで全てのI/Oをフラッシュするflushサブルーチンは ベンダ拡張なので存在が保証されない。また、新しいFortran規格では ストリームと接続可能な装置番号は0〜2^31-1までの整数に 拡張されているので、inquire文ですべて調べるコストは 極めて高いと思われる。

コード内のopen文に渡される装置番号をモニターして 最大値を割り出す必要があるか? ただし、open文を使わずにwrite文へ未接続の装置番号を 渡して、デフォルトのファイル名で出力しているコードが有るとNG。 write文の装置番号も追跡しないといけないのか...Orz

_ [SAD]GCC 4.2.xサポートはダメっぽい

Fortran規格的に NGなコードのうち、標準規格で再実装可能な部分を 書き換える作業をしているのだが...GCC 4.2.xの Fortran2003サポートは ISO_C_BINDING Intrinsic Moduleが無いようです。 ということで、amorita branchでの GCC 4.2.xサポートは終了かな...

数学関数回りを考えると Fortran2008を使いたい(ガンマ関数とか ベッセル関数が標準入りしている)が、開発版の GCC 4.4で無いと 実装されていない罠


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