양자 시뮬레이터 v4 — 32비트 팩킹: GHZ-2000 1.09초·메모리 21MB (v2 대비 147×/27.5×)
개요
팩킹 지렛대 실행: crownyc opcode 895~899(32비트 워드 팩킹 + 청크 플랫 배치 + 비트병렬 popcount g위상) + 한선씨 동반 v4.
n=2000 메모리 570MB→20.8MB(27.5×), GHZ-2000 전체 1.72s→1.09s (v2 인터프리터 대비 147×). 검증 10종·프레임 EPR·비양자 사니티 회귀 전부 통과.
VM 변경 (crownyc.c — v3 백업 crownyc.c.bak-양자opcode에 이어 증분)
- opcode 895~899:
양자팩게이트(모드 0H/1S/2CX/3X/4Z/5Y, 워드 RMW) · 양자팩행합G(워드 비트병렬 g위상: m1/m2/m3 마스크→P/N popcount, XOR 제자리) · 양자팩열스캔 · 양자팩비트(읽기/쓰기 겸용) · 양자팩행복사영(dst==src면 0채움)
- 헬퍼
qpk_addr: 청크 플랫 주소(4095워드/청크) — 워드 인덱스→큐브 주소
- 표현: 행 = ⌈n/32⌉워드(양수 32비트, 24트릿 정수 안전범위 내), 평면 = 청크 배열 ~62개 → 배열 수 8,003→~130개 (힙 압박 소멸)
실측 (n=2000)
| 항목 | v2 | v3 네이티브 | v4 팩킹 | v4/v2 |
|---|
| 메모리(RSS) | 572MB | 570MB | 20.8MB | 27.5× |
| 초기화 | 8,309ms | 140ms | 29ms | 286× |
| CX 게이트 | 42.9ms | 0.48ms | 0.40ms | 107× |
| 측정 | 33ms | 0.31ms | 0.13ms | 254× |
| GHZ-2000 전체 | ~160s | 1.72s | 1.09s | 147× |
| 무작위 1000게이트 | ~43s | 935ms | 451ms | 95× |
- 게이트는 이제 행루프(4000행 청크 간접참조) 바운드 — 다음 지렛대는 행합처럼 게이트도 워드열 연산화(테이블로 전치) 또는 배치 게이트.
- Stim 격차: ~2.5×10³× → ~10²×대 (측정·행합은 비트병렬 동급 원리, 게이트 행루프와 호출 오버헤드가 잔여).
회귀
v3 데모(같은 바이너리)·프레임 EPR·JSON 사니티 통과. opcode 890~894(v3)와 공존 — v1~v4 네 판 모두 정상.
파일·학습
libs/양자스테빌라이저4.한선 (opcode 895~899 동반 정본) — intent 양자_스테빌라이저_32비트팩킹_v4 DB 3곳 · 지식셀 #20530
- 벤치: scratchpad 양자v4플래그십.한선
잔여 로드맵
① 게이트 워드열화/배치 opcode(잔여 10²× 중 상당분) ② Stim 역테이블로(결정론 측정 O(n)) ③ T2~T4 범용 티어(Clifford+T·MPS·상태벡터) ④ 큐트리트 Z₃ ⑤ game/quantum 서비스화(2000큐비트 초단위 — 실서비스 준비됨)