aboutsummaryrefslogtreecommitdiffstats
path: root/docs/research/139-batch-programs-at-load.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/research/139-batch-programs-at-load.md')
-rw-r--r--docs/research/139-batch-programs-at-load.md16
1 files changed, 16 insertions, 0 deletions
diff --git a/docs/research/139-batch-programs-at-load.md b/docs/research/139-batch-programs-at-load.md
index dbfaef1..a4cfa20 100644
--- a/docs/research/139-batch-programs-at-load.md
+++ b/docs/research/139-batch-programs-at-load.md
@@ -97,3 +97,19 @@ BFS는 그 다음 단계(레인마다의 나감 마스크; 레인 공간 둘과
미룬 쓰기와 의존 검사, 읽기의 기록, 작업량, 결함의 회차. 한 뜻에 두 구현이 서는 것은 025가 `pass`를 고쳐 나가며 피한 위험이다. 2단계에서
통한 방법(견줌 빌드에서 프로그램을 마른 채로 돌리고 `pass`도 돌려 견주고, 단계가 끝나면 견줌을 지움)을 그대로 쓰되, 이번에는 스칼라가
아니라 레인 배열을 비트까지 견줘야 하므로 더 무겁다.
+
+## 그 뒤 (2026-10-11): 무겁게 가지 않기로
+
+사용자는 026을 무겁게 가지 않기로 했다(곧은 줄의 걸음을 `pass`와 따로 짜고 레인을 견주는 장치를 두는 일). 그래서 이 연구가 찾은 값 가운데
+지금의 실행기 안에서 가볍게 줄일 수 있는 것 하나만 했다: 회차마다의 버퍼 거두기(`sweep`, matmul 2.0 ms).
+
+- **중첩 세는 루프의 회차는 덜 거둔다**(`ce18bc4`). `fresh`와 `new_mask`가 남은 수의 가장 적은 때를 적고, 회차 끝에서 남은 것이 한 회차가
+ 가장 많이 쓴 것보다 하나 많은 데까지 줄었을 때만 거둔다. 루프 뒤에는 마지막 회차가 거두지 않았으면 한 번 거둔다. 거두기를 늦출 뿐이라
+ 뜻은 같다. matmul 명령 −3.6%, 사이클 −4.5%, 25.85 → 24.3 ms(−6%).
+- **걷기의 회차와 펼친 걷기의 덩어리는 전처럼 회차마다 거둔다.** 같은 규칙을 주자 BFS의 묶음이 레인을 다 써 실행기로 돌아갔다(36.9 ms,
+ 답은 같음). 걸러내기와 고르기가 쓰는 양을 회차의 가장 적은 남은 수가 다 말해 주지 못한다. 빈 목록에 넣는 길을 모두 읽었고, 아직 쓰이는
+ 버퍼를 넣는 길은 없었다(맞음의 문제가 아니라 빠르기의 문제다).
+- **묶음 구조체의 가운데에 필드를 넣으면 knapsack이 같은 명령으로 7% 느려졌다.** 뒤의 큰 배열들이 자리를 옮긴 값이다. 필드를 구조체 끝으로
+ 옮기자 +2% 안팎으로 돌아왔다. 새 필드는 `Batch`의 끝에 둔다.
+- 이것으로 멈춘다. 남은 가벼운 값(조각의 정수 검사를 로드 때 증명하기 등)은 이와 같은 크기에, 같은 배치의 흔들림 안에 있다.
+