docs(performance): retain inline codegen, profile identities and remaining costs
This commit is contained in:
@@ -365,6 +365,55 @@ identity가 전후 같았고 종료 후 관련 프로세스가 없음을 확인
|
||||
호출이 inline되었다는 증거로 확대하지 않는다. 이 후보도 100초 목표 미달이며,
|
||||
제한 시간에 중단된 이전 후보들과의 전체 시간 개선 비율을 계산하지 않는다.
|
||||
|
||||
## Inline 후보의 실제 codegen과 후속 profile
|
||||
|
||||
별도 승인으로 같은 binary의 software sampling 30초를 한 번 수집했다. Collector
|
||||
actual native 4와 outer wrapper 1을 유지한다. 기존 raw 자료만 함수·전체 callstack·
|
||||
summary로 export했고 세 report와 export wrapper는 모두 native 0이다. 이번에는
|
||||
collection과 export 각각의 metadata/native/before/after 파일을 분리했다.
|
||||
[Collection native](../../.harness/performance/t3/vtune-dynamic-inline-collection-native.json),
|
||||
[export native](../../.harness/performance/t3/vtune-dynamic-inline-export-native.json),
|
||||
[collection metadata](../../.harness/performance/t3/vtune-dynamic-inline-collection-metadata.json)를
|
||||
보존한다. Target native는 unknown이며 관련 owned PID는 모두 종료했다.
|
||||
|
||||
Source/input/header/exe/build/DLL/thread/power는 전후 같았다. 환경을 수집한 uv의
|
||||
임시 Python Scripts PATH 첫 entry만 달랐으며 나머지 entry는 같았다. 실제 profiler가
|
||||
상속한 parent PATH를 독립 필드로 저장하지 않았으므로 전체 runtime PATH equality는
|
||||
false라는 한계를 유지한다. [Identity 검사](../../.harness/performance/t3/vtune-dynamic-inline-collection-identity-checks.json)는
|
||||
이 차이를 포함하며 개발 profile을 공식 환경 합격으로 표시하지 않는다.
|
||||
|
||||
[Summary](../../.harness/performance/t3/vtune-dynamic-inline-summary.csv)는 elapsed
|
||||
29.871824초, CPU 222.433211초, effective 173.657543초, spin 43.736681초,
|
||||
overhead 5.038986초다. [함수 자료](../../.harness/performance/t3/vtune-dynamic-inline-functions.csv)의
|
||||
Multiply 12.163382초, TwoProduct 11.910763초, MultiplyPair 9.367977초가 남는다.
|
||||
TwoSum은 여러 inline 위치로 보고되어 다른 finite attribution의 같은 주소와
|
||||
별도 비용으로 합산하지 않는다.
|
||||
|
||||
Hex8 paired TU 하나만 read-only dumpbin symbols/disasm으로 확인했으며 두 명령과
|
||||
wrapper native는 0이다. [실제 codegen 명령](../../.harness/performance/t3/inline-codegen-native.json)과
|
||||
[disassembly](../../.harness/performance/t3/inline-codegen-disasm.txt)를 보존한다.
|
||||
이 TU의 direct call TwoSum/LowestBitExponent는 0개이며 TwoProduct 내부에 BSF와
|
||||
TwoSum 식이 펼쳐진 명령을 확인했다. 독립 COMDAT symbol은 남아 있으므로 전체
|
||||
binary의 모든 호출이 inline되었다고 주장하지 않는다. 이전 TU의 동일한 해시 object를
|
||||
별도로 보존하지 않아 정확한 function-byte 크기 변화는 비교하지 않았다.
|
||||
|
||||
TwoProduct에는 실제 `call fma`가 남는다. Profile의 UCRT fma self는 0.975742초,
|
||||
import thunk는 0.044582초이며 fma를 ancestor로 가진 다른 leaf 경로는 없었다.
|
||||
단독 hardware residual dispatch는 좁지만 현재 주 병목에 대한 영향 근거가 작아
|
||||
우선 후보로 선택하지 않았다. Scalar graph나 guard를 제거하는 대안으로 쓰지 않는다.
|
||||
|
||||
libiomp worker self 37.973383초 중 spin은 32.949078초다. Callstack은
|
||||
OpenMP worker→BaseThreadInitThunk→RtlUserThreadStart만 보인다.
|
||||
[FMA·spin 경로 자료](../../.harness/performance/t3/vtune-dynamic-inline-fma-spin-paths.json)는
|
||||
이를 보존한다. Global PARDISO 뒤 dormant worker인지, paired TBB와 실제 시간상
|
||||
겹친 resource 비용인지는 이 stack만으로 확정하지 못한다. Model을 작은 equation
|
||||
system으로 가정하거나 전역 PARDISO threshold/thread 정책을 바꾸지 않았다.
|
||||
|
||||
`geo*point.weight`의 동일 결과를 diagonal 세 곳에서 재사용하는 작은 후보는 원래
|
||||
식·누적 순서를 유지할 수 있는 별도 검토 사항으로만 남겼고 구현하지 않았다.
|
||||
후속 4-column 특수 pair packet도 아직 구현·검증 전이며 이 profile의 통과 결과로
|
||||
표시하지 않는다.
|
||||
|
||||
84개 실행과 추가 두 검사 실행은 서로 다른 검사 범위다. 이를 하나의 최종 전체
|
||||
검사 실행으로 표시하지 않는다. 최종 전체 Debug/CTest, Hex8 필수 원본 5개 비교,
|
||||
동적 101-frame 비교, 최종 VTune과 공식 단일 시간 측정은 아직 이 작업의 개발
|
||||
|
||||
Reference in New Issue
Block a user