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

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-04-02 [長年日記]

_ [雑記]USERS SIDEが本店を店じまい

だそうです。

通販や法人営業は残るそうなので、ぷらっとホームと同様に 利益率の下がった店頭販売から撤退ということのようです。

これで、秋葉原からTyanとかSupermicroの現物を見られる店が死滅か...

割高だけど、ECC付きメモリーが確実に在庫しているとか、SMPや RAID5/6等の システムに対する技術情報の蓄積も多く、新しいシステム組む際に相談するには、 良い所だったのですが、これも時代の流れですかね... (コンピュータがコモディティ化しすぎた)

_ [雑記]KEKBではお花見らしぃ

なんか日本では宴会やってるらしいです 宴会は明日らしい(2008/04/03 15:45 +0200修正)

_ [SAD]GCC 3.4.6 EoS宣言

GCC 4.3.0がリリースされ、GCC4系列の開発は 4.4へ移行したことですし... amorita branchでは Revision 1700をもって、 GCC 3.4.6End of Supportを宣言します。

別にconfig/GCC.specから GCC 3.4.6向けのコードを 削除するわけでは有りませんが、何も指定がない場合は ビルドフレームワークはGCC 4.3.0を想定します。 また、amorita branchでのBuild Testの対象から GCC 3.4.6が外れます。

_ [SAD]CVS MAIN trunkへタグ打ち

1.0.10.2.4b以降のバックポートがだいぶ溜まったので、 切りの良いところでCVS MAIN trunkのバージョンを 1.0.10.2.5aへバンプしてSAD_1_0_10_2_5aタグを 打ち込みました。

現在バックポート待ちのパッチ類

  1. 古いsrc/bison.simple.f系コードの削除(1497)
  2. 標準のitopenbufの変更(1500)
  3. 実数トークン化ルールの変更(1658)
  4. 数学/物理定数の整理と物理定数更新(1627...1691)
  5. extensions/Standard/SpaceCharge/Scheffバックポート(1569/1595/1613/1695)
  • (1)は、新しいパーサーで問題がでなければ実行するだけ...(今のところ障害報告は無いが...)
  • (2)は、ptyを使用するので、仮想端末まわりが原因と思われる障害が出ている MacOSX上での運転に懸念材料あり
  • (3),(4)は、動作が変わるので要注意
  • (5)は、需要が有るかどうかが疑問(SAD掲示板でも反応なしだし)

_ [SAD]SADに関するタスクリスト(妄想も含む)

コードの保守課題

  • コンパイラによる未初期化変数参照警告の根絶(gfortran 4.3.1にて、現在 214個)
    • 多くは、コンパイラの誤検出
      • 代入と参照が別ブロックかつ、ブロックへの突入条件が整合しているケースなど
    • ただし、真性の未初期化変数参照のケースも発見された
      • おそらく、自動変数がスタック上のガベージを参照してたまたま動いている
      • あくまでも環境依存の偶然で動いているだけなので、修正が望まれる
    • 原因を考慮せずに単純に0等で初期化する修正では、本質的なプログラムミスがある場合、それを見過ごす恐れが有るので、一つ一つ丹念に調査・修正する必要がある
  • コモンブロック定義の不整合の解消(ftnchekにて、現在 15 Common block)
    • 変数名・変数型・コモンブロックサイズの不一致が存在する
    • 使われているコモンブロック変数名の不一致は、大域的なプログラムの可読性を下げるので可能なものは修正すべき
    • 多次元配列の配列形状の不一致は意図的に行われてる場合があるが、可能ならば単一の定義を採用した方が可読性は向上すると思われる
    • コモンブロックサイズの不一致は、絶対に修正すべきもの
      • ブロックサイズの小さな定義が、コピー&ペーストされ、さらに独自に拡張された際に何が起こるかが分からない
    • 参照の多いコモンブロックは、定義をsrc/incへ移動すべし

基本的には、一件一件コードを精読して修正を繰り返す作業。 新規のコードマージ時に査読をきちんと行えれば、 既存コードの修正は地道にやれば確実に終わる。

新規開発課題

  • Beam Line Element定義の動的組み込み
    • SAD Workshop 2006からの宿題
    • 実装に必要な予備調査は完了(ドライバルーチン側とシンボルテーブル)
      • エレメント名の登録APIの実装
      • パラメータキーワードの登録APIの実装
      • パラメータテーブル初期化ルーチンの登録APIの実装(src/tpara.fから呼ばれる)
      • 実装ルーチン(GEO,TWISS,TRACK,EMITの4種類)の登録APIの実装
      • 実装ルーチンの呼び出しAPIの定義と実装(MAPの実装src/temap.fをモデルにする)
      • src/nalign.f等のパラメータテーブル操作への対応(アクセスAPIの標準化とマジックナンバーの追放)
      • 登録API系は、Cのみのサポートで充分だよね?

参照例が実在し、実装の方向性は固まっているので、 APIを定義してコードを書くだけ。 ただし、需要動向は不明(SAD Workshop 2006以降、問い合わせは無い)

関連作業として、src/inc/TMACRO1.incのC側からの参照手段の整備も必要。 (Cで、組み込みルーチンを記述する場合)

  • SpaceChargeルーチンの動的組み込み
    • SpaceChargeルーチンのテストや新規導入の障壁が下がることが期待される
    • 保守されなくなったエンジンを簡単に取り外せるようになる
    • 組み込みのためのホックをどこに仕込むか検討する必要あり
      • GEOへの組み込みは不要
      • TRACKへの組み込みは、WSPAC/PSPACで実例あり(同一の粒度であれば、実装は容易)
      • TRACKへのSub-Elementレベルでの組み込みには、Beam Line Element毎のTRACKルーチンに Sub-Divisionとそれに伴うホックを仕込む必要あり(要検討)
      • TWISS,EMITへの組み込みは、WSPACで実例あり(ただし、インターフェースは要検討)

内容的には、Beam Line Element定義の動的組み込みに近いが ドライバーフレームワーク側に新規にホックを仕込むので 設計に際して注意が必要

長期的な保守を考えれば、これ以上 SPAC系ルーチンが増える前に実装すべき案件

  • TRACK等で使われてる fork(2)による並列処理の改善と置き換え
    • Multi Core環境が標準になりつつあるエンドユーザー環境でのTRACK性能の改善と CPU資源の有効活用
    • frok(2)コストと Shared Memoryの制限を避けるために、POSIX Threadモデルを導入すべき時期では?
      • PC UNIXの POSIX Thread実装は十分安定してきた&SMPでは16CPU程度までは性能がスケールするようになってきている
    • 同期バリアの導入等も合わせて行い ExternalMap/RADLIGHT等と組み合わせた並列実行をサポートするメリットは有るはず

最近の PC事情では、4 Core/8 Coreの Workstationが導入されることも 多いく、動作クロックの上昇が停滞している状況から並列実行性能は ターンアラウンドタイム短縮に重要。

中長期的課題

  • Fortran I/Oの置き換え
    • Fortran規格レベルでは、SADScript側の要求するI/O粒度に適切な実装が保証されていない
      • Fortran実装によっては、CR+LF -> LFの自動変換が行われる(Binary I/Oが保証できない)
      • Fortran実装が I/O Bufferingを行う場合、Network/Pipe等で Non-blocking I/Oを実装できない
    • LUNからの文字入力・行入力は、ラッパールーチンが経由になっている
    • LUNへの出力は、MAINレベルを中心に WRITE文が多数現存
    • FSEEKの使用は局所的なので、問題にはならない
  • 64bit化
    • 32bit互換モードを備えるプロセッサも64bitモードの方が数値計算は早い
    • PSPAC等のPiC系コードと組み合わせる場合、32bitではメモリー空間がたらない
      • amsadaでは、J-PARC MRの Space Chargeシミュレーションで 2GBの sad1.exeが走っている
    • 内部データ構造は文書化されていないので、64bit化作業もしくは文書化作業は生き字引がいるうちに行わないと、その後の作業が古文書の解読作業となってしまうおそれ
  • 野菜(Yet Another SAD Interpreter)作り
    • LR(1)生成文法による構文解析器の再構築
    • 構文解析(構文木の生成)と意味解析(構文木の実行eval)を分離する
      • 構文レベルの修正の容易化
      • eval時に構文検査が不要になる(コードの簡略化)
      • 保守の簡略化に伴い、改良が容易になる?(構文木レベルでの最適化やJITの導入とか)
本日のツッコミ(全5件) [ツッコミを入れる]
_ Y氏 (2008-04-03 08:07)

これでますます秋葉から足が遠のいてしまうなぁ(泣)

_ Y氏 (2008-04-03 10:25)

ちなみに、明日は花見です (^^

_ wallaroo (2008-04-03 14:10)

覚えてるかわからんけど久々に。<br><br>ゆーざーずは実物見に行ける(&相談できる)唯一のショップだっただけに閉店は残念。<br>今日からセールやってるみたいだけど、めぼしい物は品切れだろうな〜

_ A. Morita (2008-04-03 14:47)

うわ、めちゃめちゃお久しぶりです>wallaroo<br><br>事前に歳末セールもやっていたらしいですからねぇ

_ wallaroo@Y.Yokose (2008-04-04 14:47)

今日行って来たよ〜。<br><br>CPU関連は10%OFFで微妙。40or60%OFFは元々安いマウスとRAID板、FANと細かいパーツ類。<br><br>水冷関係は取り扱い終了らしくて70%OFF。<br>ショーケースに余ってたinnovaの水枕2個お買いあげで3k円也。


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