Files
FESADev/docs/mitc4-shell-feast-eigen2/implementation-feast-residual-review.md
T
2026-09-10 01:52:49 +09:00

6.6 KiB
Raw Blame History

FEAST residual stopping 독립 검토

  • Feature: mitc4-shell-feast-eigen2; Owner: numerical-review-agent; 2026-09-10.
  • 범위: 사용자 승인 fpm[5]:1→0, [2]=12, [3]=20 유지. S3는 보류 상태를 유지한다.
  • 판정: PASS — 승인된 종료 제어 변경, FAIL — 원본 외부 Value acceptance. 전체 기능 완료 판정이 아니다.
  • 기준: PRD, ADR, E4–E7, C3/C5, I/O, TOLERANCE.

판단과 필요한 확인

항목 독립 판단
종료 기준 Intel C parameter 표는 [5]=0 residual, 1 trace이며 double epsilon은 10^-fpm[2]임을 명시한다. 1e-12 vendor stopping과 독립 all-c 1e-10은 서로 다른 metric이다
불변 수식 B=A/s, mu=lambda/s는 무차원이고 rho_B=norm2(Bx-mu x)/norm2(x)도 무차원이다. 종료 시점만 바뀌며 K/M, 부호·단위·DOF 순서, 적분, whitening, raw sort, 복구·state commit 식은 그대로다
전체 c 요청 N 밖을 포함한 c개 residual과 pairwise/Frobenius Gram 검증 후 첫 N개를 공개해야 한다. FEAST 성공이나 작은 epsout으로 생략할 수 없다
Zero·반복군 정확한 zero의 backend residual이 비유한이면 기존 available=false 표현을 유지한다. 독립 zero identity와 nonzero vector·Gram은 검증한다. Residual stopping에서 zero/mixed-zero의 실제 성공 여부는 실행으로 확인해야 하며 trace fallback을 추가하지 않는다. 반복군은 multiplicity·공간·Gram으로 판단하고 개별 벡터 방향의 유일성을 요구하지 않는다
상태·metadata SetControls를 count/solve마다 재초기화하며 count의 [49]=1 reset을 다음 solve에 전파하지 않는다. base_fpm[5]=0,[2]=12,[3]=20은 실제 새 HDF5에서 확인한다. epsout은 기존 trace 변화 진단량이며 residual stopping 지표로 이름·의미를 바꾸지 않는다
실패·안정성 Refinement 최대20, bounded interval/capacity retry와 독립 검증 실패 즉시 종료를 유지한다. 새 종료 조건에서도 모든 conditioning의 수렴을 보장하지 않는다. Source의 미수렴/status/budget/allocation 전체 실패 주입 coverage는 기존 미완료 위험으로 남는다

검토 source: backend, 기존 backend tests. 추가로 writer 검증의 [5]=0 제한과 실제 HDF5 readback·변조 거부 검사를 대조했다. Schema의 field/type/layout 변경 없이 승인된 control 값만 일치시킨다. 본 검토자는 source/tests를 변경하거나 build/test를 중복 실행하지 않고 메인의 실행 로그를 대조했다.

새 실행 evidence

개인 .harness/config.json과 preset의 MSVC x64 Debug·oneMKL 2026.1 설정을 확인했다.

Evidence 경로 확인 결과
.harness/feast-residual-red.log 변경 전 backend와 실제 HDF5에서 [5]=1을 읽어 새 [5]=0 검사 두 개가 실패함
.harness/feast-residual-focused.log 12개 중 11 통과. Backend 10개는 n1/all-zero/mixed-zero/repeated40 prefix/close distinct·Givens/negative/invalid/thread 복원 포함. Writer 한 개는 실제 control readback·trace로 변조한 candidate 거부 포함
같은 focused log의 원본 reference Application 성공 후 Value 비교까지 진행했으나 10 singleton 중 9개 실패. 기존 독립 residual 차단과 다른 외부 acceptance 실패이며 전체 검사가 통과한 것은 아님
.harness/feast-residual-full-run.log 구성된 전체 build/test에서 CTest 395개 중 394 통과, 원본 Value reference 한 개 실패, CTest exit8, 실행178.42초. 전체 통과 아님
.harness/build-ninja-msvc-debug/feast-residual-metrics.json .harness/build-ninja-msvc-debug/extract_feast_residual.py가 공식 원본 sibling HDF5를 read-only 추출한 값. 스크립트의 실제 dataset·mode_id 대응과 JSON을 대조함

원본 새 HDF5에서 c=22,m0=33,info=0,loop=6, controls [2]=12,[3]=20,[5]=0, epsout=2.4227135616446226e-17을 확인했다. 전체 c개의 최대값은 다음과 같다.

Metric 실제 최대값 판정 기준
독립 rho_B 1.605467212112365e-13 <=1e-10, PASS
Original-free eta_r / whitened eta_w 9.981033437726324e-15 / 7.315529163435965e-15 각각 <=1e-10, PASS
Gram eta_gram / max_eta_orth 1.3777964580680282e-15 / 1.6958335496991244e-15 각각 <=1e-10, PASS
Backend res 8.280018892001454e-13 vendor 진단량, 독립 rho_B 대체 아님

Value 행별 상대오차는 전부 5% 이내지만 Mode2–10의 singleton RMS는 1%를 초과한다. Mode1은 0.5648341627%로 PASS, Mode2–10은 1.3496440956%–4.2613310845%로 FAIL이다. 양의 singleton은 RMS가 relative error와 같다는 승인된 family 계약을 그대로 적용했다. 행 5%만으로 전체 PASS를 선언하거나 frame을 합쳐 RMS를 완화할 수 없다. 필요한 후속 correction: 메인이 이 외부 불일치의 원인·모델 가정을 별도 조사해야 한다. 현재 evidence만으로 질량·stabilization 등 특정 물리 식이 원인이라고 단정할 수 없다.

반복군 검사 통과를 모든 projector·3회 결정론·vendor 실패 주입 coverage 완료로 확장하지 않는다.

Trace stopping 이력과 잔여 위험

기존 실행 기록의 trace stopping 실패는 n=3125,N=10,c=22,m0=33,info=0,loop=4, raw solver column20의 rho_B=1.48674481038207483e-10>1e-10, epsout=2.82488401287762986e-14다. Full/upper action 차이 1.38724134018909290e-17은 해당 실패 크기를 설명하지 못한다. 이 관찰은 trace 수렴이 각 vector residual 통과를 보장하지 않는 실제 반례이며, 새 제어의 개선 정도·통과 여부를 선취하지 않는다.

공통 외부 정책은 필요한 row의 누락·추가·중복·비유한을 tolerance 전에 거부하고 승인된 Value family에 적용한다. 독립 modal 허용오차를 외부 reference tolerance로 대체하지 않는다. S3 정적 계약 충돌과 기존 nonlinear recovery 문제, 27개 case 전체 세부 coverage 미완료는 기존 독립 검토의 별도 제한으로 남는다.