diff options
Diffstat (limited to 'docs/design')
| -rw-r--r-- | docs/design/025-batch-programs.md | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/docs/design/025-batch-programs.md b/docs/design/025-batch-programs.md index b79075b..994e52e 100644 --- a/docs/design/025-batch-programs.md +++ b/docs/design/025-batch-programs.md @@ -156,6 +156,12 @@ matmul은 j를 레인 200개로 묶고 k를 레인이 함께 돈다. 묶음은 2 - 걸러내기 후보의 꼬리(후보당 약 250 명령: 기록 50, 결정 90, 넣기 110)를 리스트 쪽에서 한 번에 한다(폭 검사 한 번, 비트와 칸을 함께). - 칸에 더하기의 꼬리(join): 열의 폭을 묶음에 한 번 정하고 회차마다의 폭 가르기를 뺀다. +(4단계 뒤에 b16에서 다시 잰 막대.) BFS의 후보 꼬리는 `decide` 2.5, `keep_filtered` 1.3, `apply_filters` 0.3, 리스트 쪽(`add_many`, +`takes`, `dense_keys`) 약 1.5 ms, 합 약 5.7 ms(BFS 24.1 ms의 약 24%)다. 반으로 줄이면 약 21.3 ms라 막대는 ≤ 21.5다. join의 칸에 +더하기 꼬리는 회차마다 약 17 ns(메시지 하나에 100만 회차, 약 17 ms)로, 칸 읽기·실수 더하기·정수인지와 폭의 검사·쓰기가 같은 칸끼리 +메모리로 이어지는 사슬이다. 폭을 묶음에 한 번 정하고 4바이트 정수로 더하면 회차마다 약 5 ns로 셈해 −12 ms, 막대는 ≤ 108이다. +둘 다 BFS를 기계어의 약 2.7배에서 옮기지 못한다. join의 가장 큰 값인 점화식(약 40 ms)은 이 단계 밖이다(차례가 있는 사슬). + ## 하지 않는 것 - 합친 연산의 표(사용자, 2026-10-08), 레지스터 타일(133: 모으기가 있는 몸체에서 진다), 기계어. @@ -171,9 +177,9 @@ matmul은 j를 레인 200개로 묶고 k를 레인이 함께 돈다. 묶음은 2 |---|---:|---:|---:|---:|---:|---:|---:|---:| | knapsack | 11.5 ms | ≤ 10.3 (10.34) | ≤ 9.2 (10.51) | 3단계 10.07, 4단계 ≤ 8.6 | | 4.55 (꽉 짠 두 훑기 1.87) | 7.9 | 6.25 | | matmul | 40.0 | ≤ 39 (38.2) | ≤ 33 (36.1) | ≤ 21 (곱하기 뒤 26.57) | | 17.75 | 14.2 | 7.6 | -| BFS | 24.0 | ≤ 24 | ≤ 22 | ≤ 21 | ≤ 18 | 10.3 (꽉 짠 9.8) | 7.7 | 9.9 | +| BFS | 24.0 | ≤ 24 | ≤ 22 | ≤ 21 | ≤ 21.5 (b16에서 다시) | 10.3 (꽉 짠 9.8) | 7.7 | 9.9 | | roots | 8.97 | ≤ 9.0 | ≤ 8.6 | | | 6.8 | 9.57 | 6.86 | -| join | 117 | ≤ 116 | ≤ 115 | | ≤ 110 | 57.8 | 84.6 | 31.7 | +| join | 117 | ≤ 116 | ≤ 115 | | ≤ 108 (b16에서 다시) | 57.8 | 84.6 | 31.7 | | 묶음마다 (배낭) | 0.90 µs | ≤ 0.60 (0.68) | ≤ 0.45 | | | | | | | 묶음마다 (sum0, `icount`) | 2,330 명령 | ≤ 1,550 (1,822) | ≤ 1,300 | | | | | | |
