Skip to content

Commit db4aeb8

Browse files
docs: split estimation guides by developer role [skip-ci]
1 parent 7074b31 commit db4aeb8

5 files changed

Lines changed: 505 additions & 255 deletions

File tree

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ BenchKit は、CX基盤を構成する中核ソフトウェアであり、継続
55

66
**📋 新しいアプリケーションの追加方法**: [add-app.md](docs/guides/add-app.md) を参照してください。
77
**🏢 新しい拠点の追加方法**: [add-site.md](docs/guides/add-site.md) を参照してください。
8-
**📊 性能推定支援機能**: [estimation.md](docs/guides/estimation.md) を参照してください。
8+
**📊 性能推定支援機能**: [add-estimation.md](docs/guides/add-estimation.md) を参照してください。
99
**📚 CX上位仕様**: [CXフレームワーク仕様](docs/cx/CX_FRAMEWORK.md), [CX基盤仕様](docs/cx/CX_PLATFORM.md), [BenchKit仕様](docs/cx/BENCHKIT_SPEC.md) を参照してください。
1010

1111
---
@@ -103,7 +103,7 @@ benchkit/
103103
│ └── guides/
104104
│ ├── add-app.md # アプリ追加手順(開発者向け)
105105
│ ├── add-site.md # 拠点追加手順(拠点管理者向け)
106-
│ └── estimation.md # 性能推定機能(推定開発者向け)
106+
│ └── add-estimation.md # 性能推定ガイドの入口
107107
└── README.md
108108
```
109109

@@ -234,7 +234,7 @@ python -m pytest tests/ -v
234234
- 推定対象システム(MiyabiG等)の場合、性能推定パイプラインをトリガー
235235

236236
### 4. 性能推定パイプライン
237-
ベンチマーク結果から本番規模性能、スケーリング挙動、将来システムでの性能を推定します。詳細は [estimation.md](docs/guides/estimation.md)[ESTIMATION_SPEC.md](docs/cx/ESTIMATION_SPEC.md) を参照。
237+
ベンチマーク結果から本番規模性能、スケーリング挙動、将来システムでの性能を推定します。詳細は [add-estimation.md](docs/guides/add-estimation.md)[ESTIMATION_SPEC.md](docs/cx/ESTIMATION_SPEC.md) を参照。
238238

239239
- 推定対象システム: `ESTIMATE_SYSTEMS`(job_functions.sh で定義、例: MiyabiG, RC_GH200)
240240
- `estimate.sh` がアプリ固有の推定ロジックを実装(`programs/<code>/estimate.sh`
@@ -313,7 +313,7 @@ MiyabiC,no,1,1,112,0:10:00
313313

314314
### 自動スキップ機能
315315
重いベンチマーク処理を避けるため、以下のファイルのみ変更時は自動スキップ:
316-
- `README.md`, `docs/guides/add-app.md`, `docs/guides/add-site.md`, `docs/guides/estimation.md` (ドキュメント)
316+
- `README.md`, `docs/guides/add-app.md`, `docs/guides/add-site.md`, `docs/guides/add-estimation.md` (ドキュメント)
317317
- `result_server/templates/*.html` (Webテンプレート)
318318
- `.kiro/**/*`, `.vscode/**/*` (設定ファイル)
319319

Lines changed: 219 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
1+
# 推定パッケージ追加手順(開発者向け)
2+
3+
このドキュメントは、BenchKit に新しい推定 package を追加する手順を開発者向けにまとめたものです。
4+
軽量 package、top-level package、section package のどれを作る場合でも、最初に見る実務ガイドとして使うことを想定しています。
5+
6+
## 目次
7+
8+
1. [最初に決めること](#1-最初に決めること)
9+
2. [どこに置くか](#2-どこに置くか)
10+
3. [最低限実装するもの](#3-最低限実装するもの)
11+
4. [section package の考え方](#4-section-package-の考え方)
12+
5. [fallback と not_applicable](#5-fallback-と-not_applicable)
13+
6. [やらなくてよいこと](#6-やらなくてよいこと)
14+
7. [確認ポイント](#7-確認ポイント)
15+
8. [いま何が簡単で、何がまだ重いか](#8-いま何が簡単で何がまだ重いか)
16+
17+
---
18+
19+
## 1. 最初に決めること
20+
21+
まず次を決めます。
22+
23+
- top-level package か section package か
24+
- 必要入力は何か
25+
- 不足時に fallback できるか
26+
- 何を `bench_time -> time` に変換するか
27+
- どんな assumptions / model / measurement を返すか
28+
29+
最初の package では、欲張らずに
30+
31+
- 1 種類の入力
32+
- 1 つの変換規則
33+
- 1 つの fallback policy
34+
35+
に絞るのが安全です。
36+
37+
---
38+
39+
## 2. どこに置くか
40+
41+
現時点では、主に次のどちらかに置きます。
42+
43+
- top-level package
44+
- `scripts/estimation/packages/`
45+
- section package
46+
- `scripts/estimation/section_packages/`
47+
48+
`qws` の詳細ダミーでは、
49+
50+
- top-level:
51+
`instrumented_app_sections_dummy.sh`
52+
- section:
53+
`interval_time_simple.sh`
54+
`counter_papi_detailed.sh`
55+
`trace_mpi_basic.sh`
56+
`trace_collective_logp.sh`
57+
`overlap_max_basic.sh`
58+
59+
という分け方になっています。
60+
61+
---
62+
63+
## 3. 最低限実装するもの
64+
65+
### top-level package
66+
67+
少なくとも次があると扱いやすいです。
68+
69+
- metadata
70+
- applicability 判定
71+
- run
72+
- metadata の Estimate JSON 反映
73+
74+
### section package
75+
76+
section package は、もっと小さくてかまいません。
77+
現時点では少なくとも次で十分です。
78+
79+
- metadata
80+
- applicability
81+
- transform
82+
83+
### やることのイメージ
84+
85+
- 入力が足りるか判定する
86+
- 足りれば `bench_time` などから `time` を作る
87+
- 足りなければ fallback 先を返すか `not_applicable` を返す
88+
89+
---
90+
91+
## 4. section package の考え方
92+
93+
section package は「1 区間の変換規則」と考えると分かりやすいです。
94+
95+
たとえば、
96+
97+
- `interval_time_simple`
98+
- 区間時間があれば固定比で変換
99+
- `counter_papi_detailed`
100+
- PAPI artifact があればそれを前提に変換
101+
- `trace_collective_logp`
102+
- collective 系の区間を logP 扱いで変換
103+
104+
です。
105+
106+
top-level package は、
107+
108+
- section / overlap を集約する
109+
- どの section package を呼ぶか決める
110+
- top-level applicability をまとめる
111+
112+
役割を持ちます。
113+
114+
この分離により、section package 開発者は 1 区間のルールに集中できます。
115+
116+
---
117+
118+
## 5. fallback と not_applicable
119+
120+
意味は次の通りです。
121+
122+
- `fallback`
123+
- この package 単体では要求どおり処理できない
124+
- ただし別 package へ切り替えれば継続できる
125+
- `not_applicable`
126+
- 代替手段がなく、その項目は成立しない
127+
128+
重要なのは、無理に成功っぽい値を返さないことです。
129+
130+
いまの方針では、
131+
132+
- fallback できない section / overlap は `time: null`
133+
- それを含む全体 FOM も `null`
134+
- top-level は `not_applicable`
135+
136+
となります。
137+
138+
これは後で問題切り分けしやすいので、かなり大事です。
139+
140+
---
141+
142+
## 6. やらなくてよいこと
143+
144+
package 開発者が毎回やらなくてよいことは次です。
145+
146+
- result server への保存
147+
- UUID / timestamp の採番
148+
- portal 表示
149+
- top-level Estimate JSON の全面手組み
150+
- compare UI のことを考えた表示整形
151+
152+
BenchKit 側が引き受けるべきなのは、
153+
154+
- requested / applied package の記録
155+
- top-level applicability の集約
156+
- provenance の保持
157+
- 保存後の portal 表示
158+
159+
です。
160+
161+
package 開発者は、できるだけ
162+
163+
- 必要入力
164+
- 変換規則
165+
- fallback policy
166+
167+
に集中できる形がよいです。
168+
169+
---
170+
171+
## 7. 確認ポイント
172+
173+
### 単体で見るポイント
174+
175+
- metadata が返せる
176+
- applicability が返せる
177+
- 入力不足時に理由が見える
178+
- fallback 先があるなら返せる
179+
180+
### top-level で見るポイント
181+
182+
- requested / applied package が分かれる
183+
- 一部区間だけ fallback したら `partially_applicable`
184+
- 不成立区間が残ると `not_applicable`
185+
- `null` が最終 FOM まで正しく伝播する
186+
187+
### portal で見るポイント
188+
189+
- requested package
190+
- applied package
191+
- applicability
192+
- estimate UUID
193+
194+
が最低限見える
195+
196+
---
197+
198+
## 8. いま何が簡単で、何がまだ重いか
199+
200+
### かなり簡単になっていること
201+
202+
- 最初の package を 1 本追加すること
203+
- requested / applied package を残すこと
204+
- top-level applicability を共通で持つこと
205+
- `not_applicable``null` 伝播で誠実に表現すること
206+
207+
### まだ重いこと
208+
209+
- package metadata の discovery
210+
- 複数 detailed package 間 fallback の共通化
211+
- section package のテンプレート化
212+
- portal 側の詳細表示
213+
214+
つまり現状では、
215+
216+
- package を書き始められる土台はある
217+
- 量産しやすい状態まではもう一歩
218+
219+
という整理になります。

0 commit comments

Comments
 (0)