Files
FESADev/docs/calculation-performance/ADR.md
T

3.9 KiB

계산 성능 개선 결정

이 문서는 이번 사용자 승인 범위와 선택을 기록한다. PRD가 요구사항과 현재 checklist를 소유하며 공통 ADR, 공통 PRD와 AGENTS의 기존 물리·수치·I/O 계약을 변경하지 않는다.

PERF-ADR-001 — 전체 실행 시간과 반복 판정

  • 상태: 사용자 승인. 반복 횟수·워밍업 부분은 2026-10-14 PERF-ADR-004로 대체됐다.
  • 결정: 현재 AMD Ryzen 7 5800H PC에서 최적화 빌드 전체 경과 시간을 측정한다. 정적 Hex8 2초·동적 Hex8 100초·shell 동적 100초를 모두 만족해야 한다. 모델마다 워밍업 1회 후 비계측 5회 모두 상한 이내여야 한다.
  • 이유: 실제 결과를 받기까지의 시간을 평가하고 우연히 빠른 실행으로 판정하지 않는다.
  • 영향: 입력 준비·비교는 시계 밖, native 시작·계산·필수 로그와 HDF5 저장·종료는 시계 안이다. 측정 도구 종료 0과 시간·정확성 합격을 구별한다.
  • 승인 근거: 이 세션의 측정 방식 선택, 반복 측정 제안 동의, 아키텍처 보강 문서 승인과 $dryforge:go 실행 요청.

PERF-ADR-002 — MKL 필수 범위와 정밀도 예외

  • 상태: 사용자 승인.
  • 결정: 일반 밀집·희소 곱셈과 선형 해법에 MKL을 필수 사용한다. 작은 좌표 계산과 특수 정밀도는 위치·연산·이유·근거를 남겨 예외를 허용한다. Silent fallback은 없다.
  • 이유: 일반 행렬의 MKL 적용을 확보하면서 호출 비용과 승인된 high+low/보상/ interval 연산의 수치 의미를 보존한다.
  • 영향: private vendor 경계·checked index·자원 수명과 각 consumer 검증을 유지한다. Persistent handle·symbolic 재사용은 실제 비용과 lifecycle 입증이 필요한 후보다.
  • 승인 근거: 사용자 MKL 범위 선택과 보강 문서 승인.

PERF-ADR-003 — 기존 구조와 최신 물리 계약 유지

  • 상태: 사용자 승인.
  • 결정: 기존 프로젝트 문서를 유지하고 기능 문서만 추가한다. 기준 소스는 eaa5cbeb21b231862ed80f89386412232b0571c9다. 최적화는 별도 feature branch에 두고 기존 Domain/equation/element/assembly/procedure/backend/results/writer 책임을 유지한다.
  • 이유: 측정·수명 검증으로 필요한 최소 변경을 선택하고 기능 추가나 전면 재설계를 성능 작업과 섞지 않는다.
  • 영향: Hex8 mean-volume·lumped/high+low, shell reduced-coordinate HHT/schema v2, 원본·시간 schedule·수치 기준·필수 출력은 그대로다. 완료 뒤 최신 전체 MSVC x64 Debug 및 필수 원본 비교·독립 검토를 수행하며 과거 중단을 PASS로 승계하지 않는다.
  • 승인 근거: 기존 문서 유지 선택, 최신 dev 병합 요청, 아키텍처 보강 문서 승인.

PERF-ADR-004 — 워밍업 없는 단일 성능 측정

  • 상태: 2026-10-14 사용자 승인; PERF-ADR-001의 반복 횟수·워밍업 부분을 대체한다.
  • 결정: 최적화 전후 각각 모델별 별도 프로세스로 워밍업 없이 1회만 공식 측정한다. 시간 목표·전체 경과 시간의 범위·MKL/VTune·정확성·필수 출력 계약은 유지한다.
  • 이유: 사용자가 장시간 작업 중 PC 중단을 알리고 측정 횟수 변경과 작업 계속을 지시했다. 중단 원인은 별도 입증 없이 특정하지 않는다.
  • 영향: 기존 raw 실행과 완료 표본은 과거 프로토콜 이력으로 보존한다. 중단된 표본은 성공으로 채우지 않으며, 이전 워밍업 뒤 표본이나 가장 빠른 값을 단일 판정에 대입하지 않는다. 수정된 측정 도구로 새 기준/최종 자료를 기록하고 각 결과를 타이머 밖에서 비교한다.
  • 승인 근거: “성능 테스트에 워밍업+측정5회를 측정1회로 변경하겠습니다. 작업을 계속 진행하세요.”