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