# Step 3: Phase 1 Scale Benchmark ## 읽어야 할 파일 - `/AGENTS.md` - `/docs/PRD.md` - `/docs/ARCHITECTURE.md` - `/docs/ADR.md` - `/docs/RELEASE_CHECKLIST.md` - `/include/fesa/analysis/run_solver.hpp` - `/tests/performance/assembly_benchmark.cpp` ## 작업 약 100,000 DOF의 deterministic Beam chain 모델로 메모리와 시간을 측정하는 `tests/performance/phase1_scale_benchmark.cpp`를 만든다. - model generation, parsing/Domain build, assembly, PARDISO solve, recovery, HDF5 write 시간을 구분해 출력한다. - peak working set 또는 Windows에서 재현 가능한 memory metric을 기록한다. - benchmark는 finite result, equilibrium, expected DOF count와 정상 종료만 assertion한다. - 임의 성능 기준이나 speedup을 pass 조건으로 만들지 않는다. ## Acceptance Criteria ```powershell cmake --build --preset windows-release .\out\build\windows-release\Release\fesa_phase1_scale_benchmark.exe ctest --preset windows-release --output-on-failure ``` 출력에 모델 크기, 각 stage 시간, memory metric, thread 설정, solver 설정이 포함되어야 한다. ## 검증 절차 1. 작은 model에서 benchmark correctness test를 먼저 실패시킨다. 2. 동일 generator로 목표 크기를 실행한다. 3. 측정값과 환경을 release checklist에 기록한다. 4. index summary에 결과 위치와 실제 DOF count를 기록한다. ## 금지사항 - benchmark를 unit test timeout에 묶지 마라. 이유: 머신 성능에 따라 달라진다. - 결과 정확성 검사를 생략하지 마라. 이유: 빠른 오답은 성능 증거가 아니다. - 실제 측정 없이 목표 시간을 만들지 마라. 이유: 요구사항에 근거가 없다.