Skip to content

Commit dbdbc04

Browse files
Update README.md and ADD_APP.md to reflect recent changes
[skip-ci] - Update template descriptions (tab navigation, filter/compare in table header) - Add _filter_dropdowns.html to template list - Update test count 95 -> 102 - Add record_timestamp.sh, collect_timing.sh to scripts section - Note wait_for_nfs.sh is commented out - Document TOTP_ISSUER environment variable - Add pipeline_timing and run.sh 4-argument description - Add Proc/node, Thread/proc columns and table column list - Update run.sh template with numproc_node/nthreads args - Add nthreads to result format fields - Add print_results() function pattern as recommended approach - Update app_dev.py description (stub modules)
1 parent a551be8 commit dbdbc04

File tree

2 files changed

+54
-14
lines changed

2 files changed

+54
-14
lines changed

ADD_APP.md

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,9 @@ cp qws/qws_main_executable artifacts/
177177
set -e
178178
system="$1"
179179
nodes="$2"
180+
numproc_node="$3"
181+
nthreads="$4"
182+
export OMP_NUM_THREADS=$nthreads
180183

181184
mkdir -p results && > results/result
182185

@@ -194,20 +197,20 @@ case "$system" in
194197
mpiexec -n $((nodes * numproc_node)) ./main [args] > output
195198
# 結果解析
196199
FOM=$(grep "performance" output | awk '{print $2}')
197-
echo "FOM:$FOM FOM_version:v1.0 Exp:test node_count:$nodes" >> ../results/result
200+
echo "FOM:$FOM FOM_version:v1.0 Exp:test node_count:$nodes numproc_node:$numproc_node nthreads:$nthreads" >> ../results/result
198201
;;
199202
FugakuLN)
200203
# ログインノードでのテスト実行
201204
export OMP_NUM_THREADS=12
202205
./main [args] > output
203206
FOM=$(grep "performance" output | awk '{print $2}')
204-
echo "FOM:$FOM FOM_version:v1.0 Exp:test node_count:$nodes" >> ../results/result
207+
echo "FOM:$FOM FOM_version:v1.0 Exp:test node_count:$nodes numproc_node:$numproc_node nthreads:$nthreads" >> ../results/result
205208
;;
206209
MiyabiG|MiyabiC)
207210
# MPI実行(Miyabi)
208211
mpirun -n $((nodes * numproc_node)) ./main [args] > output
209212
FOM=$(grep "performance" output | awk '{print $2}')
210-
echo "FOM:$FOM FOM_version:v1.0 Exp:test node_count:$nodes" >> ../results/result
213+
echo "FOM:$FOM FOM_version:v1.0 Exp:test node_count:$nodes numproc_node:$numproc_node nthreads:$nthreads" >> ../results/result
211214
;;
212215
*)
213216
echo "Unknown system: $system"
@@ -223,7 +226,7 @@ sync
223226
### 結果フォーマット
224227
`results/result` の各行は以下の形式:
225228
```
226-
FOM:5.752 FOM_version:DDSolverJacobi Exp:CASE0 node_count:1 numproc_node:4
229+
FOM:5.752 FOM_version:DDSolverJacobi Exp:CASE0 node_count:1 numproc_node:4 nthreads:12
227230
SECTION:compute_kernel time:0.30
228231
SECTION:communication time:0.20
229232
OVERLAP:compute_kernel,communication time:0.05
@@ -237,12 +240,40 @@ OVERLAP:compute_kernel,communication time:0.05
237240

238241
**推奨フィールド:**
239242
- `numproc_node:数値` - ノードあたりプロセス数
243+
- `nthreads:数値` - プロセスあたりスレッド数
240244

241245
**FOM内訳(オプション):**
242246
FOM行の後に SECTION/OVERLAP 行を追加すると、FOMの内訳(`fom_breakdown`)として Result_JSON に格納されます。性能推定で区間ごとのスケーリングに使用されます。
243247
- `SECTION:区間名 time:秒` - 計算/通信区間の時間
244248
- `OVERLAP:区間A,区間B time:秒` - オーバーラップ時間(FOM = Σsections - Σoverlaps)
245249

250+
**推奨パターン: `print_results()` 関数の抽出**
251+
252+
結果出力ロジックを関数に抽出すると、複数の実験条件で再利用しやすくなります(qwsの実装例):
253+
254+
```bash
255+
# print_results: check.sh実行後、FOMを抽出し結果行をstdoutに出力する共通関数
256+
# 引数: $1=出力ファイル, $2=Exp名, $3=numproc_node値
257+
# 使用例: print_results output_file CASE0 1 >> ../results/result
258+
print_results() {
259+
local outfile=$1
260+
local exp=$2
261+
local np=$3
262+
# 結果の検証
263+
./check.sh "$outfile" "data/$exp"
264+
local fom=$(grep etime "$outfile" | awk 'NR==2{printf("%5.3f\n",$5)}')
265+
echo "FOM:$fom FOM_version:DDSolverJacobi Exp:$exp node_count:$nodes numproc_node:$np nthreads:$nthreads"
266+
echo "SECTION:compute_kernel time:0.30"
267+
echo "SECTION:communication time:0.20"
268+
echo "OVERLAP:compute_kernel,communication time:0.05"
269+
}
270+
```
271+
272+
関数はstdoutに出力し、呼び出し側でリダイレクトします:
273+
```bash
274+
print_results output_file CASE0 1 >> ../results/result
275+
```
276+
246277
**オプション:**
247278
- `confidential:TeamA` - 機密データ(チーム限定表示)
248279

README.md

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,31 +51,34 @@ benchkit/
5151
│ │ ├── auth_login.html # ログインページ(Email + TOTP)
5252
│ │ ├── auth_setup.html # TOTP初期登録(QRコード表示)
5353
│ │ ├── admin_users.html # ユーザー管理画面
54-
│ │ ├── _navigation.html # 共通ナビゲーション(ドロップダウン
54+
│ │ ├── _navigation.html # 共通ナビゲーション(タブ型、認証時タブ拡張
5555
│ │ ├── _pagination.html # ページネーションUI部品
56-
│ │ ├── _results_table.html # 結果テーブル部品
57-
│ │ └── _table_base.html # テーブル基盤テンプレート
56+
│ │ ├── _results_table.html # 結果テーブル部品(フィルタ・比較UI内蔵)
57+
│ │ ├── _filter_dropdowns.html # フィルタドロップダウン部品(推定結果用)
58+
│ │ └── _table_base.html # テーブル基盤テンプレート(ツールチップ定義)
5859
│ ├── utils/
5960
│ │ ├── results_loader.py # 結果ファイル読み込み・集約・ページネーション
6061
│ │ ├── result_file.py # ファイルアクセス・権限管理
6162
│ │ ├── system_info.py # システム情報管理
6263
│ │ ├── totp_manager.py # TOTP認証(秘密鍵生成/QR/検証/レート制限)
6364
│ │ └── user_store.py # Redisベースユーザーストア(CRUD/招待トークン)
64-
│ ├── tests/ # テストスイート(95テスト
65+
│ ├── tests/ # テストスイート(102テスト
6566
│ ├── app.py # 本番用アプリ(main + dev)
66-
│ ├── app_dev.py # ローカル開発用(Redis/TOTP不要)
67+
│ ├── app_dev.py # ローカル開発用(Redis/TOTP不要、スタブモジュール内蔵
6768
│ └── create_admin.py # 初期adminユーザー作成CLIツール
6869
├── scripts/
6970
│ ├── matrix_generate.sh # CI YAML生成スクリプト
7071
│ ├── job_functions.sh # 共通関数定義
71-
│ ├── result.sh # 結果JSON変換(SECTION/OVERLAP対応)
72+
│ ├── result.sh # 結果JSON変換(SECTION/OVERLAP対応、pipeline_timing付加
7273
│ ├── send_results.sh # 結果転送(uuid/timestamp書き戻し)
74+
│ ├── record_timestamp.sh # Unixエポックタイムスタンプ記録
75+
│ ├── collect_timing.sh # パイプラインタイミング収集(build/queue/run時間)
7376
│ ├── estimate_common.sh # 性能推定共通ライブラリ
7477
│ ├── run_estimate.sh # 推定実行ラッパー
7578
│ ├── send_estimate.sh # 推定結果転送
7679
│ ├── fetch_result_by_uuid.sh # UUID指定結果取得
7780
│ ├── generate_estimate_from_uuid.sh # UUID指定推定パイプライン生成
78-
│ ├── wait_for_nfs.sh # NFS同期待機
81+
│ ├── wait_for_nfs.sh # NFS同期待機(現在コメントアウト中)
7982
│ └── test_submit.sh # テスト実行用
8083
├── .gitlab-ci.yml # メインCI定義
8184
├── config/
@@ -136,7 +139,9 @@ Flask ベースの Web アプリケーションで、ベンチマーク結果の
136139
### 結果表示機能
137140

138141
- サーバーサイドページネーション: 表示件数選択(50/100/200件)、First/Previous/Next/Last ナビゲーション
139-
- サーバーサイドフィルタ: SYSTEM/CODE/Exp ドロップダウンによる絞り込み(フィルタ条件はページ遷移時に保持)
142+
- サーバーサイドフィルタ: SYSTEM/CODE/Exp ドロップダウンによる絞り込み(フィルタはテーブルヘッダ行に内蔵、Exp は CODE に連動、フィルタ条件はページ遷移時に保持)
143+
- 結果テーブル列: Timestamp, SYSTEM, CODE, FOM, Compare, FOM version, Exp, Nodes, Proc/node, Thread/proc, JSON, PA Data, Mode, Trigger, Pipeline, Detail
144+
- ナビゲーション: ブラウザタブ風のアクティブ表示、認証時はタブが拡張(Public/All Results/Estimated)
140145
- スカラー型メトリクス: テーブル形式で表示
141146
- ベクトル型メトリクス: Chart.js によるインタラクティブグラフ(メッセージサイズ vs バンド幅/レイテンシ等)
142147
- リグレッション比較: 複数結果を選択して差分をグラフ・テーブルで比較
@@ -150,7 +155,9 @@ Flask ベースの Web アプリケーションで、ベンチマーク結果の
150155
- ログイン: メールアドレス + 6桁TOTPコード
151156
- セキュリティ: リプレイ攻撃防止(90秒窓)、ブルートフォース保護(5回失敗で5分ロック)
152157
- ユーザー情報・セッションはRedisに保存
153-
- 環境別issuer名: 本番 "BenchKit"、開発 "BenchKit-Dev"、ローカル "BenchKit-Local"
158+
- issuer名は環境変数 `TOTP_ISSUER` で設定(デフォルト: "BenchKit")
159+
- 本番: `TOTP_ISSUER=BenchKit`、開発: `TOTP_ISSUER=BenchKit-Dev`
160+
- ローカル開発(app_dev.py)では自動的に `-Local` サフィックスが付加
154161

155162
初期adminユーザーの作成:
156163
```bash
@@ -195,7 +202,9 @@ python -m pytest tests/ -v
195202
| `native` | 1ジョブでビルド+実行を同時実行 |
196203

197204
- `build.sh``run.sh` にはシステム名を渡し、システム別の環境設定が可能
198-
- `scripts/result.sh` で結果をJSON形式に変換
205+
- `run.sh``$1`=system, `$2`=nodes, `$3`=numproc_node, `$4`=nthreads の4引数を受け取る
206+
- `record_timestamp.sh` でビルド・実行の開始/終了時刻を記録し、`collect_timing.sh``pipeline_timing`(build/queue/run時間)を集計
207+
- `scripts/result.sh` で結果をJSON形式に変換(`pipeline_timing` 情報を自動付加)
199208
- `scripts/send_results.sh` で結果サーバに転送・性能推定トリガー
200209

201210
### 3. 結果転送・保存

0 commit comments

Comments
 (0)