トップ «前の日記(2021-08-11) 最新 次の日記(2021-08-24)» 編集

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|

2021-08-18 [長年日記]

_ [SAD]Map1/Scan1実装

Joinに続き、Map1/Scan1の実装完了

で、データ操作系の典型的なユースケースを試していると以下のケースで、スタックを踏み抜く

  • MapThread[f, {long-list, long-list}]
    • Map[f@@#&, Thread[{long-list, long-list}]]はOK
    • 多分、Threadは、いきなりリストコンテナを組み立てているからOKの模様
    • ScanThreadはテストしていないが、おそらくスタックに積み上げた出力列が溢れている
  • f@@long-list (fは、Reduction operator)
    • fの評価式をApplyで組み立てる際に、引数列としてlong-listをスタック上に展開する(式をスタック上に展開して評価する関数評価呼び出しシステム上の問題)
    • Applyが、fがReduction演算であることを知っていれば、イテレータ処理に移譲できるが、ユーザー定義のReduction演算子には無力
      • 評価器のスタックベースの評価を止める or sequence containerによる式評価を導入する
        • 関数評価時の引数参照インターフェースの変更が必要
          • Apply等からの運用を想定すると、Head + Argument Containter渡しが現実解か?
        • 実装過渡期は、引数列参照渡しとStack渡しの両方をサポートする必要有り
          • 関数テーブルに引数型式属性を持たせて、評価時の呼び出しプロトタイプをDispatchさせる
      • Reduction演算を行う高階関数を導入する
        • 例えば、左再帰なReduction演算 LeftReduce[f, {arg1, arg2, args...}] := LeftReduce[f, {f[arg1, arg2], args...}] := f[f[...f[f[arg1, arg2], arg3]...], argn]
          • LeftReduce[f, {}] := f[], LeftReduce[f, {arg1}] := f[arg1] == f[f[], arg1] であるべきか…
        • 浮動小数点処理の場合、評価木の組み方で処理結果が異なる
        • 短縮評価可能な論理演算の場合、評価木の組み方で処理時間が異なる
        • n要素に分岐する再帰的な評価木もありえる

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