docs(performance): clarify MKL ownership and evidence limits
This commit is contained in:
@@ -58,7 +58,11 @@ CSR coefficient와 모든 RHS는 MKL 호출 전 math에서 finite 검증한다.
|
||||
변경하지 않는다. Finite-input product overflow는 consumer의 기존 output finite
|
||||
검증으로 실패한다. Empty/zero shape도 입력 finite/shape/range 검증을 유지한다.
|
||||
|
||||
Dense gemv/gemm도양쪽actualownedstorage/VectorRHS를중앙Matrix::Multiply에서finite-first로검사한다. PrivateTransposeLeft는이중앙dispatch를사용하며 nonfinite입력에서invalid_argument를전달한다. BuildEigenReduction/linearfrequency/FEAST owner는해당typedfailure를기존Result taxonomy로변환한다. MakeLift actual basis/scaled operands와FEAST normalizedphi/mass_modes producer도dispatch전에검사한다.
|
||||
밀집 GEMV/GEMM은 `Matrix::Multiply`에서 양쪽 matrix storage와 Vector RHS를
|
||||
호출 전에 finite 검사한다. Private transpose-left 연산도 이 경계를 사용하며
|
||||
비유한 입력은 `invalid_argument`로 거부한다. Eigen reduction·frequency·FEAST
|
||||
owner는 이를 기존 Result 실패 형식으로 변환한다. MakeLift의 실제 basis와
|
||||
scaled operand, FEAST의 normalized phi와 mass_modes도 dispatch 전에 검사한다.
|
||||
|
||||
Production caller finite 입력은 별도로 확인한다. Recovery는 기존
|
||||
`IsFiniteVector`→Multiply→finite output 순서를 유지한다. Linear frequency의 physical
|
||||
@@ -85,48 +89,51 @@ error·gamma·underflow certification·free/reaction 판정은 그대로다.
|
||||
|
||||
[T1 실제 VTune](verification.md)의 OMP worker/spin 비용과 아래 toy n=1 lifecycle
|
||||
근거로, SPD/Tangent의 `CallPardiso`에서 **현재 retained equation_count=1**인 경우만
|
||||
호출 기본 thread 정책을1로 제한한다. Phase11/22/33/−1 각각의 호출 범위다.
|
||||
`mkl_set_num_threads_local(1)`의 이전 TLS override가0인 경우만 scope1을 유지하고
|
||||
끝에0을 복원한다. 이전값이비영이면 즉시 그값을복원하여 caller override대로
|
||||
backend를실행한다. n=0/2이상·전역 MKL/OpenMP 요청·dispatch·iparm·pivot/scaling/
|
||||
regularization·acceptance는변경하지않는다. 넓은size threshold는추정하지않았다.
|
||||
호출의 기본 thread 수를 1로 제한한다. Phase 11/22/33/−1 각각의 호출 범위다.
|
||||
`mkl_set_num_threads_local(1)`의 이전 TLS override가 0일 때만 1을 유지하고,
|
||||
범위 종료 시 0을 복원한다. 이전값이 비영이면 즉시 그 값을 복원하여 호출자의
|
||||
override로 backend를 실행한다. n=0 또는 n≥2, 전역 MKL/OpenMP 요청, dispatch,
|
||||
iparm·pivot/scaling·regularization·acceptance는 변경하지 않는다.
|
||||
계측하지 않은 더 넓은 size threshold는 채택하지 않았다.
|
||||
|
||||
Release의oldfactor는old retained count, newfactor는newcount를각call에서사용하므로
|
||||
작은oldmatrix release 뒤 큰newmatrix가 single-thread로 오염되지 않는다.
|
||||
현재원시기록의 외부 MKL/OMP 요청은8/dynamicFALSE로baseline과같고 실제 source
|
||||
정책은default1×1 calls에서달라진다. 이 차이를환경동일이라는표현으로숨기지않는다.
|
||||
Phase 성공/오류/exception·잘못된 RHS 및 concurrent worker의 TLS 복원과 candidate
|
||||
보존을실제검사한다. Native process crash는C++ RAII unwind를보장하지않으며, 해당
|
||||
진단의scope설정은종료한process의TLS여서다음실행/전역환경에남지않는다.
|
||||
Release는 이전 factor의 retained count, 새 factor는 새 count를 사용한다.
|
||||
따라서 작은 matrix의 release 뒤 큰 matrix 호출에 설정이 남지 않는다.
|
||||
외부 MKL/OMP 요청은 baseline과 같은 8/dynamic FALSE지만, 소스의 실제 자원
|
||||
정책은 기본 설정의 1×1 호출에서 달라진다. 두 조건을 구분해 보고한다.
|
||||
Phase 성공·오류·exception, 잘못된 RHS와 동시 호출에서 TLS 복원과 candidate
|
||||
보존을 검사한다. Native process crash는 C++ RAII unwind를 보장하지 않는다.
|
||||
종료한 process의 TLS 설정은 다음 실행이나 전역 환경에 남지 않는다.
|
||||
|
||||
### Baseline PARDISO heap failure와 제한
|
||||
|
||||
기존staticpartialfixture는full24×24/free1×1이다. `backend-isolation`의SpMV-only
|
||||
1000회create/mv/destroy는native0이며, PARDISO-only100회예정실행은native
|
||||
`−1073740940 (0xc0000374)`로중단됐다. 별도반복staticfixture도iteration3에서같은
|
||||
heap-corruption을재현했다. 이를새SpMV수명회귀나단순testPASS로분류하지않는다.
|
||||
기존 static partial fixture는 full 24×24/free 1×1이다. `backend-isolation`의
|
||||
SpMV-only 생성·곱셈·해제 1,000회는 native 0이었다. PARDISO-only 100회 예정
|
||||
실행은 native `−1073740940 (0xc0000374)`로 중단됐다. 별도의 반복 static
|
||||
fixture도 iteration 3에서 같은 heap 손상을 재현했다.
|
||||
새 SpMV 수명 회귀와 분리해 기록하며 이 실패를 검사 통과로 표시하지 않는다.
|
||||
|
||||
같은freshauxTU를T1의기존Release library에`/O2 /Ob2 /MD /DNDEBUG /Zi`로link해
|
||||
실제baseline을대조했다. Baseline default8은61회완료뒤62에서같은nativecrash,
|
||||
scoped1은100회native0와각scope끝effective8복원을기록했다. CurrentDebug
|
||||
`/Od /Ob0 /MDd /RTC1 /Zi` recordedprobe의8/1은각100회완료했으나이전Debug
|
||||
probe의2/3회crash를지우지않는다. 실패가간헐적이므로100회통과를vendor문제
|
||||
해결확정으로쓰지않는다. Debug/Release차이도그대로기록한다.
|
||||
같은 독립 진단 소스를 T1의 기존 Release library에
|
||||
`/O2 /Ob2 /MD /DNDEBUG /Zi`로 link해 baseline을 대조했다. 기본 8-thread
|
||||
실행은 61회 완료 뒤 62회에서 같은 native crash가 발생했다. Scoped 1-thread는
|
||||
100회 native 0이며 각 범위 종료 뒤 effective 8 복원을 기록했다.
|
||||
현재 Debug `/Od /Ob0 /MDd /RTC1 /Zi` 대조의 8/1-thread는 각각 100회
|
||||
완료했지만, 이전 Debug 진단의 iteration 2/3 crash도 보존한다. 간헐적 실패이므로
|
||||
100회 통과를 vendor 문제의 해결 확정으로 쓰지 않는다. Debug/Release도 구분한다.
|
||||
|
||||
Ordered full/free CSR offsets/columns/rawdoublebits와RHS inputSHA는양쪽
|
||||
Ordered full/free CSR offsets·columns·raw double bits와 RHS의 input SHA는 양쪽
|
||||
`CC7E72000783E9694BAF76627D95AB7B420A31198B210B5A60C7ACE93E5E2258`로같다.
|
||||
ILP64·mtype2·actual pardisoinit defaultcontrols(26 checker/34 zerobased 포함), 동일
|
||||
ILP64·mtype 2·실제 pardisoinit 기본 controls(26 checker/34 zero-based 포함), 동일
|
||||
MKL/runtimeDLL hash는[recorded-probes metadata](../../.harness/performance/t2/recorded-probes-metadata.json)와
|
||||
[native 기록](../../.harness/performance/t2/recorded-probes-native.json)에있다.
|
||||
기존PARDISO/backend영역실패를실제baseline에서재현했으며vendor내부원인은미확정이다.
|
||||
[native 기록](../../.harness/performance/t2/recorded-probes-native.json)에 있다.
|
||||
기존 PARDISO/backend 영역의 실패를 실제 baseline에서 재현했지만 내부 원인은 미확정이다.
|
||||
[Intel release notes](https://www.intel.com/content/www/us/en/developer/articles/release-notes/onemkl/2026.html)의
|
||||
non-AVX2 PARDISO sporadic pivoting issue는조사근거이고현재원인확정이아니다.
|
||||
설치·dispatch·전역registry/pageheap변경은하지않았다.
|
||||
non-AVX2 PARDISO sporadic pivoting issue는 조사 근거이며 현재 원인을 확정하지 않는다.
|
||||
설치·dispatch·전역 registry/pageheap은 변경하지 않았다.
|
||||
|
||||
같은toy n=1 보조비용실행에서default8은11회뒤crash/0.24s,
|
||||
scope1은100회완료/0.15s였다. 이는동일입력준비/로그를포함한auxiliary이며
|
||||
실패/표본수차이가있어공식whole-model speedup이나시간목표판정에사용하지않는다.
|
||||
[Tiny native 비용기록](../../.harness/performance/t2/tiny-pardiso-cost-native.json)에실제범위를기록했다.
|
||||
같은 toy n=1 보조 실행에서 default 8-thread는 11회 뒤 crash/0.24초,
|
||||
scoped 1-thread는 100회 완료/0.15초였다. 입력 준비와 로그를 포함한 보조 자료이며,
|
||||
실패와 표본 수 차이가 있어 공식 모델의 개선 배수나 시간 목표 판정에 사용하지 않는다.
|
||||
[비용기록](../../.harness/performance/t2/tiny-pardiso-cost-native.json)에 실제 범위를 남겼다.
|
||||
|
||||
## 특수 정밀도 개선과 예외
|
||||
|
||||
|
||||
Reference in New Issue
Block a user