docs(performance): record integrated MKL and private precision boundaries
This commit is contained in:
@@ -328,3 +328,47 @@ entrywise MKL diagonal products와 기존 개별 product/ordered row-sum finite
|
|||||||
[final CMakeCache](../../.harness/performance/t2/final-CMakeCache.txt)는 actual dependency와 Debug flags를 보존한다.
|
[final CMakeCache](../../.harness/performance/t2/final-CMakeCache.txt)는 actual dependency와 Debug flags를 보존한다.
|
||||||
Whole changed-file clang-format dry-run은 기존 및 후보 formatting 위반으로 exit1이었다.
|
Whole changed-file clang-format dry-run은 기존 및 후보 formatting 위반으로 exit1이었다.
|
||||||
[실제 기록](../../.harness/performance/t2/clang-format-native.json)을 보존하며 formatter PASS로 보고하지 않는다.
|
[실제 기록](../../.harness/performance/t2/clang-format-native.json)을 보존하며 formatter PASS로 보고하지 않는다.
|
||||||
|
|
||||||
|
## 통합한 요소별 MKL 경계와 특수 정밀도 예외
|
||||||
|
|
||||||
|
Hex8의 `446d3fa`와 셸의 `0e5b3e0` 구현을 feature branch에 통합했다.
|
||||||
|
아래 목록은 해당 source의 적용·예외 경계이며, 통합 후 전체 build/reference 또는
|
||||||
|
세 모델의 최종 시간 합격을 뜻하지 않는다. 기존 T2 기록과 실패 자료는 유지한다.
|
||||||
|
|
||||||
|
| 위치 | 일반 행렬 연산의 MKL 경계 | 예외 또는 보존하는 순서 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `elements/hex8_element.cpp` | ordinary outer/Gram/geometric/mass 제품 | entrywise diagonal 제품 뒤 원래 row/point 누적 순서를 유지한다. |
|
||||||
|
| `elements/mitc4_shell.cpp` | 선형 BᵀCB와 좌표 congruence | 고정 3차원 좌표 계산은 기존 작은 좌표 예외다. |
|
||||||
|
| `elements/nonlinear_mitc4_shell.cpp` | Jet gradient outer의 private GEMM, physical Gram/congruence와 LAPACK inverse | 증명된 상수의 zero Hessian 작업만 생략하며 값·방향 미분·finite gate는 유지한다. |
|
||||||
|
| `elements/nonlinear_mitc4_inertia.cpp` | nodal Gram/scatter와 bilinear 제품 | 원래 local block 배치와 mass 의미를 유지한다. |
|
||||||
|
| `analysis/hht_dynamic_algebra.cpp` | local mass의 private LAPACK Cholesky/inverse, ordered mass projection과 graph metric 제품 | pivot/inverse 실패를 구분하고 compact diagonal 제품 뒤 원래 entry association과 합 순서를 유지한다. |
|
||||||
|
| `analysis/hht_reduced_operators.cpp` | constraint Hessian bilinear 제품과 algebra의 ordered metric 호출 | 원래 entry association과 합 순서를 유지한다. |
|
||||||
|
| `analysis/hht_dynamic_assembly.cpp` | hidden Hessian·방향 곱과 mass·가속도 제품 | uncancelled scale의 개별 product와 기존 finite/ordered gate를 유지한다. |
|
||||||
|
|
||||||
|
`hex8_high_low.cpp`, `hex8_pair_arithmetic.h`와 private
|
||||||
|
`hex8_pair_simd_avx2.cpp`의 material tangent packet은 정규화된 high+low 값의
|
||||||
|
특수 정밀도 연산이다. 일반 Float64 BLAS로 대체하면 low component, 정확한 tail
|
||||||
|
판정과 invalid propagation 계약을 잃으므로 MKL 예외로 유지한다. SIMD는 독립
|
||||||
|
column 네 개의 같은 pair graph만 실행한다. Vendor/ISA 타입은 public core에
|
||||||
|
노출하지 않고 baseline POD·dispatch·scalar bridge와 AVX2 TU를 분리한다.
|
||||||
|
지원 CPU/OS/FP control 밖에서는 기존 scalar pair 경로를 사용한다.
|
||||||
|
자세한 입력 guard·진단·ISA/bit 비교는 [Hex8 기록](hex8-performance.md)에 있다.
|
||||||
|
|
||||||
|
셸의 local dense BLAS scope는 기존 양의 caller TLS override를 존중하고 default
|
||||||
|
TLS에서만 1을 사용한 뒤 모든 종료 경로에서 원복한다. 재사용 판정용 private
|
||||||
|
getter도 같은 scope 안에서 BLAS 최대 thread 정책과 dynamic 정책을 읽고 원복한다.
|
||||||
|
이는 실제 worker 수 측정이나 global 정책 변경이 아니다. 일반 PARDISO와 기존
|
||||||
|
global thread 설정을 해당 getter로 바꾸지 않는다.
|
||||||
|
|
||||||
|
완성된 true trial의 constraint 자료 재사용은 새로운 행렬 backend가 아니다.
|
||||||
|
기존 전체 internal 평가와 inertia·ordered assembly gate가 성공한 뒤 네 response
|
||||||
|
field를 trial-owned storage로 이동하고, 동일한 finite 구성·identity·q/v·owner와
|
||||||
|
지원 FP/local BLAS 정책에서만 원래 소비 위치에 제공한다. 불일치하면 원래 full
|
||||||
|
평가를 수행한다. 외부 primitive와 후속 gate는 매번 수행하며 accepted history나
|
||||||
|
HDF5에 cache를 저장하지 않는다. 소유권·누락 key 수정·실제 검사와 미실행 범위는
|
||||||
|
[셸 기록](t4-shell-optimization.md)에 있다.
|
||||||
|
|
||||||
|
두 요소의 구현은 각각 독립 source 검토와 관련 실행 검사를 받았다. 현재 feature
|
||||||
|
통합 source 전체의 consumer 검사, 최종 VTune 비교, 원본 결과 비교와 시간 목표는
|
||||||
|
남아 있다. 별도 후보 `0b5adf4`의 vector guard/LBE screen은 이 통합 목록의 실제
|
||||||
|
실행 또는 성능 증거로 포함하지 않는다.
|
||||||
|
|||||||
Reference in New Issue
Block a user