← 목록
기타 2026-07-03 3KB 읽기 3분

양자 시뮬레이터 v3 — C네이티브 벌크 opcode로 93× (GHZ-2000 = 1.7초)

개요

최적화 체크리스트의 최대 지렛대(C네이티브 opcode + 아레나 상향)를 실행. crownyc VM에 opcode 890~894를 추가하고 한선씨 동반 라이브러리 v3를 작성, GHZ-2000 엔드투엔드 160초(v2 투영) → 1.7초 = 93×. 정확성 회귀(검증 10종·프레임·EPR·비양자 사니티) 전부 통과.

VM 변경 (crownyc.c — 백업: crownyc.c.bak-양자opcode)

  1. opcode 890~894 신설 (테이블로 행/열 연산 C레벨):
- 890 양자행합G(rxh,rzh,rxi,rzi,n) — 행합 g위상합+제자리XOR - 891 양자열게이트(QXM,QZM,QR,a,b,행수,모드) — 모드 0H/1S/2CX/3X/4Z/5Y - 892 양자행복사영(rxd,rzd,rxp,rzp,n) — 붕괴 행 이동 - 893 배열채움(배열,n,값)범용 (빈 배열에 길이 설정+채움, 추가 루프 대체) - 894 양자열스캔(QXM,열a,시작,끝) — x=1 첫 행
  1. 아레나 48M→144M 큐브 + heap_ptr 47.9M→143.9M 동기화 → 배열 풀 11,691→35,137개 (연속 대형 인스턴스 힙고갈 해소. calloc 지연커밋이라 실사용분만 RSS)
  2. hanseonc_high.c 빌트인 테이블 등록. 빌드: cc -O2 -o crownyc crownyc.c -lm -framework Security -framework CoreFoundation (TLS 프레임워크 필수)
  3. 발견: opcode 730/731 메모리마커/메모리복원 — 배열힙 회수 장치 기존재 (요청루프 회수용)

실측 (n=2000, v2→v3)

항목v2 인터프리터v3 네이티브배율
초기화8,309ms140ms59×
재초기화(제자리)10,953ms61ms180×
CX 게이트42.9ms0.48ms89×
측정33ms0.31ms106×
GHZ-2000 전체(게이트 2000+측정 2000)~160s(투영)1.72s93×
무작위 클리포드 1000게이트~43s(투영)935ms46×
- RSS 570MB(불변 — 다음 지렛대=팩킹). GHZ-2000 전부동일=1, 4상프레임 레이어는 v3 위에서도 그대로 동작(합성 가능).
  • Stim과의 격차: ~10⁴× → ~2.5×10³× (남은 격차 = 팩킹 30~60× + 호출 오버헤드). 다음 단계에서 ~50× 이내 진입 가능.

정확성 회귀

v1 데모(결정론 5종)·v2 GHZ-40·프레임 EPR/GHZ·JSON/배열 사니티 전부 통과. 기존 .toau 바이너리 호환 유지.

관련 파일

  • libs/양자스테빌라이저3.한선 (opcode 890~894의 한선씨 동반 정본) — intent 양자_스테빌라이저_네이티브opcode_v3 DB 3곳
  • crownyc.c / hanseonc_high.c (백업 .bak-양자opcode) · 지식셀 #20513
  • 벤치: scratchpad 양자v3플래그십.한선

잔여

① 비트/트릿 팩킹 opcode(행=워드배열, 30~60×) ② 파울리 4상 인코딩(2트릿/파울리) ③ 게이트 호출 오버헤드(배치 게이트 opcode) ④ Stim 역테이블로 ⑤ game/quantum 서비스화 ⑥ 큐트리트 Z₃ 트랙