トップ «前の日(05-18) 最新 次の日(05-20)» 追記

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|

2006-05-19

_ [お仕事]今日はさっさと帰るぜ

昨日のメンテからの立ち上げは、真空作業で遅れてOptics Correctionが 終わって寝つけたのは、28時。 結局、お家には帰れずに仮眠室で就寝 Orz

今日も、真空系のメンテで立ち上げが遅く、リングが Readyになるのは 24時らしぃ... 今日は絶対にさっさと帰るぞ

本日のツッコミ(全3件) [ツッコミを入れる]

_ Y氏 [Qの電源が故障の模様。復帰は未定 よって秋葉には行っては駄目よん (^^]

_ Y氏 [う、もしかして何かわからないけど博麗神社例大祭ってやつにいくのかな?]

_ Y氏 [基板交換で治った模様。 現在初期化中。 コレクションは小磯さんがやってくれますので、ゆっくり遊んできてね (^^]


2008-05-19

_ [雑記]また寒くなった

ここ暫く、天候に恵まれぽかぽかとした日が続いていたのだが、 寒さが戻った模様...

本日のツッコミ(全1件) [ツッコミを入れる]

_ Y.Yokose [台風の影響で大雨です@筑波周辺 こっちも急に寒くなったり暑くなったりしたせいか、風邪引いてしまった(´・ω:;.:...]


2010-05-19

_ [SAD]OpenMP化について考察

このまえ、トラッキングコードの呼び出し頻度の高いルーチンをOpenMP化した ら、性能が劣化した件について考察してみた。

まず、OpenMPが使う POSIX Threadに関してだが、 Process fork cost >> Thread fork costの関係は成立している。 しかし、NPARAモデルではビームライントラッキングにつき一回 Process forkを行う。それに対して、末端ルーチンでのOpenMP化は、 エレメント毎に Thread forkが発生する。 ここで、KEKB Latticeを想定すると QUADや DRIFTエレメントの数は 100〜1000のオーダー存在する。 したがって、Thread fork costが 1000倍以上安くないとペイしないという 結論にたどり着く。

したがって、OpenMP化する場合は、

  • ドライバー側で Thread forkする
  • エレメントサブルーチン側で、omp doな並列化を行う

必要がある。 また、トラッキングルーチンが呼び出す関数には、再突入可能であることが 求められる。相互作用計算や統計処理の前には、Thread間同期が必要(nowait 並列化の場合)となり、統計処理は reduction演算で実装する必要がある。 注意が必要なのは、アパーチャー処理に伴う、粒子分布入れ替えは、 Thread間同期と排他制御が必要。

書き換え範囲は、かなり広いと思われる。 やはり、branchを作って作業か?


2020-05-19

_ [FreeBSD]最近のports-current

Python3への移行とImageMagick7への移行が始まっているが色々問題あり

  • editor/emacs
    • ImageMagick7へ移行したが、MAGICKオプション付きでも /usr/local/bin/emacs にlibMagick系がリンクされていない
    • 少なくともImageMagick6時代はリンクされていた
    • emacs側のconfigureがうまく行っていない?
  • graphics/inkscape
    • ImageMagkck6からGraphicsMagickへの切り替えで、上記のeditor/emacsとの競合は解消した
    • print/transfigに依存している
    • graphics/xfigなどはtransfigの後継?のprint/fig2devに依存先が切り替わっており、競合する
    • 試しに、RUN_DEPENDをprint/fig2devにしてビルドすると一部のSVGファイルの生成に失敗してpackageが作れない

手持ち環境の実行環境のPython2依存性の残りは...

  • devel/mercurial
  • devel/py-subversion
    • devel/viewvc
    • devel/cvs2svn

2021-05-19

_ [SAD]sort再実装の残作業

次に作るもの

  • sort済みlist containerへの1要素挿入 tfinsertsort
    • 挿入元と出力がlist containerなのでインタプリタヒープ断片化の原因となり得るが、それを変更するには構築途上のreference container型を導入する必要がある
    • ソースコンテナ内のNull[...]要素を展開する機能がある
      • テンポラリコンテナへのシーケンス展開エンジンが必要
  • 整数配列へのインデックスソート tfsorti (tfsortsymbolstk実装用)(r6179にて実装 2021.05.20)
  • 実数配列へのインデックスソート spsort (spkick実装用)(r6182にて実装 2021.05.20)
  • Intersection/Complementの再実装
    • 現行実装には問題点あり
      • 3要素以上は、再帰呼び出しにて実装している (スタック消費)
      • Intersectionに関しては、サイズ最小のリストを種にすべき
      • 積集合・和集合の抽出に使う整列済みリストは、union_listで得られるリストコンテナを使っている (SADインタプリタヒープを消費・断片化している)
        • 再帰呼び出しでは、一時割り当てしたリストコンテナを再帰的に生産するので、ワーストケースのインタプリタヒープ消費は、種リストの長さNに対して $O(N^2)$ (再帰毎にリストが短くなるケースが最悪)
      • Intersection/Complementどちらの場合も、出力候補となるリストの長さは単調現象となるので、一時領域の再割り当てを行う必要は無い

性能に関しては、オリジナル実装では実数リスト等のケースで比較ルーチンがソートエンジン内に展開されているのに対して、qsort(3)等では関数呼び出しが必須となる点は不利だが、実数リストコンテナではインデックスソートではなく、出力配列を直接スワップすることで間接参照コストを低減する最適化を行ったため、N = 2^24でのテストでは、整列・逆整列・準整列・ランダムの各パターンで、オリジナル実装よりも概ね良好な性能が得られている

ISO C++がテンプレート版sortがつかえれば、比較ルーチンのinline展開により更なる改善が得られると思われる


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