docs(performance): adopt approved single-run timing protocol
This commit is contained in:
@@ -37,10 +37,11 @@ MSVC x64 최적화 Release 실행 파일을 사용한다. 기존 Debug 검증
|
||||
프로파일링용 심볼을 포함하되 시간 평가와 프로파일링에는 같은 빌드 설정의
|
||||
실행 파일을 사용한다. Debug 시간을 Release 목표에 대입하지 않는다.
|
||||
|
||||
각 모델을 별도 프로세스로 워밍업 1회 실행한 다음 5회 측정한다.
|
||||
**측정한 5회 각각이 해당 시간 상한 이내여야 합격**이다. 평균·중앙값·최솟값은
|
||||
참고로 기록할 수 있지만 합격 판정을 대체하지 않는다. 워밍업도 정상 해석과
|
||||
결과 저장을 완료해야 하며 합격 표본에는 포함하지 않는다.
|
||||
각 모델을 별도 프로세스로 **워밍업 없이 1회 측정**한다.
|
||||
**측정한 1회가 해당 시간 상한 이내여야 합격**이다. 반복 실행 중 빠른 값을
|
||||
선택하거나 과거 워밍업 뒤 측정값으로 현재 단일 측정을 대신하지 않는다.
|
||||
2026-10-14 사용자가 장시간 작업 중 PC 중단을 알리고 기존 워밍업 1회·측정
|
||||
5회를 측정 1회로 변경했다. 이전 raw 자료는 별도 이력으로 보존한다.
|
||||
|
||||
단조 증가 시계로 프로세스 시작 요청 직전부터 정상 종료를 확인한 직후까지
|
||||
측정한다. 프로세스 시작, 입력 읽기, 모델 준비, 모든 계산·복구, 필수 로그와
|
||||
@@ -59,8 +60,8 @@ MSVC x64 최적화 Release 실행 파일을 사용한다. 기존 Debug 검증
|
||||
빌드·다른 해석·CTest·프로파일링과 공식 시간 측정을 동시에 수행하지 않는다.
|
||||
Thread 수와 sampling interval은 조정 가능 값이며 baseline 전에 정하고 기록한다.
|
||||
서로 다른 설정의 탐색 결과는 구분하고, 최종 설정에서 기준 소스도 다시 측정해
|
||||
전후 비교의 조건을 맞춘다. OS 파일 캐시는 워밍업으로 준비하며 매 실행마다
|
||||
강제 초기화하는 별도 요구는 없다.
|
||||
전후 비교의 조건을 맞춘다. OS 파일 캐시를 위한 별도 워밍업이나 매 실행마다
|
||||
강제 초기화하는 요구는 없다. 전원·재시작·캐시 준비 상태의 차이는 기록한다.
|
||||
|
||||
### FEM-REQ-PERF-003 — VTune 근거
|
||||
|
||||
@@ -172,7 +173,7 @@ Identity·row/component completeness·finite/schema 검사를 tolerance보다
|
||||
적용한다. 현재 [공통 수치 정책](../TOLERANCE.md)의 near-zero 1%, 일반 행
|
||||
상대오차 5%, family relative RMS 1%와 zero-scale exact-zero를 유지한다.
|
||||
Eigen의 별도 MITC4 예외를 Hex8에 확대하지 않는다.
|
||||
5회 시간 표본의 모든 결과를 기존 비교기로 확인하며 비교 시간은 타이머 밖이다.
|
||||
모델별 1회 시간 표본의 결과를 기존 비교기로 확인하며 비교 시간은 타이머 밖이다.
|
||||
Reference 파일 부재·identity 충돌·비교 실패는 완료를 차단한다.
|
||||
|
||||
### FEM-REQ-PERF-008 — 산출물과 완료 보고
|
||||
@@ -183,12 +184,12 @@ MKL 적용·예외 목록, 검증/독립 검토 근거와 한국어 최종 보
|
||||
정식 보고서는 `docs/calculation-performance/`에서 상대 경로로 연결한다.
|
||||
실제로 없는 개인 artifact를 존재하는 근거처럼 링크하지 않는다.
|
||||
|
||||
시간 보고서에는 case별 target seconds, 워밍업/측정 구별과 측정 번호,
|
||||
시간 보고서에는 case별 target seconds, 측정 종류와 측정 번호,
|
||||
각 elapsed seconds, native exit, 입력/실행 파일/결과 identity와 SHA-256,
|
||||
command/cwd, 로그 위치와 결과 검증 판정을 기록한다. 환경 기록은 source
|
||||
commit 및 dirty 여부, MSVC/flags/build type, dependency/VTune 버전, CPU/OS,
|
||||
전원 상태, MKL/TBB/OpenMP thread 및 관련 환경 설정을 포함한다.
|
||||
전후 비교에는 각 5회 값·최댓값·개별 합격 여부와 전체 판정이 있어야 한다.
|
||||
전후 비교에는 각 모델의 1회 값·개별 합격 여부와 전체 판정이 있어야 한다.
|
||||
성능 판정과 수치/검증 판정을 별개로 표시하며 최종 완료는 둘 다 충족해야 한다.
|
||||
|
||||
측정 진입점은 `python scripts/performance/measure.py --exe <fesa.exe>
|
||||
@@ -197,8 +198,9 @@ commit 및 dirty 여부, MSVC/flags/build type, dependency/VTune 버전, CPU/OS,
|
||||
아래에 두고, 비어 있지 않은 기존 실행 디렉터리는 덮어쓰지 않는다.
|
||||
보고서 `measurements.json`에는 `schema=fesa-performance-v1`, 환경 정보,
|
||||
case별 `case`, `target_seconds`, `runs`, `all_measured_runs_within_target`을 둔다.
|
||||
정상 완료한 `runs`는 워밍업 1개와 측정 5개이며 `kind`는 `warmup|measurement`,
|
||||
`measurement_index`는 워밍업 0 또는 측정 1–5다. 각 행의 `elapsed_seconds`는
|
||||
현재 정상 완료한 `runs`는 측정 1개이며 `kind=measurement`,
|
||||
`measurement_index=1`이다. 이전 raw 이력의 `warmup`과 측정 2–5는 보존하되
|
||||
현재 판정에 혼합하지 않는다. 각 행의 `elapsed_seconds`는
|
||||
유한한 비음수, `native_exit`는 실제 정수 종료 코드 또는 시작 실패 시 null이다.
|
||||
실행 상태 `execution_state`는 `completed|launch-failed|timed-out|interrupted`다.
|
||||
중단/실패 시 이미 수집한 행과 실패 행을 보존하고, 누락 표본은 완료로 채우지 않는다.
|
||||
@@ -346,7 +348,8 @@ VTune으로 초기 준비·정수 변환/handle 준비·local 계산·조립·
|
||||
## 선택의 이유와 제외 범위
|
||||
|
||||
전체 경과 시간은 실제 사용자가 결과를 받기까지의 시간을 반영한다.
|
||||
5회 모두 합격하는 기준은 우연히 빠른 한 번을 완료로 인정하지 않기 위한 것이다.
|
||||
사용자가 PC 중단 후 승인한 단일 측정은 장시간 반복 부하를 줄이기 위한 것이다.
|
||||
반복 중 빠른 값을 고르는 방식으로 단일 측정의 합격을 만들어내지 않는다.
|
||||
현재 PC와 소프트웨어 샘플링을 고정하여 실제 작업 환경에서 평가한다.
|
||||
MKL은 일반 행렬 연산에 필수로 사용하면서 작은 좌표 계산의 호출 비용과
|
||||
특수 정밀도 계약을 보존하는 예외를 허용한다.
|
||||
@@ -362,7 +365,7 @@ reference/tolerance 수정, 출력 축소 및 기존 다른 문제의 포괄적
|
||||
- [ ] 일반 행렬 곱셈·선형 해법의 MKL 경계와 수명 검증, 적용·예외 목록 확보.
|
||||
- [ ] Hex8 병목 개선·관련 행동/수치·원본 검증 완료.
|
||||
- [ ] Reduced shell 병목 개선·관련 행동/수치·원본 검증 완료.
|
||||
- [ ] 최종 세 모델의 워밍업 후 5회 전부 시간 목표 및 매 결과의 외부 비교 통과.
|
||||
- [ ] 최종 세 모델의 워밍업 없는 1회 시간 목표 및 각 결과의 외부 비교 통과.
|
||||
- [ ] 최종 전체 MSVC x64 Debug build/CTest와 필요한 Python 검사 완료·기존 예외 대조.
|
||||
- [ ] 필요한 독립 수치·물리 검토 및 VTune 전후 결과, 최종 보고 완료.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user